GA4 vs Meta vs Google Ads Numbers Not Matching? 10-Step Reconcile

By ·

Quick answer: GA4, Meta and Google Ads rarely match because each uses different attribution windows, counting rules, dates and data sources. To reconcile them, stop comparing them to each other. Compare each one to your own order or lead count for the same fixed date range and time zone, then check dates, windows, counting, deduplication, gclid and consent.

This is one of the most common questions in every analytics community: "Which number is right?" Usually each platform is correct under its own rules. What matters is the size of each gap and whether it changes. This guide gives you a 10-step method. Allow about an hour.

In this guide: Why they differ | 10 steps | Reconciliation sheet | FAQ

Why the numbers differ

DifferenceWhat happens
Attribution windowsEach platform looks back a different number of days, so each counts a different set of eligible conversions. Meta is commonly set to a short click and view window, Google Ads often uses a 30-day click window, and GA4 has its own settings. Check yours.
Attribution modelsGA4 usually splits credit across touchpoints. Ad platforms usually credit themselves. GA4 also lets you set attribution per key event, so two events in the same property can differ from Google Ads by different amounts.
Counting rulesGoogle Ads counts conversions per ad click (one or every). GA4 counts key events per session or by how events are configured.
Date basisGoogle Ads credits the click date. GA4 and your backend use the conversion date. A multi-day buying cycle splits one sale across two days.
Time zonesEach ad account has its own time zone. Orders near midnight can land on different dates.
View-through and modelingMeta can credit conversions where nobody clicked, and part of Meta and Google totals is estimated. These cannot be matched to individual orders.
Blockers and consentGA4 relies on cookies and tags that Safari, Firefox, ad blockers and consent denial can limit, so GA4 can undercount while ad platforms fill gaps with modeling.
Cross-deviceAd platforms use identity data to link a mobile click to a desktop purchase. GA4 needs extra signals, so those conversions can go unattributed.
Configuration errorsDuplicate events, double tags, stripped gclid, missing referral exclusions or a broken tag are the only true bugs. Check them last.

The 10-step method

Step 1: Pick your own data as the ruler

Choose one fixed date range, one time zone and one reference count from your backend, CRM or order system. Decide in advance what counts (paid, qualified, pending, cancelled). Without a ruler, you are comparing three opinions.

Step 2: Remove non-ad conversions

Subtract records no ad click can explain: admin and test orders, duplicates, offline or phone entries and subscription renewals. This often removes a large part of the apparent gap before you touch any platform.

Step 3: Wait for the numbers to settle

GA4 numbers can change for 24 to 72 hours after an event. Re-pull yesterday's figures today and note the change. Do final comparisons on data at least a few days old. See my GA4 events not showing checklist if data is missing, not just different.

Step 4: Align time zones and date basis

  1. Set the same time zone in GA4, Google Ads and your reporting where possible.
  2. In Google Ads, compare the data by click date and by conversion date, and compare both to your ruler.
  3. Compare identical date ranges every time.

Step 5: Record each platform's attribution settings

Write down, for Meta, Google Ads and GA4: the click window, the view-through window, and the attribution model. Note which part of each total is modeled. Do not compare platform totals until this table exists. Windows and defaults change, so read them from your own accounts, not from an old guide.

Step 6: Match the counting rules

In Google Ads, set the conversion count to One for leads and Every for purchases. Define GA4 key events to match the same outcome. Then check Primary and Secondary status, as explained in how to import GA4 key events into Google Ads.

Step 7: Check deduplication and double counting

  • Google Ads: if you import a GA4 key event and also run a native Google Ads tag for the same action, both set to Primary, the outcome is counted twice.
  • Meta: if the Pixel and Conversions API both send the same purchase, send the same event_id with each so Meta counts it once. See the Meta Pixel and CAPI fix.
  • GA4: confirm each conversion fires once in DebugView, and that thank-you pages do not count again on refresh.

Step 8: Protect gclid and fix UTMs

Keep Google Ads auto-tagging on. Remove redirects, landing page builders or tag setups that strip the gclid, because GA4 will then file paid clicks as organic or direct. Avoid manual UTMs on Google Ads links, since they can override gclid data in GA4 and misattribute sessions. Unexplained Direct or Unassigned traffic is covered in my GA4 Unassigned traffic guide.

Step 9: Check consent, blockers and match quality

  • Consent: check the share of consented sessions. If consent is broken or denied often, GA4 loses data first. See Consent Mode v2 in GTM.
  • Blockers: server-side tracking and enhanced conversions can recover some lost signal.
  • Match quality: check Meta event match quality and the share of Google Ads conversions that carry a gclid.
  • Cross-device: expect ad platforms to link more cross-device journeys than GA4 does.

Step 10: Test for delivery failure and track the gap

  1. If the gap appeared suddenly, place a test conversion and confirm it arrives in each platform. A sudden gap often means a site or tag release broke something.
  2. If the gap has always existed at a similar size, it is usually definitional (windows, models, modeling), not a bug.
  3. Set a tolerance for each platform, compare the same window weekly, and act on changes in the gap rather than its size.
  4. Write the date range and time zone on every report.

Reconciliation sheet (copy into a spreadsheet)

RowBackend / CRMGA4MetaGoogle Ads
Date range and time zoneSame for all columns
Count after removing non-ad recordsReference
Attribution window and modeln/a
Counting rulen/a
Modeled or view-through sharen/a
Difference vs reference (%)0%
Same gap last week (%)0%

The last two rows matter most. A stable gap is explained. A moving gap is a bug to investigate.

Frequently asked questions

Why does GA4 show fewer conversions than Meta or Google Ads?

GA4 depends on cookies and tags that blockers and privacy features can limit, and it counts and attributes differently. Ad platforms may use longer windows, view-through credit and modeled conversions, so they often report higher.

Which number is correct, GA4, Meta or Google Ads?

Each is usually correct under its own rules. Compare all of them against your own order or lead data for the same date range instead of against each other.

How much difference between GA4 and ad platforms is normal?

There is no fixed figure. A gap that has always existed at a similar size is usually definitional. Track the gap weekly and investigate sudden changes, which often point to a real tracking problem.

Why does Google Ads show conversions on a different date than GA4?

Google Ads credits a conversion to the date of the ad click, while GA4 uses the date the conversion happened. Different time zones can also move conversions across days.

Can importing GA4 conversions into Google Ads cause double counting?

Yes. If you import a GA4 key event and also run a native Google Ads tag for the same action, and both are set as Primary, the conversion is counted twice. Keep one Primary source per outcome.

Final thoughts

Do not chase one number across three platforms. Fix the ruler, align dates and settings, remove double counting, and then watch whether each gap stays stable. A stable gap is a definition. A changing gap is a problem worth fixing.

Have a mismatch you cannot explain? Share the three numbers and your settings in the comments and I will help you work through it.

GA
Gaurav Arora, Digital Media Lead. 10+ years running paid media and tracking for brands in the USA, UK and Canada.