Anastasiia Kyslenko · Digital Marketing · 6+ years, 120+ clients Your Meta Ads dashboard says 47 purchases.

Anastasiia Kyslenko · Digital Marketing · 6+ years, 120+ clients

Your Meta Ads dashboard says 47 purchases. GA4 shows 19. Your client — a UK fashion brand spending £8,000/month — is looking at you like you’ve been fabricating results.

You haven’t. The discrepancy between Meta Ads and GA4 is structural: two platforms using incompatible attribution models, different consent frameworks under UK GDPR and EU ePrivacy, and divergent responses to Apple’s App Tracking Transparency. As of May 2026, Meta’s default 7-day click / 1-day view attribution window means it credits conversions that happened days after the ad was seen — GA4’s session-based last-click model simply doesn’t see those.

Post-iOS 14.5, Meta estimates that advertisers lose 33–46% of observable signal, patched through Aggregated Event Measurement (AEM) and statistical modelling. Under UK GDPR consent requirements, GA4 Consent Mode v2 fills its own gaps with behavioural modelling — producing a different set of inferred conversions. This article gives you a six-step framework to quantify the gap, explain it to any client, and decide which number to trust for which decision.

Key takeaways

  • Meta’s default attribution (7-day click + 1-day view) counts conversions GA4 structurally cannot see. This is the single biggest cause of discrepancy.
  • As of May 2026, Meta models 33–46% of iOS conversions through AEM due to ATT signal loss — these are estimates, not measurements.
  • CAPI without correct event_id deduplication doubles every Meta conversion count. Check this first if your gap looks extreme.
  • Under UK GDPR and EU ePrivacy, GA4 Consent Mode v2 also models a portion of conversions — both platforms estimate, just for different gaps.
  • The answer is never “trust only one platform.” Cross-validate Meta + GA4 + CRM every time.

Why Meta Ads and GA4 Count Differently

The core problem is that Meta and GA4 are answering different questions. Meta asks: “Did someone exposed to my ad eventually convert?” GA4 asks: “What channel drove the session in which the conversion occurred?” Same conversion, entirely different attribution logic.

Attribution windows. As of May 2026, Meta’s default window is 7-day click + 1-day view. If a user clicks your ad on Monday and buys on Sunday, Meta claims that conversion. GA4 attributes the purchase to whichever channel brought the user to the site in their final session — which might be direct, branded search, or email.

View-through tracking. Meta counts a conversion when a user sees your ad (without clicking), then purchases within one day through any channel. GA4 has no mechanism for this. A user who saw your retargeting ad on Instagram, then typed your URL directly, then bought — appears in GA4 as a direct session with zero Meta attribution. In Meta, it’s a confirmed conversion. Both are technically correct.

Cross-device matching. Meta uses the Facebook login graph. If the same person sees your ad on their iPhone over lunch and completes the purchase on their laptop in the evening, Meta links those as one journey. GA4 uses Google Signals for cross-device matching, which requires the user to be signed into a Google account with ad personalisation enabled — a condition that fails frequently under UK GDPR consent requirements. That same cross-device journey may look like two separate users in GA4.

Here’s what a typical investigation looks like. An account spending £8K/month on Meta showed 47 purchases in Meta and 19 in GA4 for the same seven-day period. After stripping view-through conversions from Meta (accounting for roughly 14 of the 47), switching to click-only attribution, and cross-referencing with the Shopify order count, the actual picture was 31 confirmed purchases — GA4 was undercounting due to missing Consent Mode v2, and Meta was overcounting through undeduped CAPI events. This pattern repeats in most accounts I audit.

Parameter Meta Ads GA4
Default attribution window 7-day click + 1-day view Data-driven attribution (DDA) or last non-direct click fallback (session-scoped)
View-through tracking Yes (1-day default) No
Cross-device tracking Facebook login graph Google Signals (consent required)
iOS 14.5+ impact 33–46% signal loss, AEM modelling Minimal (on-site tracking unaffected)
Conversion modelling Aggregated Event Measurement Consent Mode v2 behavioural modelling
Deduplication event_id matching (CAPI + Pixel) Session-based automatic

The iOS 14.5+ Effect: What ATT Actually Broke

Apple’s App Tracking Transparency arrived in April 2021. As of May 2026, the effects are still reshaping how Meta measurement works — and the EU market is hit harder than most.

When a UK or German iOS user opens their iPhone and sees your Meta ad, Meta’s Pixel used to follow that user across apps and websites, watching for a purchase signal. ATT removed that ability for users who declined tracking. As of Q1 2026, Meta estimates 33–46% of iOS signals are now unobservable through standard Pixel tracking globally. In European markets, that number sits closer to 20–30% effective opt-in once you layer UK GDPR and EU ePrivacy consent requirements on top — meaning around 70–80% of your iOS audience is a tracking blind spot.

Meta’s response is Aggregated Event Measurement (AEM). Here is what it actually does:

  • Limits each domain to 8 prioritised conversion events (you rank them; lower-priority events may not be reported at all)
  • Applies statistical modelling to estimate conversions from users Meta cannot observe directly
  • Introduces a reporting delay of up to 72 hours for iOS data, because aggregation happens in batches

The critical thing to understand about AEM: the numbers it produces are probabilistic estimates. Meta is not lying when it shows you 40 iOS conversions — it is saying “based on observable iOS users, we estimate approximately 40 conversions from the full iOS population.” That estimate can be wrong, and it has no equivalent in GA4.

GA4, by contrast, tracks on-site behaviour via JavaScript. iOS ATT governs cross-app tracking, not first-party website analytics. A user who opted out of Meta tracking is still fully trackable by GA4 while they browse your site. This is why GA4 often represents a more conservative — and more accurate — picture of on-site conversion behaviour, while Meta’s iOS numbers reflect modelled extrapolation.

In practice, this manifests most clearly in accounts with high iOS traffic share. In German and UK markets, where GDPR consent rates run 55–65%, the effective ATT opt-in can drop to 20–30%. That means for more than half your iOS audience, Meta is estimating rather than measuring. When I see a persistent gap above 2x between Meta and GA4 lead form completions, the first thing I check is the iOS vs Android breakdown. If the iOS numbers look disproportionately smooth compared to Android, AEM modelling is filling large gaps — and those Meta iOS numbers should be treated as directional estimates, not actuals.

CAPI, Pixel, and the Deduplication Problem

Server-side tracking via Conversions API (CAPI) is the right setup for 2026. Without CAPI, Safari’s Intelligent Tracking Prevention, ad blockers, and ATT opt-outs collectively gut your Pixel signal. But running both Pixel and CAPI without correct deduplication creates a different problem: every conversion gets counted twice.

Here’s the mechanism. When a purchase happens, your browser fires the Meta Pixel (client-side). Simultaneously, your server sends a CAPI event to Meta (server-side). Meta receives two events for the same conversion. Without deduplication, it counts both — and your Meta reporting suddenly shows twice the conversions that actually happened.

Meta deduplicates using the event_id parameter. The rule is simple: your Pixel event and your CAPI event for the same conversion must send an identical event_id. When Meta sees two events with the same event_id from the same user, it merges them as one. When the IDs don’t match — or when event_id is absent entirely — it counts two.

Common ways this breaks in practice:

  • event_id is not included in the Pixel event at all (most common error)
  • The Pixel generates a random ID client-side; the server generates a different random ID — they never match
  • A Shopify store has the native Shopify Meta integration active and a custom CAPI integration — two server-side events with different IDs for the same purchase
  • event_id is present but formatted differently (integer vs. string) between Pixel and CAPI

To check your deduplication status: go to Meta Events Manager → Data Sources → select your Pixel → Diagnostics tab. Look at the Event Match Quality score (target: 6.0 or above). Look for the deduplication status under your CAPI connection. If you see “No deduplication” — you have found your problem.

A practical benchmark: if your Meta default conversions are more than 2x your GA4 conversions after already accounting for view-through and ATT modelling, deduplication failure is almost always the cause.

Six-Step Troubleshooting Framework

Run these in order. Each step eliminates one variable before you move to the next.

  1. Step 1: Align attribution windows before comparing anything.

    In Meta Ads Manager: Columns → Customise Columns → Attribution Setting → switch to “7-day click” (remove view-through). In GA4: Advertising → Attribution → Attribution Settings → confirm the model in use. You are eliminating the view-through variable before diagnosing further. After this step, Meta 1-day click conversions should be within 15–25% of GA4. If the gap is still above 40%, proceed.

  2. Step 2: Filter Meta to click-only and calculate view-through share.

    In Meta Ads Manager, add “View-through conversions” as a separate column. Calculate: Total Meta conversions − View-through conversions = click-attributed only. Compare this click-only number to GA4. Anything above 30% view-through share means Meta is crediting users who may have converted through other channels regardless of your ad.

  3. Step 3: Audit CAPI deduplication via Events Manager.

    Navigate to Meta Business Suite → Events Manager → your Pixel → Diagnostics tab. Check for duplicate events from browser and server sources. Confirm that event_id values are identical between Pixel and CAPI payloads for the same conversion event. Event Match Quality below 5.0 is a red flag — fix deduplication before any further analysis.

  4. Step 4: Compare iOS vs Android conversion rates in Meta.

    In Meta Ads Manager: Breakdown → Platform & Device → iOS vs Android. In GA4: Explore → Free Form → dimension: Operating System → metric: Conversions. Red flag: Meta shows disproportionately high iOS conversion rates relative to Android, and relative to your GA4 iOS numbers. This pattern means AEM modelling is filling large gaps. Treat those Meta iOS numbers as directional estimates rather than measurable results.

  5. Step 5: Check GA4 Consent Mode modelling percentage.

    In GA4: Admin → Data Settings → Data Collection → Consent Mode status. This must show “Active” — if it doesn’t, GA4 is not filling its own consent-driven tracking gap, and your GA4 numbers are understated, not just Meta overstated. For UK and EU sites as of 2026, typical consent acceptance rates run 65–75%, meaning 25–35% of your GA4 conversions may be modelled. Both platforms are estimating — just for different reasons.

  6. Step 6: Cross-validate with CRM or backend as ground truth.

    Pull actual confirmed purchases or leads from Shopify, WooCommerce, or your CRM for the same date range. This number is immune to attribution models, consent gaps, and statistical modelling — it reflects what actually happened in your business. Map: CRM actuals → GA4 conversions → Meta click-only conversions. A healthy ratio for B2C e-commerce as of 2026: CRM = 100%, GA4 = 85–95%, Meta click-only = 105–130%, Meta default = 140–200%. If Meta default exceeds CRM by more than 2x consistently, revisit Steps 2 and 3.

For more on getting the foundation right before reconciling platforms, read my guide on setting up GA4 and GTM for conversion tracking.

Save the Meta vs GA4 Reconciliation Checklist — it walks through the full audit in 20 minutes, no developer needed. Covers all six steps with exact navigation paths, benchmarks, and red flags.

Get the checklist on Telegram

Meta vs GA4 Reconciliation Checklist

PDF: six-step audit in 20 minutes, no developer needed. Exact navigation paths, benchmarks, and red flags for every step. Covers attribution windows, view-through, CAPI dedup, Consent Mode, and CRM cross-validation.

Get it on Telegram →

Common Mistakes When Comparing Meta and GA4

Comparing different date ranges. Meta AEM data for the last 72 hours is still incomplete due to aggregation delays. If you pull yesterday’s data and compare platforms, you are comparing Meta’s partially formed estimate against GA4’s more complete record. Always compare date windows that are at least 3 days in the past.

Treating all Meta conversions as equivalent. Meta reports click-through, view-through, and modelled conversions in a single total by default. These are not the same thing, and blending them into one number before analysis produces meaningless results.

Blaming Meta when the real problem is GA4. If Consent Mode v2 is not implemented, GA4 is silently undercounting. A 40% discrepancy where Meta shows more could mean Meta is overcounting — or it could mean GA4 is missing 40% of conversions. Check GA4 first before concluding Meta is wrong.

Optimising Meta campaigns using GA4 data. Meta’s bidding algorithm requires Meta-attributed conversion signals to learn. If you switch your optimisation target to GA4-tracked conversions (via GA4 import), you are teaching Meta to optimise on a different — and smaller — set of signals. ROAS typically drops 15–30% in the transition period. This is one of the Google Ads mistakes that waste budget I see regularly, applied to Meta.

Ignoring the CAPI dedup check entirely. Most marketers who set up CAPI assume it handles deduplication automatically. It does not. Deduplication requires explicit event_id matching between Pixel and CAPI. Without it, you may be running happily on doubled Meta conversion data for months.

Expecting a zero gap. Even after fixing every technical issue, a 15–25% residual gap between Meta and GA4 is normal as of 2026. This is the irreducible difference between two measurement systems with different scope, different modelling methods, and different attribution philosophies. If you have eliminated CAPI dedup failures, aligned windows, and removed view-through — and the gap is under 30% — your tracking is in good shape.

Frequently asked questions

Meta uses a broader attribution window (7-day click + 1-day view by default) and applies statistical modelling to recover signal lost from iOS users who declined ATT consent. GA4 attributes conversions within a single session only and does not track view-through events. As of May 2026, typical discrepancy ranges from 40–80% depending on iOS traffic share and Consent Mode configuration.

A view-through conversion is recorded when a user sees an ad, doesn’t click, but later visits the site and converts — within Meta’s default 1-day view window. GA4 has no mechanism to track ad impressions; it only tracks clicks and on-site sessions. This means view-through conversions appear in Meta but have no corresponding event in GA4.

Use the right tool for the right question. Trust Meta for in-platform campaign performance and bid optimisation — the Meta algorithm trains on Meta-reported conversions. Trust GA4 for cross-channel attribution, site behaviour, and funnel analysis. For budget ROI decisions and client reporting, benchmark both against CRM or backend order data as the actual source of truth.

Apple’s App Tracking Transparency (ATT), introduced April 2021, required user opt-in for cross-app tracking. Meta estimates 33–46% of iOS signals are now unobservable as of Q1 2026. Meta compensates via Aggregated Event Measurement (AEM) — a privacy-preserving modelling system. AEM outputs are probabilistic estimates, not measured conversions. In EU markets where GDPR further reduces ATT opt-in rates, the effective signal loss can reach 70–80% of iOS users.

Conversions API (CAPI) is a server-side integration that sends conversion events directly from your server to Meta, bypassing browser-based restrictions — Safari ITP, ad blockers, iOS consent limitations. Without CAPI, Meta Pixel alone undercounts conversions. As of 2026, CAPI is the baseline requirement for reliable Meta measurement; without it, the Meta vs GA4 gap widens further due to missing Pixel events, not just attribution differences. CAPI without event_id deduplication creates double-counting — so both the setup and the dedup configuration matter.

Six steps: (1) align attribution windows before comparing, (2) exclude view-through from Meta totals, (3) implement event_id deduplication across CAPI and Pixel, (4) enable and verify GA4 Consent Mode v2 (required under UK GDPR and EU ePrivacy), (5) check Meta Event Match Quality score (target 6.0 or above), (6) cross-reference CRM or backend order data as ground truth. A residual 15–25% gap after all fixes is considered normal industry baseline as of 2026.

If your Meta and GA4 numbers differ by more than 30%, something is almost certainly misconfigured. Message me — I’ll audit your tracking setup for free. I see this in the majority of accounts I review.

Message me on Telegram