How to reconcile Meta and GA4 sales, step by step
You will not make Meta and GA4 agree, but you can explain the gap. Use one week and one time zone. Split Meta's purchases by link click, engagement and view, check that GA4 files Meta clicks as Paid Social, and set both against Shopify orders.
By Joris van Huët, Founder & CEOUpdated 7 min read
You usually cannot make Meta and GA4 agree, but you can explain the gap. Line up the same dates, then split Meta's number into link clicks, engagements and views. Check that GA4 files Meta clicks as Paid Social, read GA4's credit rules, and compare both against your real orders in Shopify.
Step by step
- Pick one closed week and one time zone. Use a full week that ended a few days ago, so late data has settled. GA4 reports in the property's time zone, and Shopify's help center lists different reporting time zones as a cause of discrepancies. Path in GA4: Admin, then under Property, click Property details and read the Reporting time zone.
- Write down Meta's purchases and the rules behind them. Meta's API reference says its default attribution option means 7-day click and 1-day view. It also sets attribution per ad set, so one report can mix rules. Note the total, then the link-click purchases on their own where your report breaks them out.
- Check which day Meta dates a sale to. Meta's API reference shows two report times: the day of the ad impression or of the conversion. Seen on Sunday and bought on Monday can land in different weeks. Write down which one your Meta report uses before you compare anything.
- Find the Paid Social row in GA4. In GA4, select Reports from the left menu, then Acquisition > Traffic acquisition. Session default channel grouping is the report's default dimension, so Paid Social gets its own row. Note its sessions and key events for your week.
- Check the medium on Meta's clicks. In the same report, switch the dimension to Session source / medium and search for facebook or instagram. GA4 files a visit as Paid Social only when two things hold. The source is a social site, and the medium contains cp, equals ppc or retargeting, or starts with paid.
- Read GA4's credit rules. In GA4, go to Admin, select Events under Data display, then Attribution settings. Note the reporting attribution model, the channels that can receive credit and the key event lookback window. For purchases, the default lookback is 90 days.
- See where Paid Social sits in the paths. In GA4, open Advertising on the left, then Key event attribution paths under the Key events dropdown. The chart shows which channels open, assist and close key events, under paid and organic last click unless you switch models. If Paid Social opens paths that Email or Organic Search close, last click hands those sales away.
- Set both numbers against Shopify orders. Take the order count for the same week from your Shopify admin. Shopify's help center notes that Google can only count visitors with JavaScript and cookies activated, and that extensions can block it. If GA4 falls short of Shopify, every channel in GA4 is short, Meta's included.
A worked example
For illustration, here is one closed week with round, made-up numbers.
| For illustration, one week | Purchases |
|---|---|
| Orders in Shopify | 400 |
| Purchases in GA4, all channels | 340 |
| Purchases GA4 gives to Paid Social | 30 |
| Purchases Meta reports | 120 |
| of which link clicks | 70 |
| of which engage-through | 20 |
| of which views | 30 |
For illustration, start with Meta's 120 purchases. For illustration, the 20 engage-through and 30 view purchases can never appear in GA4. GA4 never sees a like or an ad view on Meta, so that part of the gap is permanent. For illustration, that leaves 70 link-click purchases against the 30 GA4 gives to Paid Social. Suppose step 7 shows Paid Social opening 25 paths that Email or Organic Search closed. For illustration, last click hands those 25 away, which leaves 15 to explain. Suppose GA4 also missed 60 of the 400 Shopify orders through blocked tracking. For illustration, some of those 15 sit in that missing 60, and step 5 finds the rest as untagged clicks.
Nothing in that example is broken. Each report applied its own rules to the same buyers, and the gap is the sum of those rules.
Now one store's real export, which holds shares of revenue, not purchases. That store's Channels sheet gives Paid Social 0.0% of revenue, whichever view you pick. A zero like that is what step 5 exists for: either no Meta buyers, or Meta buyers wearing the wrong tags. The export holds no Meta figures and no spend, so it cannot say which reading is true.
On the Journeys sheet, journeys of two or three touches take 12.5 days to buy. A Meta click that opened a journey that long would sit outside a 7-day click window, so Meta would not count the sale at all. GA4's 90-day lookback still could. Meta does not always report more; long journeys can flip the gap. Before you decide which side is inflating, check your own journey lengths: GA4's paths report shows days to key event and touchpoints to key event.
What to check when the report looks wrong
Meta's purchases beat Shopify's orders for the week. Go back to step 3 first. A report dated by impression can pull in purchases made the following week. If the dates line up and Meta still wins, it is counting more purchase events than your store had orders. Check the purchase event your store sends to Meta for duplicates before you read anything else.
GA4 shows no Paid Social at all. Check the medium on your ad links first. A medium of social, or no tags at all, files paid clicks under Organic Social.
Meta jumped while GA4 stayed flat. Look at the split. If the rise sits in views and engage-through, GA4 was never going to follow. If it sits in link clicks, check the paths report for buyers who came back through other channels.
GA4 gives Paid Social more than Meta reports. It can happen with long journeys. A click older than Meta's click window drops out of Meta, while GA4's lookback can still credit it. Compare your path lengths with the window.
GA4 falls well short of Shopify. That is a tracking gap, not a Meta problem. Blocked scripts, refused cookies and mismatched time zones all shave purchases off GA4.
This year's Meta clicks look lower than last year's. Meta's March 2026 change moved shares, saves and likes out of click-through and into engage-through. Compare totals with totals, or link clicks with link clicks.
What to do this week
- Tag every live Meta ad with a paid medium. Use a social source such as facebook and a medium that starts with paid. Pass: next week, those sessions show in GA4's Paid Social row. Fail: they still land in Organic Social, so some link is still untagged.
- Start a weekly gap log. Write down Shopify orders, GA4 purchases, GA4 Paid Social purchases and Meta's purchases split three ways. Pass: the gap holds steady from week to week. Fail: it swings, so find what changed that week, whether a setting, a tag or a campaign.
- Compare GA4's models for Paid Social. In GA4, open Advertising, then Attribution models under Attribution. Pass: Paid Social earns about the same under data-driven and last click. Fail: it earns far more under data-driven, which suggests Meta opens journeys that other channels close.
Check the homework. Your GA4 Attribution paths export already holds the evidence. Causality Engine reads that one file and shows what each channel caused next to what last-click gave it, in 1 to 2 minutes, for €99 once (excluding VAT), refundable within 30 days. Check the homework
Sources, 1 October 2026: Simplifying Ad Measurement for a Social-First World (Meta). Ad Account, Insights (Meta for Developers). Edit or delete accounts, properties and data streams (Google Analytics Help). Analytics discrepancies (Shopify Help Center). Traffic acquisition report (Google Analytics Help). Default channel group (Google Analytics Help). Select attribution settings (Google Analytics Help). Key events attribution paths report (Google Analytics Help). Get started with attribution (Google Analytics Help).
Related answers
Frequently asked questions
How big should the gap between Meta and GA4 be?
There is no fixed normal gap. It depends on how much of Meta's count comes from views and engagements. It also depends on your tagging, and on how often buyers return through other channels. Log it weekly, and investigate when it moves rather than when it exists.Which UTM medium should I use on Meta ads?
One that GA4's Paid Social rule accepts. The source must be a social site, and the medium must contain cp, equal ppc or retargeting, or start with paid. A medium of social files the click under Organic Social instead.Did Meta's March 2026 change affect the gap?
It changed what Meta calls a click. For website conversions, click-through now counts link clicks only, and shares, saves and other non-link actions sit under engage-through. Link-click purchases are the part GA4 can see, so compare those with GA4 rather than Meta's total.
Go deeper: Incrementality testing, explained.
Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.
Keep reading
Terms in this article
- Ad ImpressionAd Impression is a single instance of an advertisement displaying on a webpage. Impressions are a key input for models measuring the causal impact of ad exposure on user behavior.
- AttributionAttribution identifies user actions that contribute to a desired outcome and assigns value to each. It reveals which marketing touchpoints drive conversions.
- Attribution ModelAn Attribution Model defines how credit for conversions is assigned to marketing touchpoints. It dictates how marketing channels receive credit for sales.
- ConversionConversion is a specific, desired action a user takes in response to a marketing message, such as a purchase or a sign-up.
- Google AnalyticsGoogle Analytics is a web analytics service that tracks and reports website traffic.
- ImpressionAn Impression counts each time an ad or content displays on a user's screen. It measures exposure, not engagement.
- RetargetingRetargeting is online advertising that targets users who have previously interacted with your website or content. Attribution analysis shows the causal role of retargeting in driving conversions and improving ad spend.
- UTM ParametersUTM Parameters are URL tags marketers use to track campaign effectiveness across traffic sources. They provide data for accurate campaign tracking and attribution in analytics platforms.