How to Track ChatGPT and Perplexity Traffic in GA4
GA4 has no button labeled AI traffic. Here is how to isolate ChatGPT and Perplexity referrals yourself, and why the number you get will always undercount.
Somebody landed on your site last week after asking ChatGPT a question. You don't know that yet, because GA4 doesn't have a report that says "AI traffic." It has referral traffic, and inside that bucket, mixed in with backlinks from forums, directories and news sites, sit a handful of sessions that started with someone asking a chatbot a question and clicking a link in the answer. Finding those sessions is a short exercise once you know where to look. Trusting the number you find as complete is the mistake.
Why there's no dedicated channel for this
GA4's default channel grouping sorts sessions into buckets like Organic Search, Direct, Referral and Paid Search using rules about source and medium. Those rules predate ChatGPT and weren't written with it in mind. A click from an AI assistant's answer arrives carrying a referrer header, exactly like a click from any other website, so GA4's default logic files it under Referral, next to a link from a client's blog or a supplier directory. There is no built-in rule that says "if the referring hostname is chatgpt.com, treat this differently." You have to build that distinction yourself, and most people never do, which is why this traffic sits invisible in plain sight.
The mechanism, stated plainly
When a browser follows a link from one page to another, it can send the address of the page it came from in the HTTP referrer header. Perplexity's answer interface does this. ChatGPT does it when a citation link is clicked from a browsing-enabled answer. Gemini does it from its own results surface. Claude's web interface does it when a source link inside a conversation is clicked. GA4 reads that header, extracts the hostname, and logs it as the session source. That is the entire mechanism: no AI-specific integration on Google's side, no special tag to install, just an ordinary referrer being recorded the same way it always has been.
The hostnames worth watching for right now include chatgpt.com, chat.openai.com, perplexity.ai, claude.ai, gemini.google.com and copilot.microsoft.com. Write that list somewhere you'll actually revisit. These products rename domains, ship new client apps and change how their in-app browsers behave, and a list that was accurate when you compiled it will drift out of date without any announcement.
Where to find it in GA4
Open Reports > Acquisition > Traffic acquisition. The default table groups sessions by "Session default channel group," and that's the report most people stop at, which is exactly the wrong place to stop. Switch the primary dimension to Session source / medium. Now you're looking at raw hostnames instead of pre-sorted buckets, and you can scan the list for the domains above.
For something reusable, build it in Explore > Free form: set the dimension to Session source, add a filter where source matches a regular expression such as chatgpt|openai|perplexity\.ai|claude\.ai|gemini\.google|copilot\.microsoft, and set sessions or engaged sessions as the metric. Save the exploration and check it on a schedule. That's the whole technique: no plugin, no paid add-on, just a filter applied to a dimension GA4 already collects for every session.
A second place worth checking, and one people skip, is the Direct channel. This is where some AI-assistant clicks land when the client strips the referrer, indistinguishable from someone typing your URL from memory. You cannot isolate them from genuine direct traffic after the fact. What you can do is notice: if Direct sessions to one specific landing page jump for no reason you can otherwise explain, an AI-referred spike is one of the plausible causes worth checking against the timing of anything you published.
Why this will always undercount
Three things eat the referrer before it reaches GA4, and none of them are within your control:
- In-app browsers. When someone opens a chatbot's mobile app and taps a citation, some clients open the link inside a stripped-down in-app browser that doesn't pass a clean referrer, and the session lands in Direct instead of Referral.
- Copy and paste. A user who reads an AI answer, copies the URL, and pastes it into a new tab generates no referrer at all. GA4 has no way to know a chatbot was ever involved in that visit.
- Answers with no link. This is the largest gap, and it isn't a tracking bug, it's a structural fact about how these models work. When a model answers from what it absorbed during training rather than by browsing the live web, there is no source URL to click, because the model isn't reading your page at that moment, it's recalling a pattern learned from it. No link means no click means no referral, ever, for that particular mention.
Add those together and the honest way to describe any figure you isolate with this method is a floor, not a total. Real AI-referred traffic is very likely higher than what this technique surfaces, essentially never lower, and there is no way to close that gap by refining the hostname list further.
What this method can't tell you
Even the traffic you do manage to isolate only covers the fraction of the story where somebody had already clicked. It doesn't tell you why a model named your product in one answer and a competitor in the next, because you can't see the prompt, the model's other candidates, or why it picked one name over another. It doesn't tell you how often you're mentioned by name with no link attached at all, which, per the point above, is a large and structurally invisible share of AI-assistant answers. And it can't tell you whether the description attached to your name was accurate, favorable, or simply wrong, because none of that survives as a browser event to log.
That's the actual boundary between the two disciplines. Referral analysis in GA4 is downstream measurement: it counts what happened after a model had already decided to mention you and link out. Visibility measurement sits upstream of that: it asks whether, and how, and in which language, you get mentioned in the first place, link or no link. PSentry works on the upstream side, querying ChatGPT, Claude, Gemini and Perplexity directly and recording what each one says about a brand, independent of whether a browser or a click is ever involved. It doesn't read your analytics and it isn't a substitute for the GA4 report above; it answers a question GA4 structurally can't, which is what's being said in all the answers nobody ever clicked through from.
Run both if the traffic matters to you and the underlying visibility does too. The referral data tells you when upstream visibility turned into an actual visit. The visibility data tells you what's happening in the much larger set of answers that never produced a click to measure at all.
Frequently Asked Questions
Does GA4 have a built-in "AI" or "LLM traffic" channel?
Not in the default channel grouping shipped by Google. You can define a custom channel group that reclassifies known AI-assistant hostnames out of Referral and into a group you name yourself. That's more durable than a saved Explore report, because it applies to how sessions get labeled going forward, not just to a report you have to remember to open.
What about Microsoft Copilot specifically?
Copilot's referral behavior depends on the surface it's accessed from: the Windows app, the Edge sidebar and the web version each route differently, and some paths pass through a Microsoft redirect domain before reaching your site. If unfamiliar Microsoft-owned hostnames show up in your source list, check each one individually rather than assuming what it is.
Can Google Search Console show me this instead?
No. Search Console reports on Google Search performance, impressions and clicks tied to Google's own search results and AI Overviews. It has no visibility into ChatGPT, Claude or Perplexity, because those aren't Google properties and don't report data back to it.
I use a privacy-focused analytics tool instead of GA4. Does the same technique apply?
Yes. The underlying mechanism is identical: any tool that logs a referrer field, whichever one you use, will show the same hostnames in the same way. Look for whatever that tool calls its referrer or source report and apply the same hostname list against it.
Should I report this number as "our AI traffic" to anyone?
Only with the undercount caveat attached. Presenting a referral-filtered figure as complete AI-driven traffic overstates your confidence in a number that structurally excludes copy-pasted links, in-app browser clicks, and every mention that carried no link to begin with.
Will this list of hostnames still be accurate later?
Assume not indefinitely. New client apps, redesigned browsing features, and assistants that don't exist yet will change which hostnames appear in your referral data. Treat the list as a starting point to revisit periodically, not a fixed rule you set once and forget.