All posts
6 min readgoogle-ads, ga4, attribution, reconciliation

Why your Google Ads conversions don't match GA4 (and how to reconcile them)

"Google Ads says 240 conversions, GA4 says 190 — which is right?" Both, sort of. The mismatch is expected; the SIZE of the gap tells you whether it's a methodology difference or a tracking bug.


"Google Ads says 240 conversions, GA4 says 190. Which one is right?" Both, sort of. The mismatch is expected — but the SIZE of the gap, and whether it moves, tells you whether you are looking at a methodology difference or a tracking bug.

Why the numbers never match exactly

  • Attribution model: Google Ads credits the conversion to the ad-click date; GA4 defaults to data-driven attribution across channels.
  • Attribution window: Ads counts within its conversion window (often 30–90 days); GA4 sessions expire far sooner.
  • Counting: Ads can count "every" or "one" conversion per click; GA4 key events count on their own rules.
  • Modeling: both platforms model unobserved conversions, but from different inputs.

A 10–25% gap from these factors alone is normal. The problem is when the gap is 50%+ or suddenly changes.

When the gap means a bug

  1. Sudden change: the gap sat at 15% for months, then jumped to 60% after a deploy. That is a broken tag, not a methodology shift.
  2. One-directional flatline: GA4 key events go to zero while Ads keeps counting (or vice versa) — a fired-event or import break.
  3. Consent misfire: EU conversions vanish after a CMP change — Consent Mode v2 is now denying by default.

⚠️ Warning: The most common real bug we see: the purchase event still fires in the browser, but the Google Ads conversion import or offline-conversion upload silently stops. Ads keeps reporting click-based estimates; GA4 shows the truth. The gap widens and no one notices for a month.

A reconciliation routine that actually works

  1. Pick one conversion action and one week. Pull both numbers.
  2. Normalize the window and attribution model as far as each UI allows.
  3. If the normalized gap is under ~20% and stable, stop — it is methodology.
  4. If it is large or moving, check: is the tag firing (run the free audit)? Is the import/upload healthy? Did a CMP or Consent Mode change land recently?

TagEasy's revenue reconciliation does this continuously — comparing what your store recorded against what the ad platforms received — and alerts when the gap moves, so "why are our numbers off?" becomes a notification instead of a quarterly surprise.

The mindset shift

Stop trying to make the two numbers equal — they never will be. Learn your normal gap, then watch for it to CHANGE. A stable 18% delta is health; a delta that jumps to 55% is an incident. Monitoring the delta is the whole game.


See where your tracking stands

Run the same 13-check audit referenced in this post against any URL. No signup, results in seconds.

Run a free audit