Skip to content
Can Elmas

Attribution · 8 min read

Why GA4 and Your Ad Platforms Never Match (and Which Number to Trust)

TL;DR

They never match because each system counts differently. Ad platforms claim view-through, modeled and overlapping conversions over their own windows; GA4 misses blocked and opted-out users and splits credit across channels. Use store or CRM data for totals and budgets, platform data inside each platform, GA4 for channel trends, and reconcile monthly.

· Published · Updated

When Meta says 300 purchases, GA4 says 180 and Shopify says 240, none of them is necessarily wrong and none of them is “the” number: your store counts what happened, while GA4 and the ad platforms estimate what caused it, each with its own windows and blind spots. Here’s why they diverge, which number to use for which decision, and a monthly routine that keeps the gaps explainable.

Why the numbers will never match exactly

  • Your store (or your CRM in B2B) records every real order from every channel. It knows nothing about ads.
  • Ad platforms report conversions they can connect to their own ads, including ad views and modeled estimates.
  • GA4 records what its tag saw, from users it was allowed to track, then splits credit across channels.
Store or CRMAd platformsGA4
What it countsEvery real orderOrders linked to its own adsPurchases its tag recorded
Sees ad viewsNoYes, for its own adsNo for Meta and most others
CreditNoneFull credit to its own adsSplit across channels by model
Date usedOrder dateClick or impression date by defaultPurchase date
Main blind spotWhy people boughtOther channels and overlapOpted-out and blocked users

In the example, Meta’s 300 is higher than the store’s total of 240 orders. That’s the tell: platforms overlap. A customer who clicked a Meta ad, then a Google ad, then a Klaviyo email can be claimed by all three. GA4’s 180 sits below the store because some buyers were never visible to its tag.

The goal isn’t to make the numbers match. It’s to know why they differ and to notice when the gap changes.

Attribution windows and models

Every platform decides how long after an ad interaction a purchase still counts, and how to share credit between touches.

  • Meta uses 7-day click and 1-day view as its standard setting. Meta has refined which interactions qualify over time, so check the definition in your own account.
  • Google Ads sets a window per conversion action, commonly 30 days after a click and adjustable up to 90, with data-driven attribution as the default. Credit only moves between Google’s own ads.
  • GA4 attributes key events (its current name for conversions) across all channels, data-driven by default, with lookback windows set in Admin. The Traffic acquisition report uses session source instead of your model, so two GA4 reports can disagree about the same channel.

A simple example: a shopper clicks a Meta ad on Monday, then on Thursday clicks your Google brand ad and buys. Meta counts one purchase. Google Ads counts one. GA4 gives most or all of the credit to the Google visit, depending on the model. The store records one order.

Reporting dates shift the month

Meta reports conversions against the impression or click date by default, and Google Ads’ main Conversions column uses the click date. GA4 and your store use the purchase date. A click on March 29 that converts on April 3 lands in March for the platforms and April in GA4, and platform numbers for late March keep rising into April.

View-through and modeled conversions

These two are the main reason platform totals can exceed real orders.

View-through

A view-through conversion is a purchase by someone who saw an ad but didn’t click it. Meta’s 1-day view window can claim buyers who were already on their way, especially with heavy retargeting or strong existing demand. GA4 never sees Meta impressions, so these can’t appear there as Meta.

Google Ads keeps pure view-through conversions in a separate column, but engaged-view conversions from video ads can count in the main Conversions column. In Meta, use the compare attribution settings option to split click from view. If a large share of purchases are view-only, read that campaign’s ROAS with caution.

Modeled conversions

When a platform can’t observe a conversion, because of an iOS tracking opt-out, declined consent or a device switch, it estimates. Meta and Google Ads both include modeled conversions in reporting, and GA4 can apply behavioral modeling when consent mode runs in advanced mode and the property meets Google’s eligibility thresholds.

Modeled conversions are estimates, not orders. You won’t find them in your order export or reconcile them one by one.

This is why GA4 usually undercounts compared with your store.

  • Consent banners. Where consent is required, users who decline analytics cookies aren’t tracked normally. With consent mode in advanced mode, Google gets cookieless signals it can model from; in basic mode, nothing is sent before consent.
  • Ad blockers and privacy browsers. Many block the GA4 tag and Meta Pixel outright, so those purchases never reach either tool.
  • Cookie limits. Safari caps cookies set by client-side scripts at seven days, and shorter in some cases. A buyer who returns after that looks new, and the original source is lost.
  • Payment redirects. PayPal, 3-D Secure and buy-now-pay-later flows can send users back as a new referral. Add those domains to “List unwanted referrals” in your GA4 data stream settings.
  • Orders with no browser session. Subscription renewals, draft and phone orders, and some upsell apps create real orders that no pixel ever sees.

Server-side tagging, the Conversions API and enhanced conversions recover part of what’s lost. It narrows the gap; it doesn’t change attribution logic.

Timezone, currency and deduplication issues

These are the boring causes, and when I audit accounts they explain more of the gap than people expect.

Timezones

Your Meta ad account, Google Ads account, GA4 property and store each have a timezone. If the store runs on New York time and GA4 on UTC, every day and month boundary cuts differently. GA4’s timezone can be changed in Admin; ad account timezones are often hard or impossible to change after setup. Align what you can and write down the offsets.

Currency and revenue definitions

  • GA4 converts revenue to the property’s reporting currency using daily exchange rates. If the currency parameter is missing or wrong, revenue can be dropped or misstated.
  • Multi-currency stores need to send the currency the customer actually paid in.
  • Revenue means different things: GA4 purchase value may include tax and shipping, the store’s net sales deduct discounts and refunds, and ad platforms usually keep the original purchase after a return. Pick one definition and compare like with like.

Deduplication

  • Meta Pixel plus Conversions API sends the same purchase twice by design. Meta deduplicates when the event name and event ID match; if the ID is missing or different, purchases get counted twice. Check deduplication in Events Manager.
  • GA4 uses the transaction ID to deduplicate purchases. If the ID is blank or differs between tags, a thank-you page that fires on reload or two tags installed (theme code plus Tag Manager plus an app) can inflate purchases.
  • Google Ads double counts if you import the GA4 purchase key event and also run the Google Ads purchase tag, with both set as primary. Keep one primary purchase action.

Which number to use for which decision

No number is right for everything. Each is right for something.

DecisionNumber to useWhy
How much did we sell?Store or CRMThe only complete count
Raise or cut total ad budgetMER or blended CAC from store revenue and total spendImmune to attribution overlap
Which ad sets, creatives or audiences to scaleEach platform’s own reportingSame model across everything inside it; it’s also what the algorithm learns from
Keyword and campaign bidding in Google AdsGoogle Ads conversionsSmart Bidding uses them
Shift budget between channelsGA4 trends, confirmed by incrementality testsOne model across channels, then proof of causation
Landing pages and funnel drop-offGA4Built for on-site behavior

Meta’s numbers may be inflated, but they’re inflated consistently across your ad sets, so they’re fine for ranking one ad set against another. The expensive mistake is adding up every platform’s reported revenue and presenting it as marketing revenue. For budget-level decisions, MER vs ROAS explains why the blended number should lead.

For B2B lead gen, swap the store for your CRM: platform leads, GA4 form submissions and CRM contacts disagree the same way, so run budget decisions on CRM pipeline.

A monthly reconciliation routine

Keep a sheet with one row per month and fill it on a fixed day, such as the 10th, so late-reported conversions have mostly landed.

  1. Pull the numbers. Store orders and net revenue, GA4 purchases and revenue, each platform’s purchases, revenue and spend, all for the same dates.
  2. Calculate a capture rate. GA4 purchases divided by store orders.
  3. Calculate an overlap ratio. All platform-claimed purchases added up, divided by store orders.
  4. Split Meta click from view. Track the view-through share over time.
  5. Compare with your baseline. Use the trailing three to six months. Stable ratios mean the gaps are structural; a sudden move means something changed.
  6. Log changes. Consent banner updates, checkout edits, new apps, attribution setting changes and big promotions all move the ratios.

As an example with round numbers: if GA4 has captured roughly three of every four store orders for six months and suddenly shows one in two while store orders hold steady, demand didn’t fall. Something broke. Fix tracking before touching budgets.

Before closing the month, check:

  • Revenue compared on one definition and timezone offsets noted
  • Capture rate and overlap ratio within their normal ranges
  • Transaction IDs unique in GA4 and Meta deduplication working
  • One primary purchase action in Google Ads
  • Payment gateway domains excluded as referrals
  • Changes logged next to the numbers

This sheet is usually the first thing I build in a marketing attribution engagement. A team that can explain its gaps stops arguing about which dashboard is right and starts making decisions.

Get it built

If your numbers disagree and nobody can explain why, the Growth Audit is $1,500 fixed and credited if we continue, and it starts with tracking and attribution. See pricing or get in touch.

FAQ

Frequently Asked Questions

Should I shorten Meta's attribution setting so it matches GA4?

Usually not. The ad set's attribution setting also shapes what Meta optimizes toward, so shrinking it just to force a match can hurt delivery. Use the compare attribution settings option in Ads Manager reporting to see click-only results next to your default instead.

How big a gap between GA4 and my store is normal?

There's no universal number, because it depends on your consent banner, audience, browsers and setup. What matters is that your own ratio stays stable month to month; a sudden change points to a tracking break, not a change in demand.

Why does Google Ads show more conversions than GA4 for the same campaigns?

Google Ads gives its own ads full credit, dates conversions by the click, and can include modeled and engaged-view conversions. GA4 splits credit across every channel, dates purchases when they happen and misses users its tag never saw.

Will a third-party attribution tool fix the discrepancies?

It adds one consistent model across channels, which helps once you spend on several platforms, but it's still a model rather than ground truth. Check it against store totals and incrementality tests before moving budget based on it.

Work with me

Let’s find your biggest growth lever

Tell me about your growth challenge. I’ll tell you honestly if I can help — and if I can’t, who can.

  • ✓ No obligation
  • ✓ No sales script
  • ✓ Honest feedback
  • ✓ Clear next steps