·5 min read
ChatGPT referrals are not Direct
People who click a citation inside an assistant often arrive with a stripped referrer. The rest show up as chatgpt.com, perplexity.ai, or utm_medium=ai_search. Filing either under Direct hides a channel.
human_via_aiAttribution

A growing share of “Direct” is not a bookmark. It is a person who asked ChatGPT, Claude, Perplexity, Gemini, Copilot, Grok, or DeepSeek a question, then followed a link. Some assistants pass a referrer host. Some pass utm_medium=ai_search. Many pass nothing. Privacy-first tools that only group by referrer host put the last group in Direct and the first group next to Reddit.
Vector 5 treats that arrival as its own actor: human_via_ai. It is still a person — counted with the same daily-rotating hash as any other browser visitor — but the channel is named. Every report can filter to it.
How we recognise an assistant click
- Referrer host: chatgpt.com, perplexity.ai, claude.ai, gemini.google.com, copilot.microsoft.com, grok.com, chat.deepseek.com.
- UTM: utm_medium=ai_search or ai-assistant, and utm_source values such as chatgpt or perplexity.
- We never invent a source when the referrer is empty. The true number is likely higher. Guessing would make the dashboard look smarter than the data.
Why the actor is not a source
Sources still exist. ChatGPT and Perplexity remain rows in the source report. The actor field answers a different question: was this a person, a person sent by a model, a crawler, a headless agent, or a generic bot? Conversion rates stay honest because Playwright sessions never sit in the same bucket as Safari.
Direct is what you call a channel when you have given up naming it. Assistant traffic has a name.

