Two tools, two sides of the click
Most reporting arguments about these two are really a category error. They aren't two measurements of the same thing that disagree — they're two measurements of different things that were never going to agree.
Search Console is Google's record of what happened on Google. It knows what was shown, what was clicked and where you sat when it happened. It has no idea what your site did afterwards — whether it loaded, whether it converted.
GA4 is your record of what happened on your site. It knows nothing about the search result. It knows a browser executed some JavaScript and sent an event, and it guesses where that browser came from using a referrer that increasingly isn't there.
| Search Console | GA4 | |
|---|---|---|
| Measures | Impressions, clicks, position on Google Search | Sessions, users, events, conversions on your site |
| Collected | Server-side, by Google | Client-side, by a tag in the visitor's browser |
| Scope | Google Search only | Every source, including Bing, direct and referral |
| Blocked by ad blockers | No | Yes, routinely |
| Timezone | Pacific time, fixed | Whatever your property is set to |
| History kept | 16 months | 14 months for user-level exploration data |
| Query data | Yes — the only place it exists | No, not since Google stopped passing queries |
| Conversion data | No | Yes, if you configured it |
| Can your agency edit it | No | Yes — filters, channel groups, conversions |
The four reasons the numbers differ
In rough order of how much damage each does to a monthly report.
1. A click is not a session
Different units, and the mismatch runs both ways. One click usually starts one session — but a visitor who clicks your result, reads, goes back to Google and clicks a different page of yours has produced two clicks and, quite possibly, one session, because GA4's session window is 30 minutes by default.
Search Console also collapses a repeated click on the same result into one. Going the other way, GA4's Organic Search channel includes Bing, DuckDuckGo and everything else, while Search Console only ever reports Google. Compare the two and you're comparing a bigger box to a smaller one.
2. Ad blockers, consent banners and the click that never loaded
Search Console records the click the moment it happens. GA4 records nothing until a tag fires in the browser. Anything that stops the tag firing becomes a gap, always in the same direction: Search Console higher.
Three big causes: ad blockers and privacy browsers that never load the script, consent banners where the visitor declines or leaves first, and impatient users who tap back before a slow mobile page finishes. India's DPDP Act made consent a live design question here, so this gap has widened for legitimate reasons.
The fourth cause is dumber and more common: the tag isn't on every template. Product pages have it, the blog doesn't. Check per template, not sitewide.
3. Search Console runs on Pacific time
Search Console groups performance data by day in Pacific time. GA4 uses whatever the property is set to. For an IST business that's a 12.5-hour offset, so roughly half of each Search Console "day" belongs to your previous calendar day.
Which is why daily comparisons look chaotic and monthly ones look almost sane — the error concentrates at boundaries. Compare full weeks or months, and stop trying to reconcile a Tuesday.
4. Filtered queries, sampling and the 1,000-row limit
Search Console filters out rare queries for privacy. That's why your query rows never sum to the reported total, and no, nothing is broken: the totals are right, the itemised list is deliberately incomplete.
The interface also exports at most 1,000 rows per report. With thousands of ranking queries, a UI export is a top-1,000 sample being read as a census. The API returns far more with pagination, and the Looker Studio connector will pull more too.
On the GA4 side, standard reports are generally unsampled, but Explorations can sample above a quota, and high-cardinality dimensions get bundled into an "(other)" row that quietly eats your detail.
Which direction the gap runs, and what it means
The size of the gap isn't the diagnostic. The direction is. Use this before escalating anything to your agency or your developer.
| What you see | Most likely cause | What to do |
|---|---|---|
| Search Console clicks 10–30% above GA4 organic sessions | Normal. Ad blockers, consent declines, bounced loads. | Nothing. Record the ratio and watch for changes. |
| Search Console clicks 40%+ above GA4 sessions | Tag missing on some templates, or consent blocking by default | Audit the tag per template. Check consent mode. |
| GA4 organic sessions above Search Console clicks | GA4 organic includes Bing and others, or you compared users to clicks | Filter GA4 to google / organic first. |
| Monthly totals close, daily totals wild | Timezone offset | Compare full weeks or months. |
| Query rows don't add up to the total | Privacy filtering of rare queries | Expected. Use totals, not the sum of rows. |
| The gap suddenly widened this month | A tag deployment broke, or the consent banner changed | Check the deploy log and CMP version before blaming SEO. |
How to set GA4 up so the comparison is at least fair
Most reporting arguments dissolve once the setup is honest. Six things, once, then leave them alone.
- Set the property timezone and never change it mid-year. Changing it doesn't reprocess history, so you'd create a permanent seam in your own data.
- Filter to `google / organic` whenever you compare to Search Console. GA4's Organic Search channel is broader by definition.
- Link Search Console to GA4 — and know the limit. The linked reports expose landing-page data, not query detail on every page.
- Configure consent properly instead of firing tags regardless. The second approach isn't a data shortcut, it's a compliance problem with a data side effect.
- Exclude internal and bot traffic with GA4's own filters, not a spreadsheet afterwards.
- Write down which tool owns which metric. Clicks, impressions and position from Search Console; sessions, engagement and conversions from GA4. Nobody switches source mid-quarter because one number looks better.
Which number goes to the CFO
Neither. That's the rule, and it survives every version of this argument.
A CFO doesn't need clicks or sessions. They need the count of qualified leads or orders from organic search, taken from your CRM, with a cost per lead attached. That number is denominated in something they already manage.
If you must add a traffic line for context, use Search Console clicks. It's the demand-side measurement, and your agency can't edit it — nobody adds a filter or redefines a channel group inside Search Console. GA4 is configurable, and configurable numbers shouldn't be the ones you're judged on.
Keep the framing straight: traffic is a leading indicator, leads are the outcome. Same reason our guarantee is written against a client's own trailing-90-day qualified organic leads, frozen on day one, rather than a ranking position. See what SEO reporting covers and rankings versus organic traffic.
The verdict, by question
Asking whether Google is sending more demand — Search Console, always. It's the only source of query, impression and position data, and the one nobody on your team can quietly reshape.
Asking what visitors did after arriving, and what it was worth — GA4, always. Search Console has no visibility past the click.
Asking which to trust when they disagree: both, and stop comparing totals. Check the direction of the gap, record the ratio, escalate when the ratio changes.