The Velo journal

Why Google Ads and GA4 report different conversion numbers

Debugging·28 July 2026·The Velo team

Google Ads and GA4 report different conversion numbers because they are not counting the same thing. Ads counts conversions its own clicks contributed to and dates them to the click; GA4 counts across every channel and dates them to the conversion. Part of that gap is structural and will never close. The rest is signal lost at the banner.

They are answering two different questions

A gap is the expected outcome, not evidence of a fault. Google Ads answers a narrow question: did my advertising play a part in this conversion? GA4 answers a broad one: what was the whole journey, and how should credit be shared along it? Two honest answers to different questions will not produce one number.

Three mechanics follow from that, and between them they account for most of a stable gap. Google Ads dates a conversion to the click that led to it, so a sale today can land on a report from two weeks ago, while GA4 dates it to the moment it happened. The two also resolve journeys across devices differently, each from the identity data it holds. And there are conversion types the two count on different terms, view through conversions among them, which Google Ads reports in its own column rather than alongside the rest.

None of that is broken, and little of it is closable. If you have been trying to make the two numbers meet exactly, that is the part to stop working on.

The half of the gap that is actually yours

Underneath the structural difference sits a second gap that behaves completely differently, and it is the one worth your attention: conversions neither platform counted properly because the consent state was missing or wrong when the tag fired.

This is not the same as a visitor declining. A decline is a decision you have to respect, and Consent Mode exists so that a declined visitor still leaves a signal behind that can be modelled from, provided you send enough traffic for modelling to switch on at all. The expensive case is a tag that fires with no consent state attached, or a banner that never updates the state after someone accepts. Then the platforms are not modelling a known denial, they are working from a gap they do not know exists, and the two of them handle that on different rules and different eligibility thresholds. That is what turns a stable gap into a moving one.

THE GAP, SPLIT IN TWO Structural By design. Not a fault, and not closable. different question: ad contribution vs all channels different date: the click vs the conversion different identity data, so cross device differs Consent Recoverable. This is the part worth your time. no consent state on the tag, so nothing is counted denied signals with no modelling to fall back on the two platforms modelling on different rules WHAT SEPARATES THEM Check the consent signal is correct first. Until it is, you cannot tell which half of your gap you are looking at. THE READING THAT MATTERS Neither number is the truth. Reconcile both against what the business actually counted: orders, deals, invoices.
structural, by designconsent, recoverable
The gap has two halves that behave differently. The structural half is the two platforms doing their job. The consent half is signal you can get back. Figures such as the 34% of sessions hidden by consent are measured ranges across Amplio Data client implementations, not a guarantee.

How to tell how much of yours is which

Most reconciliation advice stops at listing causes, which leaves you knowing why gaps exist in general and nothing about your own. This is the sequence we use, and the order matters more than any single step.

  1. Check the consent signal before you compare anything

    Everything downstream is unreadable while the signal is wrong, because you cannot tell a conversion that did not happen from one that was never allowed to be counted. In a private window, reject, and confirm the state reaches your tags rather than trusting the banner's settings screen.

  2. Line the two reports up on the same question

    Before blaming anything, make the comparison fair. Put both on the conversion date rather than the click date, match the date ranges exactly, and check whether the Ads conversion action you are reading includes view through conversions when the GA4 figure does not.

  3. Separate the modelled conversions from the observed ones

    Both platforms fill gaps with modelling, on different rules and eligibility thresholds. A gap growing in modelled conversions is a consent and volume story. A gap sitting in observed conversions is a tagging story, and the two get fixed in different places.

  4. Reconcile both against what the business actually counted

    Take a clean date range and compare each platform against the order table, the CRM or the invoices. This turns two disagreeing dashboards into a diagnosis, because it tells you which one is short rather than only that they differ.

  5. Re measure after the consent fix, not before

    Once the signal is correct, let a clean period pass and compare again. The gap that remains is the structural one, and that is the number to write down and stop investigating.

Step one comes first because a wrong consent signal makes every later comparison unreadable. The mechanics of that check are in how to check your cookie banner is sending the Consent Mode v2 signal, and what a denial does to your reporting is in what happens to GA4 data when users reject cookies.

When the gap is telling you something is wrong

A structural gap is steady. It sits at roughly the same size week after week, it moves with your channel mix rather than at random, and it tends to leave Google Ads the higher of the two for the reasons above. That is a gap you can write down, explain to whoever asks, and leave alone.

You will find published percentages for what a normal gap looks like. They are worth little to you, because the size depends on your channel mix, your conversion lag and how much of your traffic consents. The number worth having is your own: measure it across a stable period once the consent signal is correct, write it down, and treat departures from it as the signal.

What deserves investigation is a gap that changes shape. Attribution does not drift on its own, so a sudden widening means something was changed. Check the deliberate edits first: a different attribution model, an edited lookback window, a conversion action redefined. If none of those moved, look at the consent path: a banner reconfigured, a tag that lost its consent state, a platform integration now firing alongside your own tags. Test that path on a rejection, because the acceptance path is the one everybody tests and the rejection path is where these faults live.

Neither dashboard is the truth either way. Both are estimates built on what they were allowed to see, and on basic rather than advanced Consent Mode a denied visitor sends nothing at all rather than an anonymous ping, so there is less for either platform to work from. The number that ends the argument comes from the order table.

Velo sets the consent state from one snippet before your tags initialise, so the signal both platforms read is correct from the first request. The mechanism is on the product page.

Common questions

Why do Google Ads and GA4 report different conversion numbers?

Because they are not counting the same thing. Google Ads counts conversions its own clicks contributed to and dates them to the click. GA4 counts conversions across every channel, dates them to the moment the conversion happened, and splits the credit between touchpoints. The two also resolve cross device journeys from different identity data, and report some conversion types on different terms. A gap is the normal result. What is not normal is a gap that moves suddenly.

Which number should I trust, Google Ads or GA4?

Neither on its own. Treat Ads as the view of what your advertising contributed and GA4 as the view of the whole journey. The number that settles an argument is a third one: what the business counted in its order table, CRM or invoices. Reconcile both against that rather than picking a favourite.

How much of the gap is caused by cookie consent?

It varies by site and audience, so measure it rather than assume it. Consent choices commonly hide a meaningful share of sessions altogether, measured across Amplio Data client implementations at around 34% of sessions, which is a measured range and not a guarantee. To size it on your own site, confirm the consent signal is correct, then look at how much of each platform's reporting leans on modelling.

Can I make Google Ads and GA4 conversion numbers match?

Not exactly, and chasing an exact match is the wrong goal. The structural part is deliberate: different attribution scope, different conversion dates, different identity data. What you can remove is the part that is not by design, the conversions neither platform saw properly because the consent state was missing or wrong. Fix that and the remaining gap becomes stable and explainable.

Our gap suddenly got much bigger. What changed?

Attribution does not drift on its own, so something was changed. Check the deliberate edits first: a changed attribution model, an edited lookback window, a conversion action redefined. If none of those moved, check the consent path on a rejection rather than an acceptance, since that is the path nobody tests.

Stay compliant.
Recover the signal.

Add Velo once and get the banner, the regions, the audit log
and Consent Mode v2 working together, live in minutes.