How to see which visitors came from ChatGPT, Claude or Perplexity
Assistant traffic often arrives with no referrer at all. How to detect the visits you can identify, and how to report the rest honestly instead of guessing.
Assistants are now a real source of visits, and most analytics setups cannot see them. The reason is simple: a large share of assistant traffic arrives with no referrer, so it lands in the direct bucket alongside people who typed your address.
The three signals you can actually read
| Signal | Example | How reliable |
|---|---|---|
| utm_source on the link | utm_source=chatgpt.com | High when present |
| Referrer host | chatgpt.com, perplexity.ai, claude.ai | High when present |
| A ref parameter | ?ref=perplexity | Occasional |
Check them in that order. A tag survives a suppressed referrer; a referrer survives a missing tag. Map each host or tag to a clean name: chatgpt, claude, perplexity, gemini, copilot.
Grade the rest instead of guessing
For everything else, record how the visit arrived rather than claiming a source you cannot see. We use six buckets: ai, search, social, referral, direct, and direct_deep. The last one is a direct visit that landed deep inside the content. It is not proof of anything, which is why it is not called AI, but it is where assistant traffic hides, and watching it move next to the ai bucket is informative.
Keep it per visit, not per person
Store the first channel that brought someone, and grade the assistant signal fresh on each visit. A reader who came from ChatGPT on Monday and from a bookmark on Friday did not arrive from ChatGPT on Friday. Stamping it on the device forever inflates the number.
Two things this cannot see: native app clicks that carry nothing, and the crawlers themselves, which never run your script. For the crawler side, read your CDN's bot reports and make sure robots.txt lets them in.
Questions
Does ChatGPT send a referrer?
Links opened from the ChatGPT website often carry a referrer or a utm_source parameter naming it. Links opened from native apps frequently carry nothing, so they look like direct visits.
Can analytics see AI crawlers like GPTBot?
No. Crawlers do not run JavaScript, so client-side analytics never records them. Crawler visits show up in server or CDN logs instead.
What is a good proxy for invisible assistant traffic?
Direct visits that land deep in the site, on a specific guide or product rather than the homepage. People rarely type those URLs from memory. Report that bucket separately rather than calling it AI.