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.
Day 1 — organic
The visitor finds an unrelated blog post through search. Low intent, no purchase. GA4 records an Organic touchpoint.
Day 12 — the assistant
They ask an assistant for a recommendation, click through, and read the pricing page. No referrer, so GA4 records Direct.
Day 14 — purchase
They return and buy. The final touchpoint is Direct.
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
| Mechanic | Effect | Can you fix it? |
|---|---|---|
| Missing referrer | Most AI visits land in Direct | No — the data never reached GA4 |
| Last non-direct click | Credit is reassigned to an earlier channel | Partly — change the attribution model, accept different distortions |
| Channel grouping gaps | Identified AI visits scatter across channels | Partly — a custom channel group, maintained by hand |
| Session and retention windows | Long consideration cycles fall outside the data | Partly — 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.
Only partially. A custom channel group reclassifies visits that already carry a recognisable referrer or campaign parameter, moving them out of Referral or Unassigned into a dedicated AI bucket. It does nothing for referrer-less visits sitting in Direct, which are the larger population. It makes the report look more authoritative without making it more complete.
It is the convention where GA4 ignores Direct when assigning conversion credit and instead looks back through the lookback window for the most recent non-direct channel. For AI traffic this means an AI-driven conversion is credited to whatever earlier organic, email or paid touchpoint exists. The result is that other channels are over-credited by exactly the amount AI is under-credited.
Yes, and it is worth doing immediately, but it only affects data collected after the change — it cannot recover history. Standard GA4 caps event-level retention at 14 months, and many properties are still on the two-month default, which makes any long-window attribution analysis impossible before you address anything else.
No, but it is the strongest indicator available without new tooling. Direct legitimately includes bookmarks, typed URLs, some email and messaging clients, and QR scans. The more diagnostic view is Direct traffic segmented by landing page: visits arriving directly on deep pages such as pricing or comparison pages are implausible as typed URLs and are where unattributed AI referral tends to concentrate.
Sources & further reading
- 01[GA4] Default channel groups — Google Analytics Help
- 02[GA4] Attribution and attribution modeling — Google Analytics Help
- 03[GA4] Data retention — Google Analytics Help
- 04[GA4] Adjust session timeout — Google Analytics Help
- 05Referrer-Policy — HTTP header reference — MDN Web Docs