“How much of our traffic comes from Perplexity?” sounds like one question with one report behind it. It is really eight questions, one per assistant, because each AI platform leaves a different trace when it sends you a visitor. Some arrive as ordinary referrals you can filter in two minutes. Some carry a tag. Google’s own AI answers are folded into organic search, and one or two leave nothing in your analytics at all.
Checking them all the same way is where most of the confusion comes from. Why AI traffic hides in “direct” in the first place has its own post. This one is the per-platform reference: what each assistant passes, where Google Analytics 4 files it, and what to check when it passes nothing.
The short version
Checked in September 2026. The tag and server columns come from each vendor’s own documentation. The referrer column is what each chat site’s referrer policy allowed when we checked it, which is an observation rather than a vendor promise, and it can change without notice.
| Platform | Referrer it sends | Tag on the link | Where GA4 files it | Trace on your server |
|---|---|---|---|---|
| ChatGPT | chatgpt.com |
utm_source=chatgpt.com |
AI Assistant | ChatGPT-User |
| Perplexity | perplexity.ai |
None documented | Referral, unless Google’s list includes it | Perplexity-User |
| Gemini | gemini.google.com |
None documented | AI Assistant | No documented fetcher |
| Google AI Overviews and AI Mode | Google Search | None | Organic Search | None separate from Google’s search crawler |
| Microsoft Copilot | copilot.microsoft.com |
None documented | AI Assistant | Bingbot (no separate fetcher) |
| Claude | Not documented | None documented | Direct, when nothing is passed | Claude-User |
| DeepSeek | Not documented | None documented | AI Assistant, when a referrer arrives | Not documented |
| Grok | grok.com |
None documented | AI Assistant | Not documented |
The referrer column describes the web client. No vendor documents what its native apps send, and apps and in-app browsers can open a link with no referrer at all, which is why the tag and the server-side trace matter more than they look.
Even when a referrer does arrive, it is only the domain. Every chat site we checked sets a policy that sends chatgpt.com or perplexity.ai to another site and strips the rest of the address, so you can see which assistant sent a visitor but never which conversation or question did. Anyone promising to show you the prompts behind your AI traffic from analytics alone is promising something the browser does not send.
One report, and why to filter by source
Every check below starts in the same place. In GA4, open Reports, then Acquisition, then Traffic acquisition, and switch the primary dimension to Session source / medium. Each platform that passes a referrer shows up there as its own row.
Since May 2026, GA4 also has an AI Assistant channel that groups this traffic under the medium ai-assistant. Google describes it as covering “sources like ChatGPT, Gemini, Deepseek, Copilot, or Grok” and does not publish the full list, so a platform it has not added yet falls back into Referral. The channel is a good summary line. For a question about one platform, filter on the source instead, because the source is what the platform actually sent.
ChatGPT
ChatGPT is the easiest to check once you know it tags its links. OpenAI adds utm_source=chatgpt.com to the URLs it sends people to, and the web client passes chatgpt.com as the referrer as well. GA4 files both under the AI Assistant channel.
The tag is the part that does the work. When someone opens a cited link from a phone app or an in-app browser that drops the referrer, the UTM still rides on the URL, so filtering on the source chatgpt.com catches visits that a referrer-only report would have filed under direct. What it cannot catch is a link someone copied out of an answer and pasted into a new tab. That visit arrives clean, and no report recovers it.
Perplexity
Yes, you can see most of your Perplexity traffic, and it takes one filter. The web client passes perplexity.ai as the referrer, so in the Traffic acquisition report, filter the session source for perplexity and the rows are there.
The catch is where they sit. Google’s description of its AI Assistant channel does not name Perplexity, so check Referral as well as the AI line rather than assuming the channel caught it. Perplexity does not document a UTM on its links, so a visit from an app that drops the referrer has nothing else to identify it and lands in direct.
When Perplexity reads your page to answer a question, the request reaches your server as Perplexity-User, whether or not anyone clicks. That fetch is the trace to count for the answers that never send a visit (more on that below).
Gemini, and Google’s AI Overviews and AI Mode
These two get confused constantly, and they behave in opposite ways.
Gemini, the assistant, passes gemini.google.com as the referrer and is on the AI Assistant channel’s list. Filter the source for gemini and you have it.
AI Overviews and AI Mode are part of Google Search, and Google counts them as ordinary search. In GA4 a click from an AI Overview is an Organic Search session, indistinguishable from a click on a blue link, and no filter separates the two. Search Console now gives you half of the picture: its generative AI performance report, rolled out to all sites in August 2026, shows impressions in AI Overviews, AI Mode, and Discover by page, country, and device. It does not show clicks or queries yet. On our own site, the report showed more than 80% of AI feature impressions landing on the home page rather than on any article, and no click column beside any of them. So you can see how often your pages appear in Google’s AI answers, and you cannot see how many visits those appearances sent.
Copilot, Claude, DeepSeek, and Grok
Copilot passes copilot.microsoft.com and is on GA4’s list. Its most useful data lives outside GA4, though. Bing Webmaster Tools added an AI Performance report in February 2026 that shows how often Copilot and Bing’s AI summaries cite your pages, which pages, and the queries they grounded on. Like Search Console’s report it counts citations, not clicks, and it is still labelled a preview. Microsoft runs no separate fetcher for Copilot; the requests come from Bingbot.
Claude is the least predictable. Anthropic does not document whether claude.ai passes a referrer, and Google’s description of the AI Assistant channel does not name it. Filter the source for claude.ai to catch what does come through, and expect the rest in direct. The dependable trace is on your server, where its user fetcher identifies itself as Claude-User.
DeepSeek publishes no documentation about referrers, tags, or crawlers. Google does list it in the AI Assistant channel, so a DeepSeek visit that arrives with a referrer is grouped there automatically. Filter the source for deepseek to see it on its own. If that returns nothing, the honest reading is that DeepSeek either sent no visits or sent them without identifying itself, and nothing on your side can tell those apart.
Grok passes grok.com from its website and is on GA4’s list. xAI publishes nothing about its crawlers, and links opened inside X’s app are undocumented.
When a platform passes nothing
For visits that arrive without a referrer, for app traffic, and for the answers that cite you without anyone clicking, analytics has nothing to show. Two things still do.
A custom channel group. GA4’s channel list changes on Google’s schedule, not yours. In Admin, under Data display, create a custom channel group with a rule on session source matching this regex, and move that rule above Referral, because GA4 files each session under the first channel it matches. Every assistant that passes a referrer then lands in one line, whether or not Google has classified it yet:
chatgpt\.com|chat\.openai\.com|perplexity|gemini\.google\.com|copilot\.microsoft\.com|claude\.ai|deepseek\.com|grok\.com
The fetch count on your server. When an assistant reads your page to answer a question, the request arrives with its user fetcher’s name: ChatGPT-User, Perplexity-User, Claude-User. Those appear in your access logs whether anyone clicks or not. If your host gives you no logs, Cloudflare’s AI Crawl Control shows self-identifying AI crawlers on every plan, though the free plan keeps only the past 24 hours, so it is a spot check rather than a trend.
Before you trust that count, check who is really asking. A user-agent is a line of text anyone can copy. We ran into this building our citeability checker, which requests a page as each AI fetcher to see whether it gets through. We dropped Google-Extended from it, because the only way to send that identity is a Googlebot string from a datacenter address, and CDNs refuse that as a fake Googlebot. The edge already treats a user-agent as a claim to verify, and your log reading should too. OpenAI, Perplexity, and Anthropic each publish the addresses their fetchers use (OpenAI, Perplexity, Anthropic); a request that claims the name from somewhere else is a scraper wearing it.
Write down what you can’t see
The last step is the one teams skip. For each platform, record which of three states it is in: visible (a referrer or tag you can filter), counted but not clicked (impressions in Search Console or Bing, fetches in your logs), or invisible. That list is your baseline, and it stops the invisible rows from being read as zeros. A zero from Claude in GA4 may only mean Claude did not identify itself, not that nobody used it.
Setting that baseline per platform, and checking it again after changes land, is what our AI search visibility audit does, and keeping the read going month to month is the work Monitor exists for. If every row reads zero, including the server-side ones, the question is no longer attribution. An assistant that cannot read your page will never fetch it, and the free checker tells you in a few seconds whether that is the problem.