All posts
Attribution

Why GA4 Cannot See Your AI Traffic

It is not a configuration mistake. Four specific mechanics in Google Analytics 4 guarantee AI-referred visits land in the wrong bucket — and one of them you cannot fix.

Jay Patel10 min read

The first thing everyone does is open GA4 and look for ChatGPT. Some traffic is there — a few hundred sessions, maybe a few thousand — and it looks reassuringly like a channel being measured.

That number is wrong. Not slightly, and not because of a setting somebody forgot. It is wrong because of four specific mechanics in how GA4 assigns traffic to channels, three of which you can partially work around and one of which you cannot touch at all. Worse, the fourth mechanic does not merely lose the traffic — it hands the credit to a different channel, which is a strictly worse outcome than reporting nothing.

Mechanic one: no referrer, no channel

GA4 determines traffic source from two inputs: campaign parameters in the URL, and the HTTP referrer. If a visit has neither, GA4 has nothing to work with and assigns it to Direct.

This is correct behaviour. GA4 is not guessing, and it should not guess — it reports what the browser told it.

The problem is that the browser usually tells it nothing for AI referrals. Referrer policy defaults, protocol downgrades, rel="noreferrer", and above all mobile in-app webview handoffs mean most AI-sent visits arrive with no referrer at all.

So GA4's AI number is not a measurement of AI traffic. It is a measurement of the minority of AI traffic that happened to preserve a referrer or carry a campaign tag — and, as covered in the benchmarks audit, that minority is not a random sample.

This is not a criticism of GA4

GA4 is doing exactly what a web analytics tool should do with the data available. The header was not sent. No configuration recovers information that never crossed the network. The failure is in treating GA4's channel report as a complete picture of acquisition, which is a reasonable assumption that stopped being true.

Mechanic two: the credit goes somewhere else

This is the mechanic that turns a gap into an error, and almost nobody knows about it.

GA4's default conversion attribution does not assign credit to Direct. When a conversion's touchpoint chain ends in Direct, GA4 looks back through the lookback window for the most recent non-direct channel and assigns credit there instead. This is the long-standing "last non-direct click" convention, inherited from Universal Analytics, and for the world it was designed for it is sensible: someone who clicked your ad on Monday and typed your URL on Thursday was still acquired by the ad.

Now run an AI-discovered purchase through it.

How an AI-driven conversion gets credited to organic search

Every step behaves correctly in isolation. The outcome is a conversion credited to a channel that did not cause it.

01

Day 1 — organic

The visitor finds an unrelated blog post through search. Low intent, no purchase. GA4 records an Organic touchpoint.

02

Day 12 — the assistant

They ask an assistant for a recommendation, click through, and read the pricing page. No referrer, so GA4 records Direct.

03

Day 14 — purchase

They return and buy. The final touchpoint is Direct.

04

The credit

GA4 discards Direct, walks back, and credits the Day 1 organic session. The assistant is invisible; organic is overstated.

The result is not a missing number. It is a wrong one in a specific direction: organic search, email and paid campaigns are systematically over-credited by exactly the amount that AI referral is under-credited.

That is considerably more dangerous than a blind spot. A blind spot makes you uncertain. This makes you confidently wrong, and it argues for spending more on whichever channel happened to touch the visitor first.

It does not report AI traffic as unknown. It reports it as organic search — and then you fund more organic search.

Mechanic three: the source list has to know the source

Even when a referrer is present, GA4 has to decide what channel it represents. Channel grouping works by matching the source against Google's maintained categorisation — this host is a search engine, that one is a social network, this one is a shopping site.

AI assistants do not have a settled place in that taxonomy. Depending on the host and how the list has been updated, an AI referral with an intact referrer may land in Referral, in Organic Search, in Unassigned, or in a custom group somebody built by hand.

This produces a distinctive symptom: your AI numbers are not merely low, they are inconsistently low, moving between channels as the classification shifts underneath you without any change on your side.

Custom channel groups help less than they appear to

You can build a custom channel group matching known AI hosts and campaign parameters, and you should. But it only ever reclassifies visits that already carried an identifying signal. It moves traffic out of Referral and Unassigned into a tidy "AI" bucket, which makes the report look authoritative while the much larger referrer-less population sits untouched in Direct. The number gets prettier without getting more complete.

Mechanic four: the window is too short

AI-influenced purchases have long consideration cycles. The discovery moment happens when someone asks for a recommendation; the purchase happens after more research, comparison, and often an internal approval process.

Two GA4 limits bite here.

Session timeout. Sessions end after 30 minutes of inactivity by default. Someone who reads your pricing page, closes the laptop, and returns that evening generates two sessions, and only the first carries any source information at all.

Data retention. Standard GA4 retains event-level data for a maximum of 14 months, with a default of two months that many properties never change. Exploration reports cannot reach past the retention window. If your sales cycle plus your reporting lag exceeds it, the touchpoint is simply not in the dataset any more.

The two-month default is the one to check first. It is a live setting on a great many properties, and under it the entire question of long-window AI attribution is unanswerable regardless of everything else.

The four mechanics, and what you can actually do

MechanicEffectCan you fix it?
Missing referrerMost AI visits land in DirectNo — the data never reached GA4
Last non-direct clickCredit is reassigned to an earlier channelPartly — change the attribution model, accept different distortions
Channel grouping gapsIdentified AI visits scatter across channelsPartly — a custom channel group, maintained by hand
Session and retention windowsLong consideration cycles fall outside the dataPartly — raise retention to 14 months; the ceiling is fixed

What you can do inside GA4

Worth doing, none of it sufficient:

Raise data retention to 14 months. Settings, one toggle, applies only going forward. Do it today — the cost of not doing it is unrecoverable.

Build a custom channel group for AI sources. Match known assistant hosts and campaign parameters. This gets you a clean view of the observable subset, which is genuinely useful as long as you label it honestly.

Report Direct as a trend, not a channel. Direct is your error term. Watch its share over time. If it is climbing without a brand campaign, app launch, or email programme to explain it, that movement is your best available proxy for the traffic you cannot see.

Look at a data-driven attribution model. It handles the Direct problem differently from last-non-direct-click. It does not solve the underlying issue — an unidentified touchpoint is still unidentified — but it stops the mechanical hand-off of credit to whatever came first.

Segment your Direct traffic by landing page. Direct visits arriving on deep pages — pricing, comparison, specific product pages — are behaviourally implausible as typed URLs. Nobody types a URL with three path segments from memory. That segment is where your dark AI traffic lives, and it is the single most revealing thing you can look at without new tooling.

The one query worth running today

Filter to Direct traffic, exclude the homepage and any known app or email entry points, and look at what remains. Deep-page Direct traffic with no plausible bookmark explanation is your unattributed AI cohort. Compare its conversion rate to your non-branded organic baseline. If it converts meaningfully better, you have found something real.

Where GA4's limits actually stop

To be fair about scope: GA4 is a good tool at the job it was built for. Referrer-based channel attribution was the correct architecture for a web where referrers were sent. Nothing about its design is careless.

What it cannot do is infer a source that the browser did not transmit. That requires collecting signals GA4 does not collect — client characteristics, navigation context, request-level attributes — and reasoning about them probabilistically, which is a fundamentally different kind of system. It also requires being explicit about uncertainty, and GA4's data model has no place to put a confidence score. A channel is a string; there is no field for "we are 60% sure."

That is the real boundary. Not that GA4 is configured wrong, but that AI traffic attribution asks a question GA4's data model cannot express. What such a system needs to do instead is a different architecture, not a different setting.

Frequently asked

Because GA4 assigns traffic source from the referrer header and campaign parameters, and most AI-referred visits arrive with neither — particularly when the assistant opens the link inside its own mobile app webview. Those visits are assigned to Direct. The ChatGPT figure GA4 shows is the minority of AI traffic that preserved an identifying signal.

Sources & further reading

  1. 01[GA4] Default channel groupsGoogle Analytics Help
  2. 02[GA4] Attribution and attribution modelingGoogle Analytics Help
  3. 03[GA4] Data retentionGoogle Analytics Help
  4. 04[GA4] Adjust session timeoutGoogle Analytics Help
  5. 05Referrer-Policy — HTTP header referenceMDN Web Docs
Share