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
- 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.
- One-directional flatline: GA4 key events go to zero while Ads keeps counting (or vice versa) — a fired-event or import break.
- 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
- Pick one conversion action and one week. Pull both numbers.
- Normalize the window and attribution model as far as each UI allows.
- If the normalized gap is under ~20% and stable, stop — it is methodology.
- 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.