Omesta blogGA4 vs Meta Ads Manager: why your numbers never match
GA4 and Meta Ads Manager will always report different conversion counts for the same campaign because they track users through different mechanisms, apply different attribution models, use different session windows, and sample data at different thresholds. The gap between the two platforms typically runs 15-40% for most DTC brands, and understanding the four structural reasons for the mismatch lets you decide which number to trust for which decision.
GA4 vs Meta Ads Manager: the four reasons numbers diverge
GA4 and Meta Ads Manager are solving related but distinct problems. GA4 answers "what did users do on my site after they arrived?" Meta answers "which ads drove revenue, and how should I bid tomorrow?" Those questions share a lot of surface area — both count conversions, both segment by traffic source, both try to assign credit to marketing channels — but the instrumentation underneath produces different answers even when pointed at the same customer behavior.
The mismatch comes from four structural differences: attribution window length, attribution model (last-click vs data-driven vs view-through), how each platform groups and labels traffic sources, and whether the platform samples your data before reporting. A conversion that happens eight days after a Meta ad click will appear in Meta's 7-day-click report as attributed, but GA4's default last-click model may credit organic search if the customer Googled your brand on day seven. Neither platform is lying; they're measuring different things.
Attribution window differences
The attribution window is the maximum number of days between an ad interaction and a conversion that the platform will still count as attributed. Meta's default attribution window for most accounts post-iOS-14.5 is 7 days click and 1 day view. GA4's default attribution window is 90 days for all traffic sources, but the attribution *model* GA4 uses — data-driven or last-click depending on your property settings — decides which touchpoint in that 90-day window gets the credit.
A customer clicks your Meta ad on January 1, comes back via Google organic search on January 5, and buys on January 6. Meta counts that conversion under its 7-day-click window and credits the ad. GA4's last-click model credits Google organic because that was the last session before conversion. GA4's data-driven model might split credit between Meta and organic, or it might give Meta 80% and organic 20% depending on how often that sequence converts in your historical data. All three numbers — Meta 100%, GA4 last-click 0%, GA4 data-driven 80% — can be simultaneously correct under their respective definitions.
The documented median attribution gap between Meta and GA4 for brands running both is 22%, according to Google's GA4 attribution methodology white paper. The gap widens to 35-45% for brands selling high-consideration products where the purchase cycle runs longer than seven days, because Meta's shorter window misses late conversions that GA4 still captures.
Attribution model: last-click vs data-driven vs view-through
GA4 offers three attribution models in the UI: last-click, data-driven (default for properties with sufficient conversion volume), and Google Ads-preferred. Meta uses a proprietary model that blends click-through attribution, view-through attribution, and statistical modeling to fill gaps where user identifiers were lost. The models produce different answers because they're optimizing for different goals.
Last-click attribution gives 100% credit to the final traffic source before conversion. If a user clicked a Meta ad, clicked a Google ad, then purchased, Google gets the conversion and Meta gets zero. Data-driven attribution uses machine learning to assign fractional credit across all touchpoints in the 90-day window based on which sequences historically convert at higher rates. View-through attribution — which Meta includes by default for up to 1 day — credits an ad impression even if the user never clicked, as long as they converted within the view window.
View-through conversions are the single largest source of GA4 vs Meta mismatch. Meta counts them; GA4 does not unless you manually import Meta's view-through events via the Measurement Protocol. A customer scrolls past your Meta ad on Monday, Googles your brand on Tuesday, and buys on Wednesday. Meta credits the ad under 1-day view-through. GA4 credits Google organic under last-click. The conversion happened once; two platforms counted it in two places.
Data-driven attribution in GA4 typically assigns 50-70% of the credit that last-click would give to paid channels, because it reallocates some credit to earlier-funnel touchpoints like organic social and direct traffic. If you compare GA4 data-driven conversions to Meta's reported conversions, expect Meta's number to run 10-25% higher, because Meta does not dilute credit across non-Meta touchpoints.
How channel grouping and UTM parameters create phantom discrepancies
GA4 groups traffic into default channels — Direct, Organic Search, Paid Search, Organic Social, Paid Social, Email, Affiliates, Display, and Referral — using a rules-based classifier that reads utm_source, utm_medium, utm_campaign, and referrer headers. Meta has no concept of default channels; it only knows campaigns, ad sets, and ads within its own platform. When you compare "Paid Social" conversions in GA4 to Meta's total conversions, you're comparing a GA4-defined bucket to a Meta-defined bucket, and the two rarely align.
A common failure mode: your team runs Meta ads but forgets to tag some placements with UTM parameters. Those clicks reach your site with a Facebook referrer header but no utm_medium=paid. GA4's default channel grouping classifies them as Organic Social instead of Paid Social. GA4 reports 80 Paid Social conversions; Meta reports 120. The 40-conversion gap is not a tracking loss — it's a labeling mismatch. The conversions exist in GA4 under the wrong channel.
UTM parameter hygiene matters more for GA4 than for Meta because GA4 has no native knowledge of which traffic came from an ad vs an organic post. Meta knows because the click originated inside its ad platform. If you want GA4 and Meta to agree, every Meta ad must carry utm_source=facebook (or instagram), utm_medium=paid, and a campaign name that matches Meta's campaign naming. Even with perfect UTM tagging, GA4 will still classify some traffic differently — iOS users who tap an ad in the Facebook in-app browser sometimes lose the referrer header, so GA4 sees them as Direct traffic.
Cross-domain tracking also creates phantom gaps. If your checkout lives on a separate domain and you did not configure cross-domain measurement in GA4, users who click a Meta ad and land on yourstore.com will start a new session when they move to checkout.yourstore.com. GA4 will credit the conversion to Direct instead of Paid Social because it lost the original source. Meta still counts it because the Meta Pixel or Conversions API fires from the checkout domain and carries the original fbclid parameter. Meta CAPI vs Pixel server-side tracking explains how server-side conversion events bypass this entire class of cross-domain loss.
What is the role of sampling and session thresholds?
GA4 applies sampling to reports that query more than 10 million events in the selected date range for standard properties, or 1 billion events for GA4 360 properties. When sampling kicks in, GA4 analyzes a statistical subset of your data and extrapolates the results. The green "sampling" badge appears in the top-right of the report UI. Meta does not sample conversion data in Ads Manager — every attributed conversion appears in the report, though Meta does model conversions for users it could not directly match due to iOS 14.5 signal loss.
Sampling typically shifts reported conversion counts by 2-8%, which is smaller than the attribution window and model differences but still material at scale. A brand running €500,000/month in Meta spend with 5,000 monthly conversions might see GA4 report 4,850 conversions in a sampled report vs 5,000 in an unsampled export. The error is random, not directional, but it compounds when you compare month-over-month growth between GA4 and Meta — one platform's 8% growth might be the other's 3% purely due to sampling noise.
Session timeout thresholds also matter. GA4 ends a session after 30 minutes of inactivity by default; you can configure this to any value between 5 minutes and 4 hours. Meta has no concept of sessions — it tracks events and attributes them back to ad interactions. If a user clicks a Meta ad, browses for 25 minutes, pauses for 35 minutes, then returns and buys, GA4 counts that as two sessions: the first session is attributed to Paid Social, the second session (where the purchase happened) is attributed to Direct if the user came back by typing your URL. Meta attributes the entire sequence to the ad because the purchase fell within its 7-day click window. GA4 shows one Paid Social session with no conversion and one Direct session with a conversion; Meta shows one attributed conversion. Same customer, same purchase, two reporting realities.
Worked example: a €10,000 campaign with a 25% reporting gap
You spend €10,000 on Meta ads in March. Meta Ads Manager reports 150 purchases attributed to the campaign. GA4 reports 112 purchases in the Paid Social channel with utm_source=facebook. The 25% gap — 38 conversions — breaks down into four pieces.
Attribution window (12 conversions). Your product has a 10-day median purchase cycle. Twelve customers clicked the ad between March 1-5, researched your product, and purchased between March 10-14 — outside Meta's 7-day click window but well inside GA4's 90-day window. Meta does not count them; GA4 does. This piece favors GA4.
View-through conversions (18 conversions). Eighteen customers saw your ad in their Instagram feed, did not click, Googled your brand within 24 hours, and purchased. Meta counts them under 1-day view-through attribution. GA4 credits Google organic because there was no click and you did not import Meta's view-through events. This piece favors Meta and is the largest single contributor to the gap.
UTM tagging gaps (5 conversions). Five conversions came from a Stories placement you launched mid-month and forgot to tag with UTM parameters. GA4 classified them as Organic Social instead of Paid Social. They exist in GA4's data but are not in the Paid Social bucket you're comparing. This piece is a labeling error, not a tracking loss.
Cross-domain and session timeouts (3 conversions). Three conversions happened after a session timeout or a cross-domain hop that broke the attribution chain in GA4. Meta still attributed them because the fbclid parameter persisted and the Conversions API fired from your backend. This piece favors Meta.
Sum: Meta reports 150. GA4 reports 112 in Paid Social but actually tracked 117 (112 + 5 in the wrong bucket). The real tracked gap is 33 conversions (150 - 117), composed of +12 for GA4's longer window, +18 for Meta's view-through, +3 for Meta's persistence. The directional takeaway: Meta's number is inflated by view-through attribution that GA4 does not recognize, but GA4's longer window recovers some late conversions Meta missed.
Which number should you trust for budget decisions?
Neither GA4 nor Meta is the single source of truth. Use Meta's attribution data to optimize Meta campaigns — bid adjustments, audience expansion, creative testing — because Meta's bidding algorithm consumes the same attribution signal you see in Ads Manager. Use GA4 to compare Meta's performance against other channels and to measure on-site behavior after the click. Use your Stripe or Shopify revenue dashboard to reconcile total revenue against the sum of what all platforms claim to have driven.
The gap between attributed revenue (Meta + Google + TikTok + email) and actual revenue is your dark funnel — conversions that happened but cannot be tied to a specific ad. For most DTC brands that gap runs 20-40% of total revenue, which means 60-80% of your revenue is attributable through some combination of GA4, Meta, and your other platforms. If attributed revenue exceeds actual revenue, you have an over-attribution problem caused by overlapping view-through windows or broken deduplication. True ROAS vs reported ROAS walks through how to reconcile platform-reported Return on Ad Spend against cash revenue and build a blended efficiency target.
The most reliable cross-platform metric is Marketing Efficiency Ratio (MER): total revenue divided by total ad spend, regardless of attribution. MER does not care whether GA4 or Meta gets credit for a conversion; it only cares whether the money you spent produced more money than it cost. Track MER weekly, use platform attribution to allocate budget across channels, and use GA4's longer window to catch attribution leaks that shorter-window platforms miss.
Frequently asked questions
Why does Meta report more conversions than GA4?
Meta reports more conversions than GA4 in most cases because Meta includes view-through conversions (users who saw but did not click your ad) and uses probabilistic modeling to recover conversions lost to iOS 14.5 tracking restrictions. GA4 does not count view-through conversions by default and relies entirely on observable click-through behavior. The gap typically runs 15-30% for DTC brands, with Meta's number higher.
Can I make GA4 and Meta Ads Manager match exactly?
No. The two platforms use different attribution windows, different models, and different data collection methods, so some divergence is structural and unfixable. You can narrow the gap to under 10% by ensuring every Meta ad carries correct UTM parameters, configuring GA4's attribution window to 7 days to match Meta's, importing Meta view-through conversions via the Measurement Protocol, and fixing cross-domain tracking. Perfect alignment is neither possible nor necessary for effective budget decisions.
Does GA4 sampling explain why my numbers are off?
GA4 sampling contributes 2-8% variance in high-traffic properties but is rarely the primary cause of GA4 vs Meta mismatch. Attribution window and view-through conversion differences are larger factors. You can tell if sampling is active by checking for the green "sampling" badge in the top-right of your GA4 report. If the badge is absent, your report is unsampled and the mismatch comes from attribution methodology, not data completeness.
Should I optimize Meta campaigns using GA4 conversion data or Meta's data?
Optimize Meta campaigns using Meta's reported conversion data, because Meta's bidding algorithm only sees conversions reported through the Pixel and Conversions API — it cannot access GA4 data. If you feed GA4 conversions back into Meta via offline conversions, align the attribution window and deduplication logic to avoid double-counting. Use GA4 to compare Meta's efficiency against other channels and to audit whether Meta's attributed conversions correspond to real on-site behavior, but let Meta's native attribution drive bid and budget decisions within the platform.
Run a leak scan on your own stack
Attribution mismatch is one of 147 leak patterns Omesta scans when you connect your Stripe and Shopify accounts. Most DTC brands lose 15-30% of attributed revenue to tracking gaps, failed payments, and dunning flows that fire too late. The median Omesta customer recovers €2,340/month within 60 days, and 72% of that comes from fixing involuntary churn that GA4 and Meta never see because the purchase attempt failed before either platform recorded it. Start the leak scan — free until we recover $1,000 for you.