The measurement audit for your online store: why don't the numbers in Meta and Google match your real sales?
The numbers in Meta, Google Ads and GA4 will never be identical to the orders in your store, but the gap must be explainable. When it isn't, you optimize campaigns on the wrong data: you switch off good ads and scale others that only look good. A hypothetical example, so you recognize the situation: last month the store recorded 90 orders, Meta reports 120 purchases, Google Ads 85 and GA4 60. Which number is right? None is wrong by definition, because each measures something different. The problem starts when you don't know why they differ. In this article you will find the most common causes, a 7-point audit, a mini-audit you can run in 30 minutes and a table of symptoms and likely causes. The sooner you do it, the better: every big campaign, such as Black Friday, rests on correct measurement.

The numbers in Meta, Google Ads and GA4 will never be identical to the orders in your store, but the gap must be explainable. When it isn't, you optimize campaigns on the wrong data: you switch off good ads and scale others that only look good.
A hypothetical example, so you recognize the situation: last month the store recorded 90 orders, Meta reports 120 purchases, Google Ads 85 and GA4 60. Which number is right? None is wrong by definition, because each measures something different. The problem starts when you don't know why they differ.
In this article you will find the most common causes, a 7-point audit, a mini-audit you can run in 30 minutes and a table of symptoms and likely causes. The sooner you do it, the better: every big campaign, such as Black Friday, rests on correct measurement.
Why the numbers don't match: four structural causes
Platforms don't measure the same thing, at the same moment or by the same rules. Four causes explain most of the differences:
-
The moment of recording. Google Ads records a conversion on the date of the click that led to the purchase, while GA4 records it on the date of the purchase (Lighthouse).
-
Different attribution windows and models. Meta uses a 7-day click and 1-day view window by default (same source), Google Ads typically uses a 30-day click window, and GA4 applies its own model: three models in the attribution reports, and direct visits get no credit unless the entire path was direct.
-
Consent and modeled data. When a visitor declines cookies, Google fills the gaps with modeling, and Google Ads can count modeled and view-through conversions that GA4 doesn't show (Dataslayer).
-
The store counts something else. Store orders include cancellations, returns and, with cash on delivery, orders refused at delivery, while platforms usually count the moment the order is placed.
The practical conclusion: store orders are the source of truth for revenue, and platforms serve optimization within themselves. The audit below doesn't look for identical numbers but for differences that are explainable and stable over time.
Points 1–2: events and values
1. The event inventory. The minimum list for an online store: product view (view_item), add to cart (add_to_cart), checkout start (begin_checkout) and purchase (purchase). Check each event in GA4 DebugView or Tag Assistant and in the “Test Events” tab of Meta Events Manager: does it fire once, at the right moment, on every device type? Note the missing events and those that appear for no reason, for example a purchase recorded on every reload of the thank-you page.
2. Correct values. The purchase event must contain a unique order identifier (transaction_id), the value (value), the currency (currency) and the products (items). Decide on a single rule for all platforms: does the value include VAT and shipping? Are discounts deducted? If the rules differ between GA4, Meta and Google Ads, the ROAS figures can't be compared.
Also decide how you handle cancellations and returns. GA4 has a dedicated event for refunds (refund), but with cash on delivery, refused orders usually stay in the reports as purchases.
Points 3–4: consent and duplicates
3. Consent Mode v2. Without Consent Mode v2, since March 2024 new users from the European Economic Area no longer enter audience lists and personalized ad features, and modeled measurement stops working for them (Cardinal Path). Check four things, following Google's recommendations:
-
you have set a default consent state, applied by region (if your policy requires denial by default, apply it only where the law requires it, so you don't lose precise measurement in the rest of the world);
-
Google tags load before the cookie banner appears;
-
the state updates as soon as the visitor chooses;
-
the visitor can accept or deny each storage type separately (advertising and analytics).
Then choose between basic and advanced implementation. In basic, Google tags are blocked until consent, so you get no behavioral modeling in GA4, and Google Ads conversions are modeled from a general model. In advanced, the tags load and send cookieless signals when consent is denied, and Google uses them for modeling. The choice also depends on your privacy policy, so discuss it with your data protection officer or a lawyer.
4. Duplicates. The most common duplication error is the combination of the Meta pixel and Conversions API without deduplication. Meta can merge a browser event with a server event in more than one way: through the same event_name + event_id pair (the most reliable method; the deduplication window is 48 hours, per the Meta documentation) or, when you have no event_id, through event_name together with fbp and/or external_id, sent identically from the browser and the server. Check in Events Manager whether events show up as deduplicated and whether every event, whatever its source, carries at least one of these identifiers: a browser event sent by a plugin or manual code without them stays a duplicate. Look for other sources of duplication too: two GTM containers, a store plugin plus manual code that both send the same purchase, or a thank-you page that loads twice.
Points 5–6: server-side measurement and UTM discipline
5. Server-side and Meta Conversions API. The browser loses data: ad blockers, browser restrictions, users who decline cookies. That is why Meta recommends the Conversions API alongside the pixel, with events sent directly from the server. Check in Events Manager that the purchase appears with both sources (browser and server), and monitor Event Match Quality. Matching parameters, for example a hashed email address or phone number, may be sent only if you have a legal basis and the necessary consent: server-side measurement does not replace consent.
6. UTM and referral exclusions. This is where attribution is lost most quietly. Check three things:
-
The payment processor. If payment happens on a processor's page and the customer then returns to your store, the processor must not show up as a traffic source. Add it to GA4's unwanted referrals list, otherwise the order may be credited to it instead of the ad that brought the customer.
-
Fixed UTM conventions. Use the same lowercase names for email, influencers and ads. Inconsistent tagging fragments your reports.
-
Auto-tagging. Keep it on in Google Ads and don't override it with manual parameters.
Point 7: attribution and reconciliation with real orders
GA4 offers three models in its attribution reports: data-driven, paid and organic last click, and Google paid channels last click. Direct visits get no credit unless the whole path was direct, and in the data-driven model conversions can be reattributed up to 7 days after they happened, so the numbers for the most recent days still change. Meta and Google Ads apply their own models and windows.
To avoid getting lost between them, set a hierarchy of sources of truth:
-
The store, with real orders, for revenue and order count.
-
GA4, for comparing channels.
-
The ad platforms, for optimization within each one.
Don't compare Meta's ROAS directly with Google Ads' ROAS. Track one more global metric: total store revenue divided by total ad spend (MER, or blended ROAS). It doesn't depend on attribution, so it stays comparable from month to month.
The 30-minute mini-audit
You don't need new tools, just a few exports and a spreadsheet.
-
Export store orders for the last 30 days: order number, date, value (using your own rule for VAT and shipping), status and payment method.
-
Export GA4 purchases for the same period, with transaction_id.
-
Compare order IDs, not just totals. See which orders are missing from GA4 and look for a pattern: a payment method, a browser, a device or a particular day. The pattern usually points to the cause, for example a thank-you page that doesn't load after an external payment.
-
Check Meta: the number of purchase events, the sources (browser and server), the deduplication status and the match quality in Events Manager.
-
Check Google Ads: which conversion action it optimizes on, with what attribution window, and whether it imports from GA4 or uses the Google tag.
-
Calculate two metrics: each platform's coverage against real orders (reported purchases ÷ orders) and MER.
-
Retest after fixes: place a test order with each payment method and check that it appears once in every report.
There is no “normal” gap that holds for every store. What matters is that the gap is explainable and stable from week to week; a sudden change often comes from a technical change: a new banner, an updated plugin or a modified checkout.
Symptom, likely cause, what to check
|
Symptom |
Likely cause |
What to check |
|
Meta reports more purchases than real orders |
Pixel and Conversions API without deduplication; view-through conversions; reloaded thank-you page |
Identical event_id and event_name on both sources; deduplication status in Events Manager; the attribution window |
|
GA4 reports far below real orders |
Tags blocked by consent (basic implementation) or by ad blockers; the thank-you page doesn't load after an external payment |
Consent state in Tag Assistant; the missing order IDs and their pattern |
|
Google Ads reports more than GA4 |
Modeled conversions; view-through conversions; different recording date (click date, not purchase date) |
The windows and model in Google Ads; view-through settings; the same calendar period in both reports |
|
Reported revenue differs from store revenue |
Different rules for VAT, shipping and discounts; cancellations and returns not accounted for |
The value parameter in the event; the refund event |
|
“Direct” or “referral” traffic rising, paid channels falling |
The payment processor showing as a source; missing or inconsistent UTMs |
The unwanted referrals list; UTM conventions |
|
Data drops suddenly after changing the cookie banner |
Default consent state misconfigured; tags loading after the banner |
Consent Mode in Tag Assistant; the loading order |
Conclusion
The numbers don't need to be identical, but they do need to be explainable. A measurement audit done before big campaigns costs less than a week of budget optimized on wrong data.
Want us to check your store's measurement together? At Prisma we implement server-side measurement, Meta Conversions API and Looker Studio dashboards, and we connect the data to your Meta and Google campaigns. Get in touch and we'll tell you where your data is getting lost.
Updated 12 October 2026. Platform settings and documentation change, so always check the current version.