blog · Jul 26, 2026
how to track ChatGPT referral traffic
Arjun Varma · maker of smolanalytics
ChatGPT sends real traffic, but most of it never shows up as chatgpt.com. here's why it gets stripped of its referrer and bucketed as direct, and the steps that actually get you a number you can trust.
to track ChatGPT referral traffic, count visits whose referrer hostname is chatgpt.com (or the older chat.openai.com), group them into their own channel instead of leaving them buried in a referrers list, and put ?utm_source=chatgpt on any links you control. a large share of ChatGPT clicks arrive with no referrer at all and land in "direct," so whatever number you get is a floor, not a total.
why ChatGPT traffic is invisible in most analytics
three separate things go wrong, and they stack.
the referrer often isn't sent. a browser only passes a referrer when a real page navigation happens and the sending page allows it. clicks inside the ChatGPT desktop and mobile apps are not page navigations in that sense, and a lot of the time the destination sees nothing. same story when someone reads an answer, copies your URL, and pastes it into a fresh tab, which is extremely common behaviour when the answer is a research summary the person wants to check later.
what's left gets bucketed as direct. analytics tools file a visit with no referrer under "direct / none," which is the same bucket as someone typing your domain from memory. so ChatGPT traffic gets mixed in with your existing brand traffic, where it is functionally unrecoverable.
the visits that do carry a referrer are one row in a long list. chatgpt.com sits between news.ycombinator.com and some scraper domain, and nothing groups it with claude.ai or perplexity.ai. even when the data is right there, you don't see a channel, you see noise.
there's a fourth wrinkle worth naming: some of the "ChatGPT traffic" people get excited about isn't a person at all. OpenAI runs several crawlers, and one of them fetches your page live while a user is asking a question. that fetch can look like a hit if you're reading raw server logs. more on separating those below and in what to measure once AI is sending you traffic.
what each ChatGPT surface actually sends
| surface | referrer you usually see | where it lands by default |
|---|---|---|
| chatgpt.com in a browser, link clicked | chatgpt.com | referrals, one row among many |
| ChatGPT desktop or mobile app | usually none | direct |
| URL copied out of an answer, pasted in a new tab | none | direct |
| older sessions / cached links | chat.openai.com | a separate referral row you'll miss |
| ChatGPT-User fetching your page to answer a question | not a browser visit | server logs, or your analytics if you count bots |
this table is the whole problem in one view. the only rows you can attribute cleanly are the first and the fourth, and the fourth is a different hostname most people forget to include in their rule.
how to actually measure it
- decide what counts as ChatGPT. at minimum:
chatgpt.comandchat.openai.com. if you want the wider AI channel, addclaude.ai,perplexity.ai,gemini.google.comandcopilot.microsoft.com. keep ChatGPT breakable out on its own so you can see it separately. - make it a channel, not a referrer row. in GA4 this is a custom channel group with a rule on the referrer hostname. in most other tools it's a saved segment or a filter. the point is that it becomes a line you look at every week rather than something you have to go digging for. smolanalytics detects these hostnames and reports them as their own channel with no rule to write, which is one less thing to maintain.
- tag the links you control. anywhere you paste a URL into a conversation, a doc that gets quoted, a README, a changelog, add
?utm_source=chatgpt&utm_medium=ai. this is the only way to recover clicks that would otherwise be referrer-less. it covers a small slice, but it's a clean slice. - split crawlers out from humans. filter out requests from
GPTBot,OAI-SearchBotandChatGPT-Userby user agent before you report a visitor number. crawler hits mean your page is being read by the model, which is useful, but it is a different metric from a person arriving. - watch direct alongside it. if your ChatGPT channel grows 3x and direct grows at the same time with no campaign to explain it, that's your undercount showing itself. the two moving together is the signal you're looking for.
- break the channel down by landing page. the pages ChatGPT sends people to are the pages it's citing. that list is more actionable than the total, because it tells you what kind of writing gets lifted.
- check conversion separately. don't assume AI traffic behaves like search traffic. measure it as its own cohort in your funnel before you decide the channel is worth more effort.
the honest part: this number is imperfect
it's worth being blunt, because a lot of GEO content is not.
referrer data was never designed for attribution. it's a courtesy header that the sending page can suppress, that browsers trim by policy, and that apps skip entirely. UTM parameters exist precisely because referrers can't be trusted alone, and AI surfaces are the least referrer-friendly traffic source we've had since people started sharing links over messaging apps.
so treat your ChatGPT number as a directional floor. it's genuinely useful for trend (is this going up month over month), for page-level insight (what gets cited), and for quality comparison (does this traffic convert better or worse). it is not useful as a precise share-of-traffic figure, and anyone selling you one is guessing.
server logs help at the margins. they'll show you crawler activity that no client-side script ever sees, which tells you whether your pages are being fetched for answers at all. that's a leading indicator: crawler hits usually come before referral clicks. but logs won't recover a missing referrer either, so they don't fix the direct bucket.
what to do with it once you have it
the number is a scoreboard for whether your content is liftable. content that gets quoted by answer engines tends to share a shape: a direct answer near the top, question-shaped headings, tables, short self-contained sections. if your ChatGPT channel is flat while you publish steadily, the content is probably fine but not structured to be extracted.
the second use is deciding where to spend. if AI-referred visitors sign up at twice the rate of cold search, that changes what you write next. break the channel down by landing page and by conversion, then write more of whatever won. the fuller version of this is in how to see how much traffic ChatGPT, Claude, and Perplexity send you, and if you want the definitions straight, attribution covers why last-touch numbers move around.
FAQ
does Google Analytics track ChatGPT traffic?
partly. GA4 shows chatgpt.com as a referral source when a referrer header exists, but it does not group AI engines into their own channel by default, and it files referrer-less ChatGPT clicks under direct. you need a custom channel group to see it as a channel, and you'll still miss the app clicks.
why does ChatGPT traffic show up as direct?
because clicks from the ChatGPT apps, and URLs copied out of answers, arrive with no referrer header. no referrer means the visit gets bucketed as "direct / none," alongside people typing your domain. UTM-tagging links you control is the only reliable fix, and it only covers links you place yourself.
can I tell ChatGPT's crawler apart from a real visitor?
yes, by user agent. GPTBot, OAI-SearchBot and ChatGPT-User identify themselves in request headers. filter them out of visitor counts and track them separately as a "are my pages being read" metric.
how much ChatGPT traffic am I actually missing?
nobody can tell you a reliable percentage, and the honest answer is that it varies by audience and device mix. the useful move is to watch your measured AI channel and your direct channel together, since unexplained direct growth is usually the missing half.
smolanalytics tracks chatgpt.com, claude.ai and perplexity.ai as their own channel out of the box, and you can ask "how much traffic came from AI this week, and did it convert?" in plain english through MCP from your own editor. see what's included and pricing, or add it to an app you built with AI.
smolanalytics is the analytics that tells you what to fix. try the cloud or self-host free.