GA4 Conversions Don't Match Google Ads: Here's Why and What to Do About It

GA4 says 50 conversions. Google Ads says 120. Both are technically correct, but for different reasons. This guide explains the systematic differences and how to reconcile them.

KISSmetrics Editorial

|12 min read

“Our GA4 says we had 312 conversions last month. Google Ads says 487. Which number do I put in the board deck?”

If you’ve ever pulled a conversion report from GA4 and then compared it to Google Ads, a common discrepancy, you know the sinking feeling. The numbers almost never match, and the gap can be anywhere from 10% to 60%. The discrepancy isn’t a bug. It’s a feature of two platforms that measure conversions in fundamentally different ways.

That framing is where most explanations stop, and it is not enough to act on. If the gap is structural, it has components with known signs, and you should be able to say which one is producing yours. If it is structural, it should also be stable, and it is not. And once those two things are settled, the original question still has to be answered, because a board deck holds one number.

The newsletter

Join our KISS newsletter

One short read a week on what actually moves revenue, in a free email. Read by 10,000+ operators and founders.

No spam. Unsubscribe in one click.

I.The two systems are not counting the same thing

Four independent mechanisms produce the gap, and each has a known direction. That is what makes the difference structured rather than noisy, and decomposable rather than mysterious.

A.Four mechanisms, four signs

The root difference is the question each platform is built to answer. Google Ads asks how many conversions its ads drove, and it is the system that spends money on the answer. GA4 asks how many conversions happened on the site and what contributed to them. Four specific mechanisms follow from that split.

Counting rule. A Google Ads conversion action is configured to count either one per click or every conversion. On the second setting, a user who clicks once and purchases three times inside the window produces three. GA4 counts each event, but reports it through an attribution model. One journey can be three in Ads and one in GA4, or the reverse, purely from configuration neither report displays.

Date of attribution. Google Ads books a conversion against the date of the click, not the date of the conversion. Click on 1 March and buy on 15 March, and Ads puts it in the first week while GA4 puts it in the third. This is the most overlooked of the four, and it is worth being precise about what it is: not an error but a re-indexing. Over a long enough period with steady volume the two align; over a seven-day report during a campaign ramp they cannot.

Unit of credit. Ads assigns whole conversions to the ad interaction. GA4’s data-driven model splits credit fractionally across touchpoints, so a conversion Ads counts as one may appear in GA4 as a fraction, with the remainder sitting under organic search and email. These are different units, and no configuration converts one into the other. Our note on first-touch and last-touch models covers what the choice does to a channel ranking.

Cross-device stitching. Ads can join a mobile click to a desktop purchase using Google’s own signed-in user data. GA4 can do this only as far as your identity resolution setup allows, so a property relying on device ID alone loses those conversions entirely rather than mis-crediting them.

One journey, counted by each ledger

Campaign performance view
What happenedGoogle AdsGA4A person-level record
Mar 1, ad click on mobileBooks the clickAnonymous sessionAnonymous session
Mar 6, organic search, desktopNot visibleSecond session, new device IDSame device, no link yet
Mar 15, purchase after email click1 conversion, dated Mar 10.4 conversion, dated Mar 151 order, dated Mar 15
Mar 22, second purchase1 more if set to "every"1 event, dated Mar 221 order, same person
Reported for Mar 1-71 conversion0 conversions0 orders
Illustrative, not measured. Every row is defensible and no two columns agree, which is the point: the disagreement is produced by definitions, so no amount of debugging removes it.

B.Which is why aligning the settings only closes part of it

The standard advice is to align windows, and it is worth doing. Google Ads defaults to a 30-day click-through window, one day for display view-through, and ten days for engaged-view on video. GA4 uses 30 days for acquisition conversions and 90 for the rest, so GA4 will credit an organic touch from 60 days ago that Ads has already forgotten. Setting the Ads click-through window to match removes one component of the gap.

It removes exactly one. The counting rule is a separate setting. The date index is a property of how each system files a conversion and no window changes it. And the unit mismatch is definitional: a fractional credit and a whole conversion are not the same kind of quantity, so matching windows makes them compare over the same period without making them comparable. Teams who align the settings and then find a 20% gap remaining usually conclude something is broken, and nothing is.

Decomposing your own gap is a matter of holding things still and varying one at a time. Fix a single conversion action and a period long enough that the date shift washes out, typically a full quarter. Compare totals. Then re-pull the Ads figure with the counting rule set to one per click and see how much of the difference that accounts for. Then compare the Ads number against the GA4 last-click attribution report rather than the data-driven one, which isolates the unit mismatch. What is left after those three is cross-device and modelling, and the second of those is the subject of the next part.

II.Modelling makes the gap move on its own

Consent handling turns the difference from a fixed offset into a quantity that drifts, and it drifts in the direction that widens rather than closes it.

A.What each platform does with a refusal

When a visitor denies analytics storage under Consent Mode v2, GA4 receives a cookieless ping rather than a full measurement hit, and Google fills the resulting hole with behavioural modelling. The modelling is volume-dependent: properties with low daily traffic often fail to qualify or produce poor model quality, and the recovered conversions typically account for only part of what was lost. Thresholding compounds it, since small segments are withheld from reports entirely, which is a separate mechanism from consent but lands on the same numbers. If your reports show suspiciously round zeroes in small breakdowns, the thresholding note applies.

Google Ads models denied conversions too, and this is where the asymmetry appears. It draws on a much larger signal pool, including cross-site signed-in behaviour and conversion patterns aggregated across advertisers, so it recovers more of what consent removed. Two systems modelling the same missing events with different amounts of evidence do not converge on the same estimate, and the one with more evidence recovers more. Consent does not shift both numbers down together; it pushes GA4 down further, so a privacy change that reduces measurement widens the gap.

Where a conversion goes when consent is denied

Funnels report view
Conversions that occurred
1,000100%
38% drop
Consent granted, measured directly
62062%
61% drop
Recovered by GA4 modelling
24024%
Reported by GA4 in total
86086%
Illustrative, not measured. The last bar is the only one you can see in the interface, and it is the sum of a measurement and an estimate with no marker separating them.

Consent rates themselves are not stable. They differ by country, by device, by browser, and by traffic source, with rejection much higher in markets where banners are enforced strictly. Any shift in your media mix therefore changes the share of your conversions that is modelled rather than measured, without anything about your tracking changing. A first-party data strategy is what reduces the exposure, and it reduces it rather than removing it.

B.So a reconciliation factor computed once is already wrong

The common response to a structural gap is to measure it and subtract it. Pull three months from both platforms, compute the average percentage difference, and treat that as a correction. The arithmetic is fine and the conclusion is not, because every input to that factor moves. Consent rates move with geography mix. The modelled share moves with traffic volume. The counting behaviour moves when a new campaign type with different conversion semantics enters the account. A factor derived from last quarter describes last quarter’s mix.

What survives is the delta as a series rather than as a constant. Report both numbers side by side every week with the percentage difference between them, and the difference stops being an embarrassment and becomes an instrument. Inside its usual band, the two systems are behaving as designed and nobody needs to discuss it. Outside the band, something changed, and the list of candidates is short: a tag deployment, a consent banner change, a new campaign type, a conversion action edited, or a broken conversion event. That is a far more valuable output than a corrected total, because it catches tracking failures that a single-platform report shows as a genuine performance drop.

Weekly gap between Ads and GA4 conversions

Activity report view
44% difference, latest week
W1W6W12
Illustrative, not measured. The band is the normal state and carries no information. The step at week 11 is what the chart exists for, and it is visible only because the delta is tracked as a series.

III.Which number goes in the deck

Neither platform is a general-purpose count, so the number is chosen per decision. The decision the board is actually asking about needs a third one.

A.Pick by decision, not by accuracy

For bid optimisation, use the Google Ads number, including where you believe it over-counts. The bidding algorithm optimises against its own conversion record, so feeding it a different definition produces incoherent behaviour rather than better behaviour. Accuracy is the wrong criterion here; consistency with the system taking the action is the right one.

For channel mix, use GA4, and read it as share rather than as total. It is the only one of the two that sees organic, referral, email and direct at all, so it is the only place a paid channel can be sized against the rest. The fractional credit that makes it useless as a total is the same property that makes the share meaningful.

For whether a campaign produced customers worth having, neither platform can help, because both stop at the conversion event. A conversion count says nothing about whether those accounts activated, renewed, or churned in month two, and that is the difference that decides whether the spend was good. Answering it needs a record keyed to a person rather than to a click, with revenue attached over time: Campaign Performance to hold the acquisition source, Cohorts to watch the acquired group past the attribution window, and Revenue to put an amount against it.

Google Ads
Bid optimisation
Consistency with the system spending the money beats accuracy.
GA4
Channel mix
The only view containing non-paid sources. Read as share, never as total.
Your own record
Revenue and the board deck
The only one that survives past the conversion event.
Three decisions, three correct answers. The mistake is not picking the wrong one, it is expecting a single number to serve all three.

B.What the third number costs

Adding a person-level record adds a third figure to the argument, and it comes with its own dependency. It counts what it can attach to a person, so its completeness is a function of identity coverage, which is the share of activity you can tie to a known profile. That number should be published next to it permanently, for the same reason GA4’s modelled share should be: a count is only as general as the population it covers.

The discipline that makes three numbers workable is deciding in advance which one owns which decision, and labelling every chart with its source and its counting rule. “Conversions” on an unlabelled axis is what starts the argument in the first place. Once the labels exist, a disagreement between two systems is information about the systems, not a dispute about competence, and the weekly delta becomes a monitoring input rather than a monthly reconciliation exercise nobody wants to own.

Verdict

Put your own recorded conversions in the board deck. Not GA4’s 312 and not Ads’ 487, but the count of the business event as your own systems recorded it, keyed to a person, with the revenue it produced next to it. It is the only figure of the three that is not partly an estimate, the only one that survives past the conversion moment, and the only one nobody in the room can dispute on methodological grounds, because the methodology is yours.

The other two keep their jobs elsewhere. Ads’ number belongs in the paid section, labelled as the bidder’s own accounting, because that is what it is and it is the right input for the bids. GA4 belongs in the channel mix slide as a share and should never be presented as a total, because a fractional credit summed across channels is not a count of anything. And publish the weekly delta between them somewhere unglamorous. Chasing agreement between two systems that were built to disagree is the least productive work in analytics; watching the disagreement for the week it changes shape is one of the cheapest tracking alarms you will ever build.

One analytics idea a week

Short, specific, written by the team building the product. No digest, no roundup.

Continue Reading

GA4Google Adsconversionsattributionconsent modereporting discrepancy
KISSmetrics

Build your business intelligence layer for free.

When two tools disagree, the tie-breaker has to own its own ingestion. KISSmetrics records the conversion itself and keeps the person behind it, which lets you trace one specific mismatch rather than argue about models.