GA4 missed every AI referral from Gemini over two months on thegeolab.net. Server logs captured what GA4 could not.
TL;DR
GA4 captured fewer than 1 in 200 human page views on thegeolab.net over two months, and it missed every single Gemini AI referral. Client-side analytics depends on JavaScript that ad-blockers suppress and AI surfaces strip. Server logs recorded six human arrivals from gemini.google.com that GA4 never logged under any source. If your GA4 dashboard shows zero AI referral traffic, that is probably a measurement failure, not a channel failure.
Contents
The gap: GA4 saw fewer than 1 in 200 human visits
Across 2 May to 29 June 2026, I compared GA4 sessions against nginx server access logs on thegeolab.net, counting only human-document page views on the log side after excluding crawlers, monitoring pings, prefetches, and asset requests. GA4 captured 0.45% of those human page views in aggregate, with a median daily capture of 0.44%. That is roughly one visit in 225. For AI referrals specifically, the gap is even wider.
The gap is structural, not a bad week. The daily capture ratio had a coefficient of variation of 0.72 across the full window, so the shortfall held steady day after day rather than being driven by a handful of outlier days. Server logs are the arbiter here because nginx records every request that reaches the server regardless of what runs in the browser, while GA4 only counts visits where its gtag.js JavaScript successfully fires.
AI referrals are the hardest-hit channel
Six human visitors arrived from gemini.google.com during the window, and GA4 logged none of them. I checked each of the six by date, landing page, and every source and medium GA4 records, including google/organic and direct. There was no matching session under any label. GA4 did not misfile these referrals, it missed them entirely: the tag never fired. These AI referrals were invisible to GA4. This sits alongside the citation-to-referral gap in Cited Into Irrelevance, where heavily cited pages drew almost no AI referral traffic — there the clicks genuinely were not coming, whereas here some clicks that did come were never counted.
Perplexity referrals are undercounted for a second reason. Perplexity routes clicks through a redirect that can strip the Referer header, so a share of its human referrals reach the server with no AI origin attached at all. Between Gemini going uncounted and Perplexity going unattributed, the AI channel as a whole is the least visible part of GA4’s already-thin picture.
Going deeper? The GEO Experiments ebook covers measurement methodology for AI citation and referral tracking across platforms — linked at the foot of this post.
Why this happens
GA4 depends on gtag.js, a client-side script that has to load and execute in the visitor’s browser before any session is counted. Ad-blocking extensions such as uBlock Origin block that script by default, and consent banners suppress it until a visitor actively accepts analytics cookies. For AI referrals, the capture rate is effectively zero. A general capture rate near 0.4% is consistent with heavy client-side suppression rather than a one-off outage, and it matches the pattern of a technical audience that runs blockers at high rates. AI crawlers behave differently from Googlebot in this regard too: they rarely execute JavaScript at all, compounding the measurement gap.
Server logs carry no such dependency. An nginx or Apache access log records the request, the user agent, and the referrer at the moment the server responds, before any browser-side script has a chance to be blocked. That independence is exactly why the two data sources disagree, and why the server side is the one to trust when you need to know whether a human actually arrived.
Why this breaks AI-visibility measurement specifically
If you are measuring your brand’s AI visibility, GA4 alone will mislead you on the one metric you care about most. The channel it captures least well is the AI channel, so a GA4 dashboard showing little or no traffic from ChatGPT, Perplexity, or Gemini is not evidence that AI surfaces send no one. It is often evidence that GA4 cannot see the AI channel at all. This is a measurement-integrity caveat on the GA4 referral-session track set out in AI Referral Traffic Measurement: GA4 stays the readout for that track, but this finding shows the readout is a floor, not a ceiling. Citation rate, measured via server logs and API endpoints, remains the primary GEO metric, not GA4 sessions.
This matters because the instinct, when GA4 shows zero AI sessions, is to conclude that AI referral is not worth pursuing. On the numbers here that conclusion would be an artefact of the measurement tool, not a finding about the channel. Any serious GEO measurement has to read server logs, not just the analytics front end. The distinction between being retrieved and being cited is invisible to GA4 entirely.
Check your own logs in ten minutes
You can reproduce this check on any site where you have access to raw server logs. The goal is to count human visits that arrived from an AI surface, then compare that count to what GA4 attributes to the same sources.
- Get your access logs
On nginx this is usually
/var/log/nginx/access.logand its rotated.gzarchives; on Apache it is/var/log/apache2/access.log. Include the archives so your window is not just the last day or two. - Filter to AI referrers on successful page loads
Grep the logs for a 200 status and a Referer from an AI surface:
perplexity.ai,gemini.google.com,chatgpt.com,chat.openai.com,copilot.microsoft.com, andclaude.ai. - Strip out non-humans
Exclude known bot and crawler user agents, monitoring services, and non-document requests for images, CSS, and JavaScript. What remains is human arrivals from AI surfaces. For reliable bot detection, consider the approach in configuring robots.txt for AI crawlers.
- Pull the same window from GA4
In Reports, open Traffic acquisition and filter session source and medium to those same AI domains.
- Compare the two counts
If the server-log number is materially higher than the GA4 number, GA4 is undercounting your AI referrals, and that gap is your blind spot.
One honest caveat on the server-log count: it is a floor, not a ceiling. AI surfaces that strip the Referer header, Perplexity among them, will not appear in your grep at all, so the true number of AI-originated human visits is at least what you count and probably more.
What this is, and what it is not
This is one domain, thegeolab.net, measured over roughly two months, server logs against GA4. The 0.45% capture rate is this site’s rate, shaped by a technical, blocker-heavy audience, and I am not claiming 0.4% is a universal constant that applies to your site. What travels is the method and the direction: GA4 undercounts human traffic, and AI referrals trip over its client-side dependency hardest. A server-log comparison is how you find out by how much on your own domain.
Run the check. Whatever number your logs return, it will be a more honest account of your AI referral traffic than any GA4 report on its own.
FAQ
Does GA4 really miss most human traffic?
On thegeolab.net, GA4 recorded about 0.45% of human page views measured against nginx server logs over two months. The dominant cause is client-side suppression: ad-blockers and consent gates stop gtag.js from firing. The exact rate depends on your audience, but on any site with a technical, blocker-heavy readership, GA4 will undercount real human visits substantially.
Why does GA4 miss AI referrals specifically?
Two mechanisms stack. Gemini referrals in this audit went uncounted because gtag.js never fired for those visits, so no session was created under any source. Perplexity strips the Referer header via a redirect, so its referrals often arrive with no AI origin recorded. Together they make AI referrals the least visible channel in GA4.
Are server logs better than GA4 for counting arrivals?
For counting whether a human arrived, yes. Server logs record every request the moment the server responds, with no dependency on browser-side JavaScript that blockers can stop. GA4 still adds engagement and conversion context that raw logs lack, so the practical answer is to use server logs as the arbiter for arrival counts and GA4 for behaviour on the visits it does capture.
How do I see my own AI referral traffic?
Grep your access logs for 200-status requests with a Referer from AI surfaces such as perplexity.ai, gemini.google.com, and chatgpt.com, then exclude bots and non-document requests. Compare that count to the same sources in GA4’s Traffic acquisition report. A large gap means GA4 is undercounting your AI referrals, and the server-log figure is your floor.
Does this mean GA4 is useless for GEO measurement?
GA4 is not useless, but it cannot be the only measurement source. GA4 captures engagement behaviour (scroll depth, time on page, conversion events) for the visits it does see. Citation rate, measured via the Perplexity Sonar Pro API and the DataForSEO AI Overview endpoint, is the primary GEO metric. Server logs are the arbiter for arrival counts. A three-source measurement stack (server logs, GA4, citation API) gives the most complete picture.
Key GEO Lab Takeaway
GA4 captured 0.45% of human page views over two months, and zero of six Gemini AI referrals. Client-side analytics cannot see the AI channel reliably.
Server logs are the arbiter for AI referral counts. GA4 adds engagement context for the visits it captures, but the arrival count comes from nginx.
A three-source measurement stack (server logs + GA4 + citation API) is the minimum for honest GEO measurement. Any single source has structural blind spots.
Ready to measure your AI visibility? Start with the GEO Experiments ebook for the full measurement methodology, or check the 10 variables that change between AI citation measurements.
Questions? Contact The GEO Lab.

