Someone asks ChatGPT which analytics tool handles AI traffic. ChatGPT names three, one of them yours. They click. They land on your pricing page, read for four minutes, and start a trial. In your analytics, that visit is indistinguishable from someone typing your domain into the address bar from memory.
This is the single most consequential measurement failure of the last five years, and almost nobody caused it deliberately. The referrer header — the small piece of HTTP that has told websites where their visitors came from since 1996 — has been eroding for a decade under entirely reasonable privacy pressure. AI assistants did not break it. They arrived after it was already broken, and made the consequences impossible to ignore.
What the referrer was actually for
When a browser follows a link from page A to page B, it may include a Referer header on the request to B naming page A. (The misspelling is in the original 1996 specification and has never been corrected — the modern policy header spells it Referrer, which is a small and permanent joke at the standards process's expense.)
Everything you know about how visitors reach you rests on that header. "Organic search" means the referrer was a search engine. "Referral" means the referrer was some other site. "Direct" is not a source at all — it is the absence of one. It is the bucket that means we don't know.
That distinction matters enormously and almost every analytics dashboard hides it. Direct is presented as a channel, sitting in a table beside Organic and Paid as though it were a comparable thing. It is not. It is the error term.
What a browser decides before it sends a referrer
Every gate has to pass. Failing any one of them produces a referrer-less request, which arrives as Direct.
Referrer policy
The linking page's policy decides how much to send: the full URL, the origin only, or nothing at all.
Protocol check
A request from an HTTPS page to an HTTP page drops the referrer entirely under every modern default.
Link attributes
rel="noreferrer" on the anchor suppresses the header regardless of the page-level policy.
Navigation context
Copy-paste, an app handoff, or a redirect through a native shell can leave no referrer to send.
Mechanic one: the browser default changed
Until 2020, most browsers sent the full referring URL cross-origin by default. Chrome 85 changed the default to strict-origin-when-cross-origin, and the other major browsers converged on the same behaviour.
Read that policy name carefully, because it does two separate things:
- strict-origin — downgrade from HTTPS to HTTP and send nothing at all.
- when-cross-origin — going to a different site, send only the origin (
https://example.com/), never the path or query string.
The second half is the part people underestimate. Cross-origin, you no longer learn which page sent the visit. You learn only which site. For search that was survivable, because search engines had already stopped passing query terms years earlier. For AI assistants it is more damaging: a conversation URL would have told you which thread produced the click, and that is exactly the granularity the policy removes.
This was the right call
None of this is a mistake to be undone. Full-URL cross-origin referrers leaked private information constantly — password-reset tokens in query strings, document titles in paths, internal hostnames from corporate intranets. The default changed because the old default was dangerous. The measurement problem is a real cost of a change that was still correct.
Mechanic two: the protocol downgrade
If any hop in the chain is plain HTTP, the referrer is gone. Not truncated — gone.
Most sites are HTTPS-only now, so this feels like a solved problem. It is not, because the rule applies to every hop, including ones you do not control: an HTTP link shortener, a legacy redirect on a partner domain, a corporate proxy that terminates TLS and re-issues plaintext internally. Each of those quietly converts an attributable visit into a Direct one.
Mechanic three: rel="noreferrer"
Any link can carry rel="noreferrer", which suppresses the header no matter what the page policy says. It is a one-word decision by whoever authored the link, and you are the party who loses information.
This attribute is widespread and getting more so. It is bundled into rel="noopener noreferrer", which is the copy-paste incantation almost every framework, CMS and linting rule recommends for links opening in a new tab. Most developers who type it are reaching for noopener — the one that actually closes a security hole — and take noreferrer along for the ride without ever deciding to.
Most
noreferrerattributes on the web were never a privacy decision. They were a copy-paste that happened to include one.
Mechanic four: the in-app browser handoff
This is the big one, and it is the one specific to how assistants work.
When you tap a link in a mobile assistant app, you usually do not leave for the system browser. The app opens an embedded webview — SFSafariViewController on iOS, Custom Tabs on Android, or a plain WKWebView — and loads your page inside its own shell.
That handoff crosses a process boundary. The link was not followed by a browser navigating from one page to another; it was handed to a component and told to load a URL. Whether a referrer survives depends on which webview class the app chose, how it was configured, and what the app's own page policy was. Frequently the answer is that nothing survives, because there was no page-to-page navigation for the browser to describe.
Stack the desktop cases on top: a user copies a URL out of a chat and pastes it into a new tab, or reads an answer, opens a new tab, and searches your brand name. Both are AI-caused visits with no mechanical trace of the assistant at all.
Aug 2020
Chrome 85 makes strict-origin-when-cross-origin the default referrer policy
Other browsers followed
0 bytes
Referrer sent on any HTTPS-to-HTTP hop, under every modern default
Not truncated — absent
Direct
The bucket every referrer-less visit lands in, regardless of its true origin
An error term, not a channel
Why the number is fuzzy, and why that is honest
You will see the claim that roughly seven in ten AI-referred visits arrive with no referrer. Treat that as an order-of-magnitude estimate rather than a measurement, because of a genuine circularity: to compute the share of AI visits missing a referrer, you need to know which visits were AI-referred — and for the referrer-less ones, the referrer is precisely what you don't have.
Anyone quoting a tight figure is either using a different definition than you assume or has access to a panel you cannot inspect. What is not in doubt is the direction and the rough scale. The four mechanics above are documented, deterministic browser behaviour. Given how assistants actually hand off links — predominantly in-app on mobile — a majority loss is the expected outcome, not a surprising one.
Watch how you read your own Direct line
If Direct traffic at your site has grown meaningfully since 2024 without a corresponding brand campaign, app launch, or email programme to explain it, AI referral is the most probable explanation. It is not proof — Direct absorbs plenty of other things — but it is the first hypothesis worth testing.
What this rules out
Once you accept that the loss is structural, a whole category of proposed fixes becomes obviously useless:
- Configuring your analytics differently. No channel grouping, referral exclusion list, or custom dimension recovers a header that was never transmitted.
- Asking assistants to send more. You have no relationship with them and no leverage. Some now append campaign parameters; that is their choice, revocable at any time.
- UTM tags. You can only tag links you control. You did not write the link — a model did, or the user retyped it.
- Server logs. They record exactly the same absent header, just closer to the metal.
Where each signal survives the four mechanics
A single surviving signal is rarely conclusive on its own; the value is in how they overlap.
| Signal | Survives policy? | Survives in-app handoff? | Forgeable? |
|---|---|---|---|
| Referrer header | Origin only | Often not at all | Yes |
| Campaign parameters in URL | Yes | Yes | Yes |
| User agent string | Yes | Yes | Trivially |
| Webview and client characteristics | Yes | Yes | With effort |
| Cryptographic request signature | Yes | Yes | No |
What actually works
If the referrer is unavailable, detection has to rest on everything else the request carries. Broadly, three families of signal remain:
Explicit markers. Some assistants append a campaign parameter to outbound links — ChatGPT's utm_source=chatgpt.com being the most visible example. This is the cleanest signal available when it is present. It is also entirely at the assistant's discretion, unversioned, and can change without notice, so a system that depends on it alone is one product update away from blindness.
Client characteristics. A visit arriving through an assistant's embedded webview is not shaped like a visit from a desktop browser. The combination of client hints, viewport, platform and navigation timing is a meaningfully different distribution. No single attribute identifies anything — the signal lives in the joint pattern, which is why this is a statistical problem rather than a lookup.
Cryptographic proof. For automated agents rather than human-driven visits, the emerging answer is HTTP Message Signatures: the client signs the request with a key published in a directory you can verify. This is the only signal in the table above that cannot be forged, and it is the direction the whole ecosystem is moving. It is also, today, a minority of traffic.
The honest summary is that no single replacement exists. What replaces the referrer is a combination of weaker signals, each individually inconclusive, evaluated together — and any system doing this should tell you how confident it is and which signal produced the answer, rather than handing you a binary label you cannot audit.
The part that actually costs money
The measurement gap would be a curiosity if AI traffic were marginal. It is not, and there is a specific reason the loss is expensive out of proportion to its volume.
An AI-referred visitor arrives pre-qualified. They did not type a broad keyword and scan ten blue links. They described a problem, received a shortlist, and clicked a recommendation. That is much closer to a warm referral than to a search result, which is why nearly every published study finds AI referral traffic converting above organic search — sometimes far above.
So the traffic sitting in your Direct bucket is not average traffic. It is likely your highest-intent traffic, and you cannot see it, cannot attribute revenue to it, and therefore cannot justify investing in the work that produced it. The budget goes to the channels that report well, not the channels that perform well.
That is the actual cost of a missing header.
Frequently asked
It was misspelled in the original 1996 HTTP specification and standardised that way before anyone noticed. The header is still Referer; the newer policy header that controls it is correctly spelled Referrer-Policy. Both spellings are correct in their own context.
No. Referrer policy is set by the linking page, not the destination. You control what your own outbound links reveal; you have no influence over what arrives.
Crawlers are a separate matter — they identify themselves in the user agent and increasingly sign their requests, so they are usually identifiable. The referrer problem is specifically about human visits sent by an assistant.
Only partially. It covers links the assistant renders and the user clicks directly in a context that preserves the query string. It does nothing for copy-pasted URLs, for a user who searches your brand afterwards, or for any assistant that has not adopted the practice — and it can be withdrawn at any time.
No. Direct legitimately includes bookmarks, typed URLs, some email and messaging clients, and QR scans. It is the right place to start looking, not a conclusion. Growth in Direct that no other channel or campaign explains is the signal worth investigating.
Sources & further reading
- 01Referrer-Policy — HTTP header reference — MDN Web Docs
- 02A new default Referrer-Policy for Chrome — Chrome for Developers
- 03Referrer Policy (W3C Candidate Recommendation) — W3C
- 04rel=noreferrer — link type reference — MDN Web Docs
- 05What Is AI-Referred Traffic? 2026 Benchmarks — Contentsquare