Stefan RiemeyerGoogle Ads Freelancer

GA4 and Google Ads don't match: why the gap doesn't test your tracking

Why GA4 and Google Ads show different revenue, which figure is fit for which purpose, and how to find tracking errors using click IDs stored in your shop.

Stefan Riemeyer/Updated 2 November 2026/6 min read

Normal Purchase event partly broken Ads coverage 80% 60% Gap between Ads and GA4 20% 20% Worked example with invented figures

The gap does not show the most expensive error

If you want to know whether your tracking is right, do not compare GA4 and Google Ads with each other. If both tags hang off the same purchase event in the checkout and that event partly fails, both lose in the same proportion, and the difference stays exactly as it was. That is my own deduction, not a Google rule. Google itself describes discrepancies of often up to 20% as expected, and that does not help you either: a 20% gap can look exactly the same with healthy tracking and with broken tracking.

A worked example with invented figures, in euros per week, same shop, same budget:

Normal Purchase event partly broken Only GA4 tag broken Only Ads action broken
Shop, all orders 100,000 100,000 100,000 100,000
Shop, orders with click ID 50,000 50,000 50,000 50,000
Google Ads, by conversion time 40,000 30,000 40,000 30,000
GA4, google / cpc 32,000 24,000 24,000 32,000
GA4, all channels 88,000 66,000 66,000 88,000
Gap (Ads minus GA4, divided by Ads) 20% 20% 40% -7%
Ads coverage 80% 60% 80% 60%
GA4 capture rate 88% 66% 66% 88%

In the second column, a quarter of the revenue measurement is missing, and the gap sits calmly at 20%. With €8,000 in costs, Google Ads then reports a ROAS of 3.75 instead of 5.0. A strategy with a target ROAS of 5.0 sees too little value and may lower bids, even though the shop is selling exactly as before. That costs revenue, and comparing the two platforms reports nothing.

In the two right-hand columns the gap does move, but it does not tell you which side is broken. In my view, it can also move without any fault at all, for example when you change the channel setting or shift budget into campaigns with longer purchase journeys. As a signal, it therefore fails in both directions.

The main check: Ads against orders with a click ID

Compare each source separately against the shop, and compare Google Ads only against the orders that can have come from an ad click. A comparison against the whole shop would spike with every newsletter and every discount campaign.

Ads coverage = Conv. value (by conv. time) of the purchase action ÷ order value of shop orders with a click ID GA4 capture rate = GA4 purchase revenue across all channels ÷ order value of all shop orders

For this, the shop has to store the click ID with the order, independently of the purchase tag. If the event then fails, the order stays in the system with its ID, and only the numerator drops. This is how you set it up:

A hundred per cent is not the goal: modelled conversions, including cross-device ones, often have no matching ID in the shop. So I would check the level once with test purchases for each payment method and then take your own corridor from eight full weeks. Investigate if a rate falls outside it two weeks in a row, or immediately in the case of a large swing.

How to read the result:

What moves Where to look
Ads coverage and GA4 capture rate both fall Checkout, shared purchase event, cookie banner
Only Ads coverage falls Conversion action in Google Ads, Ads tag
Only GA4 capture rate falls GA4 tag, GA4 consent setting, a single payment method
Ads coverage rises for no reason Double counting, a second primary purchase action
Orders with a click ID fall while clicks stay the same Redirect: if the gclid is lost along the way, the click is not attributed to any later conversion

Why the figures differ and which one applies to what

The discrepancy itself is usually not an error. Suppose someone clicks your ad on 28 March, returns via organic search on 3 April and buys for €100. Google Ads assigns the value to 28 March, because according to Google the primary columns are based on the time of the click. GA4 shows the purchase in April in its usual reports, and under the Paid and Organic Last Click model the full value goes to the last channel that was clicked, in this case Organic.

March April Click 28 March Purchase 3 April Google Ads, standard column €100 GA4, Paid and Organic Last Click €100 to Organic
Worked example: depending on the system, the same purchase lands in a different month and with a different channel.

Then there is the lookback window: for purchases, GA4 looks back 90 days by default, Google Ads as far as you have set in the conversion action. Both systems also model separately. That is why the two figures will never become one, and they do not need to, as long as you use each for its own question:

Decision Figure Limit
Campaigns and bids Google Ads, standard columns Costs are also tied to the click, so leave out the most recent days, see conversion delay
Google against other channels GA4, Paid and Organic Shows attribution, not incremental revenue
Budget and profit Shop or inventory management system, after returns No campaign attribution
Is the tracking still measuring? Ads coverage and GA4 capture rate Your own corridor instead of a hundred per cent
Does Google bring in additional revenue? None of them, test with a control group Effort, minimum volume

Fault found: protect the bidding

Put the date of the break next to shop releases, Tag Manager versions and banner updates, and fix the cause first. Meanwhile, the damage to bidding continues, and that is what data exclusions are for. They apply to click dates and, according to Google, should cover at least 90% of the affected clicks. If the event was broken from the 10th to the 14th and around 90% of your purchases come within 5 days of the click, you exclude the 5th to the 14th. Bids can still drop briefly. In that case, lower the ROAS target temporarily and leave the exclusion in place. According to Google, the tool is not intended for frequent or long-term use.

If only consent drops, for example after a new banner, I treat that as a new baseline. Whether it really is only consent is shown by a test visit with the banner declined in Tag Assistant: the default status has to be "Denied", and in basic mode the Google tags are then blocked, while in advanced mode they send measurements without cookies. If that is confirmed, adjust your corridor and target and leave out the exclusion.

No click IDs, no alarm threshold

If your shop does not store click IDs, you are left with the GA4 capture rate and test purchases until it is rebuilt. The Ads side can then only be checked roughly, and I would not use a comparison against the whole shop as an alarm. If your purchase action comes in as a GA4 import rather than through its own Ads tag, Google Ads depends on GA4, and cases where only one rate falls hardly occur any more. Below roughly 100 orders a week I would compare months; that is a rule of thumb. Long purchase cycles need more time to mature before you assess a week. A large volume of orders by phone or in store should be taken out of the denominator before the comparison. Google information as of November 2026.

Further questions

How large can the discrepancy between GA4 and Google Ads be?

Google describes discrepancies of often up to 20% as expected. That is not a measurement for your shop. I would not set a limit for the gap, but instead monitor coverage against the shop over several weeks.

Should I switch Google Ads in GA4 to Paid and Organic so that the figures match?

I would not do it just to make reports match. According to Google, the change only applies going forward and to all linked Ads accounts, and it can change bidding and reporting. Whether organic visits belong in the bidding is a separate steering decision.

Sources

  1. Understand your conversion tracking data, Google Ads Help
  2. Select attribution settings, Google Analytics Help
  3. Get started with attribution, Google Analytics Help
  4. Upload click conversions, Google for Developers
  5. Updates to iOS 14 campaign measurement, Google Ads Help
  6. Troubleshoot: Website redirects are losing click data, Google Ads Help
  7. Use data exclusions for conversion data outages, Google Ads Help
  8. Tracking Prevention in WebKit, WebKit
  9. Verify consent mode implementation, Tag Manager Help
  10. Consent mode overview, Google for Developers
Stefan Riemeyer

Stefan RiemeyerIndependent Google Ads specialist for e-commerce in the DACH region. I work on every account I manage myself.

Request a free audit

Read next