Server-side
Rhobin
July 30, 2026
7 min read
Google Ads reports more conversions than GA4 because the two count differently: Ads counts on the click date, credits itself with its own attribution model, can count every conversion per click, and adds modeled conversions to the total, while GA4 reports what it observed. Most of the gap is that expected difference, and whatever is left after you account for it is real signal loss.
The symptom
Two tabs are open on the call. Google Ads reports one conversion count for last month, GA4 reports a lower one, and the client asks which number is right, in the tone that means it has been bothering them for a while. Both are, in their own terms. Saying that out loud costs credibility you need later in the same meeting.
So the gap gets managed instead of explained. The deck quotes GA4 because it looks conservative, or Google Ads because it looks better, and a line appears about platforms measuring differently. Nobody is lying. But the numbers drift every month and nobody owns the difference, so nobody notices when the difference changes shape.
Agency leads tell us the same thing at Archon Labs: they stopped investigating the gap years ago because someone told them the platforms never match. True, and also the sentence that lets a real tracking failure sit undetected for a year. A gap you have reconciled is a footnote. A gap you have only accepted is a blind spot with a budget attached.

Why does Google Ads report more?
Because the two systems answer different questions, and four of the differences are documented counting rules rather than data problems. Work through them in this order and most of the gap resolves into arithmetic you can defend.
1. They disagree about what day it is. Google Ads reports conversions against the date of the click that led to the action, not the date of the action itself, per Google Ads Help. GA4 counts the conversion on the day it happened. Someone who clicks on the 29th and buys on the 2nd lands in two different months. On short date ranges, and at every month boundary, that alone moves the totals.
2. Google Ads is scoring its own contribution. Ads attributes the conversion to the Google Ads campaign using data-driven attribution. GA4 reports across channels, and its attribution reports offer three models: data-driven, paid and organic last click, and Google paid channels last click, per Analytics Help. A journey with paid search, an email and a direct return visit is one whole conversion in Google Ads and a fraction of one in a cross-channel model. Same event, different denominator.
3. Counting settings multiply. A Google Ads conversion action set to "Every" counts multiple conversions from a single click inside a date range, where "One" counts one. For lead forms, callbacks and repeat purchases, "Every" is a legitimate setting, and it inflates the count against anything counting unique events. Check it first, because it is the one cause that can double a number by itself.
4. Conversions arrive late. They can be reported up to 90 days after a click, and attribution reports run on 30, 60 or 90 day windows, per Google Ads Help. Pull last month today, pull it again in three weeks, and Google Ads will have grown while GA4 stays where it was. View-through conversions also sit outside the default conversion columns, so a Display campaign changes shape depending which column you read.
Those four explain the everyday gap. If your difference is stable, leans toward Google Ads and moves predictably with the date range, you are looking at counting rules, not a leak.
The fifth difference: one platform patches the hole, the other shows it
This is the one worth understanding, because it explains why the gap leans the way it does. When consent is denied, Google Ads models the missing conversions, and in Google's own words, modeled conversions appear in the Conversions column and are reflected in all downstream reports, per Google Ads Help. The estimate reaches you looking exactly like an observed conversion, and it feeds bidding.
GA4 does not do the equivalent for you in most accounts. Behavioral modeling requires a property to collect at least 1,000 events per day with analytics_storage='denied' for at least 7 days, and at least 1,000 daily users sending events with analytics_storage='granted' for 7 of the previous 28 days, per Analytics Help. Plenty of healthy mid-market clients never clear that bar. Even when a property qualifies, the same page notes that modeling is not applied to event counts such as page_view, first_visit and session_start.
So take one real order that was never collected, because an ad blocker stripped the request, a browser cleared the cookie, or the visitor declined consent. Google Ads estimates it back into the total. GA4 leaves the space empty. The dashboards look like they disagree about performance. They are agreeing about missing data, in opposite directions.
That residual is where the money is. In the setups we audit, 15 to 30% of conversions are never captured at all, before any attribution rule applies, and ad blockers alone strip 30 to 40% of events on some audiences. None of it surfaces as an error. So once the four counting rules are accounted for, whatever is left is not a reporting quirk, it is a collection failure with a cost. That layer is covered in why conversions never reach GA4.

What good looks like
Two jobs, in this order. Reconcile the explainable gap so you can state it in one sentence, then close the unexplained part so it stops growing.
The reconciliation is process, not technology. Pick one system as the number the client is held to, write down which attribution model and window it uses, note the counting setting on every conversion action, and compare the same date range twice, once fresh and once after the reporting delay. An afternoon per account retires the "which number is right" conversation.
Closing the residual is the technical half, and it is the job Archon Signal does. It moves conversion collection out of the browser and onto a server-side setup on your client's own domain, so events are recorded where an ad blocker, a cookie policy or a failed script cannot delete them first. On a typical setup that recovers 15 to 40% more conversions than a browser-only configuration. Whether it pays back on one specific account is answered in is server-side tracking worth it for your agency.
Two things change on the client call, and neither touches your campaigns.
The gap gets an explanation instead of a caveat. You walk in with the difference already decomposed, which reads as control rather than as a problem you hope nobody raises.
Both platforms move up, not just one. Recovered events reach GA4 and the ad platforms, so the totals converge from both sides and bidding runs on observed data instead of estimates.
The two numbers still will not be identical, and they should not be. Click-date reporting and cross-channel attribution are design decisions, not bugs. The goal was never one number, it is a difference you can account for.
Frequently asked
How big a gap is normal?
There is no honest universal figure, because it depends on your counting settings, channel mix and consent rate. Direction and stability tell you more than size. Google Ads reporting more, consistently, in a range that tracks your date selection, is expected. A gap that widens month over month, or jumps after a site release, is an event with a date on it.
GA4 is showing more conversions than Google Ads. What does that mean?
That inversion points at something structural rather than at attribution. Usual causes: a GA4 key event firing more than once per conversion or on the wrong trigger, a Google Ads conversion action paused or never imported, or auto-tagging broken by a redirect that strips the click identifier, so paid traffic arrives in GA4 labelled organic. Check the trigger and the click identifier first.
Do Safari and iOS explain the difference?
They explain part of the residual, not the counting rules. Browser-set cookies on those platforms live between one and seven days, so a returning visitor is counted as new and a conversion outside that window loses its link to the click. A first-party cookie set server-side can last up to 400 days. Segment by browser first.
Should we import GA4 conversions into Google Ads so the numbers match?
It makes the reports agree, which is not the same as making them right. You are standardizing on the browser-collected number, the lower and less complete of the two, and giving up the modeling that covered Google Ads' own gaps. If the underlying event undercounts, importing it teaches bidding to optimize on incomplete signal, and both systems are now confidently wrong together. Fix collection first.
If you want to know how much of your own Google Ads versus GA4 gap is arithmetic and how much is missing data, request a free tracking audit and we will reconcile one real account with you.