← Blog

Digital Analytics

Why GA4 and ad platforms report different conversions

GA4, Google Ads, Meta, and TikTok count conversions by different rules. Align what you compare first, then look for missing, doubled, or broken events.

David PombarSwiss army knife at Trackingplan
10 min read · 2182 words

Short answer GA4 and your ad platforms count conversions by different rules: different attribution models and windows, different reporting dates, different counting settings, and, in some reports, modeled data. A gap between them is normal, even when the tracking works. Before you change a tag, check that you are comparing the same thing. Only then look for events that are missing, counted twice, or arriving broken.

The question is not “why don’t the numbers match?”. They are not supposed to. The question is whether the gap you see is the one the rules produce, or a bigger one that the tracking added.

Align these before you compare

Most discrepancy tickets close at this step. Put the two reports side by side and check each line.

CheckWhy it moves the total
The event or actionA GA4 key event, a Google Ads conversion action, a Meta Purchase, and a TikTok purchase event can be four different definitions of “purchase”
Period and time zoneA day ends at a different hour if the accounts use different time zones
Conversion date or interaction dateGoogle Ads dates a conversion by the ad interaction; GA4 by the day it happened
The columnGoogle Ads “Conversions” and “All conversions” are different counts
Attribution model and windowEach platform credits its own ads, within its own window
Counting methodOne conversion per click, or every conversion

The details, platform by platform, are below. Keep each platform’s rules with that platform: a field name, a window, or a deduplication rule from one does not carry over to another. For Google Ads alone, see why Google Ads conversions don’t match Analytics; for Meta, the Meta Ads vs GA4 conversion mismatch.

Cause 1: attribution, windows, and reporting dates

Each platform credits its own ads. Google Ads only reports conversions with Google Ads interactions from the same account, while other tools may credit other channels. GA4 credits the channels in its own reporting attribution model. Meta and TikTok credit their own ads within the windows set on each ad set or ad group. One purchase can therefore be claimed by three platforms and by one channel in GA4.

The windows differ.

The dates differ. Google Ads reports a conversion on the date of the click or impression that led to it; Google Analytics on the day it happened. A purchase on Monday after a click the Friday before lands in different weeks. Google suggests the “Conversions (by conv. time)” columns to align closer with Analytics.

The latest days are not final. Google Ads conversion data can take up to 7 days to fully appear after significant changes, and Analytics key events are imported into Google Ads up to 24 hours after they occur. Compare closed periods, not this morning.

The columns differ. In Google Ads, a conversion action counts “One” or “Every” conversion per interaction, and “All conversions” adds secondary actions and view-through conversions. View-through conversions are not in the Conversions column by default.

When a visitor declines, the tags send less, or nothing. That gap is the consent working, and it has to be respected. Never try to work around it to recover conversions.

Some platforms fill part of that gap with models, and each one models something different:

So one report may show observed conversions and another a blend of observed and modeled ones. Neither is wrong. They answer different questions.

Cause 3: browser and server events, counted once or twice

Many setups send the same purchase twice on purpose: once from the browser and once from the server. The platform is supposed to keep one. It only can if both copies carry the right keys.

If the server sends an event_id the browser never sent, or a new one on every retry, the platform counts two purchases and reports both. GA4, receiving one copy, counts one. That gap is a defect, not attribution. We covered the Meta side in more depth in CAPI deduplication issues.

Cause 4: values, currency, order IDs, and event names

A gap in revenue is not always a gap in conversions.

Cause 5: click IDs, UTMs, and redirects

Attribution needs the context of the click to survive until the conversion. It often doesn’t.

A diagnostic sequence

Work from definitions to hits, in this order. Each step rules out a cause before you touch anything.

  1. Compare definitions. Fill the alignment table above for the two reports. Re-run both with the same dates, time zone, column, and, where you can, the same window. Many gaps shrink to their expected size here.
  2. Reconcile against the backend or CRM. List the orders or qualified leads for the period with their order IDs. The backend tells you what happened; it does not tell you which ad deserves the credit. Use it to see which of the two reports is closer to reality on the count, not to settle attribution.
  3. Check that each event reached each destination. For a sample of orders, check whether the purchase hit left the browser or the server and reached GA4, the Pixel, the Conversions API, and the other platforms. Google points to the conversion tracking status troubleshooter and Tag Assistant for its side; each ad platform has its own event testing tools.
  4. Inspect what each hit carried. Consent state, event_id, order ID, value, currency, click IDs, and the timestamp. Compare the same order across destinations.
  5. Look at what changed, and when. A gap that jumps on a specific day usually has a release, a GTM container version, a CMP update, or a new server-side setup behind it. Line up the date of the jump with the changes made around it.

Illustrative example Meta reports 1,180 purchases for a week; GA4 reports 1,050; the backend has 1,090 orders. Meta’s ad sets count 1-day view-through conversions, which GA4 does not, and some visitors declined analytics cookies. That can explain a gap of this size, and nothing needs fixing. If the same week also showed Meta conversions with two server events per order ID since a release, part of the gap would be a defect, and that part would need a fix.

Expected difference, signal defect, or still open

Classify the case before you act. Most of the time, the first answer means you don’t touch the tags.

Expected reporting difference. The gap disappears or shrinks to a stable size once definitions are aligned. The backend count is consistent with what each platform’s rules would produce. The gap has not moved since the last comparison. Document the definitions, label the reports, and leave the tags alone.

Signal quality defect. One or more of these is true: orders in the backend have no hit in a destination; one order produces two conversions with different or missing event_id; values or currencies differ for the same order; click IDs or UTMs are missing on paid landings; the gap jumped on a date that matches a change. Fix the implementation, then check that the next orders arrive correctly.

Unresolved. The evidence is not enough. You cannot see what a platform received, the gap sits inside modeled data, or consent limits what you can observe. Say so, record what you ruled out, and keep watching the trend. A stable unexplained gap is a reporting caveat; a growing one is worth escalating.

Where Trackingplan fits

Trackingplan does not unify attribution models, and it does not make platform numbers match. A conversion in an ad platform stays that platform’s definition. What it does is show you the signal behind each number, so you can tell which kind of gap you have.

It watches the hits your site, apps, and server send to analytics and ad platforms, on real traffic, and compares Pixel, CAPI, and GA4 for the same purchase: whether it is counted once, with the same value, on every platform. It also reads the dataLayer, so it can follow a payload from the dataLayer to each destination and tell you whether a gap starts in the data your site exposes or in one tag.

Ask the agent “Why is Meta showing more purchases than GA4 this week?” and it compares both counts for the same period, finds the cause, and tells you which tag, trigger, or variable is behind it. Ask how to fix it and it tells you what to change, in GTM or wherever the change belongs. Connect your ad accounts and it also compares spend and platform-reported conversions with what your site sent. It only observes the data you already send; it never works around consent.

The gap between GA4 and your ad platforms will not close, and it doesn’t have to. What matters is knowing which part of it the rules explain, and which part your tracking added.

Frequently asked questions

Should GA4 and my ad platforms ever show the same number of conversions?

Rarely, and it is not the goal. Each platform credits conversions to its own ads, inside its own attribution windows, on its own reporting dates. Aim for a gap you can explain and that stays stable, not for identical totals.

Which number should I report?

It depends on the decision. Use the ad platform’s numbers to compare campaigns inside that platform, GA4 to compare channels under one model, and the backend or CRM to confirm how many orders or leads actually happened. Label each number with its source and definition.

Not by tracking people who declined. Consent has to be respected. What you can do is check that the consent signal reaches every tag correctly, and read the modeled data each platform documents as an estimate, not as observed conversions.

David PombarSwiss army knife at Trackingplan

Read more from David, a Senior Product Strategist with 18+ years in digital product development and an atypical error detection knack.

Read next

All Blog →

Trackingplan

See everything. Miss nothing.

Your implementations audited around the clock with real-time, real-user data. Real-time alerts about errors or changes in your data, campaigns, pixels, privacy and consent. Let AI flag issues before they cost you.