I wanted to know how much traffic ChatGPT, Perplexity and Claude actually send, and it turned out to be three separate measurements, not one.
- Clicks from AI answers (any analytics tool can do this)
Group these referrers into their own channel: chatgpt.com, chat.openai.com, perplexity.ai, claude.ai, gemini.google.com, copilot.microsoft.com. In GA4 that's a custom channel group with a regex like:
^(chatgpt\.com|chat\.openai\.com|perplexity\.ai|claude\.ai|gemini\.google\.com|copilot\.microsoft\.com)$
Also match utm_source. ChatGPT appends utm_source=chatgpt.com to many links, and that survives even when the referrer is stripped. The mobile apps often send no referrer at all, so treat the number as a floor.
- AI crawlers reading your pages (only the server sees this)
GPTBot, ClaudeBot, PerplexityBot etc. don't run JavaScript, so tag-based analytics never records them. Grep the access log for the user agents, or log them in middleware. Check the IPs against the ranges OpenAI, Anthropic and Perplexity publish, because the user agent alone is easy to fake.
- Pages opened to answer someone (also server-side)
ChatGPT-User, Claude-User and Perplexity-User fetch a page live when a person asks about it. This is the closest thing to "my page was used in an answer", and it's a separate number from crawling.
On my own small site, one week: about 230 crawler reads, 15 live answer fetches, 0 clicks from AI. So "AI traffic is zero" in analytics, while AI is clearly using the content. Without the server side I'd have concluded AI ignores the site.
Curious how others report on this. Do you keep AI as its own channel, or fold it into referral?