AI traffic analytics is the job of measuring the visits that AI chatbots like ChatGPT, Claude, Gemini and Perplexity send to your website. You do it in two places: your analytics, where GA4 now has a native AI Assistant channel and a custom channel group catches the referrers it misses, and your server logs, where the AI crawlers that read your pages before any visit show up by name. The honest part is that most AI-influenced visits arrive with no referrer at all, so every number you measure is a floor.
There’s a half of this the traffic numbers never see, which is everything that happened before the click. An AI visibility platform measures that side: the searches an assistant runs before it answers, the pages it reads, and whether it puts you forward as a pick. A visit tells you someone came, and the answer tells you why.
What counts as AI traffic
AI traffic is really three different things, and most arguments about the numbers come from mixing them up.
- A referred visit: someone clicks a link in a ChatGPT, Perplexity, Gemini or Copilot answer, and your analytics sees a referrer such as chatgpt.com. This is the only one that’s genuinely traffic.
- A crawler hit: GPTBot or ClaudeBot requests a page to read it. That’s a machine reading your page, and it never appears in GA4 because crawlers don’t run JavaScript.
- A dark visit: the person reached you through an assistant, but the referrer was stripped along the way, so the session lands in Direct or organic with nothing to say where it came from.
Vendor pages count all three, which is one reason their numbers don’t agree. So when someone tells you a site gets a few per cent of its visits from AI, ask which of the three they counted. The first is the one you measure in your analytics, the second in your logs, and the third rides along as the part you have to estimate.
How to see AI traffic in GA4
To track AI traffic in GA4 you get a native channel for referred visits, and a custom channel group catches the sources its definition misses.
Google’s default channel group now includes an AI Assistant channel. The medium is exactly ai-assistant, and a session lands there when its referrer matches Google’s list of AI assistant sources, which the doc describes as “sources like ChatGPT, Gemini, Deepseek, Copilot, or Grok”. That same definition excludes Google’s AI Overviews and AI Mode, so clicks from those stay inside ordinary organic.
The list itself lives in a spreadsheet Google maintains rather than on the doc page, and it can change without you knowing. So add a custom channel group with one channel whose session source matches the AI referrer domains:
chatgpt.com|claude.ai|perplexity.ai|gemini.google.com|copilot.microsoft.com|grok.com|deepseek.com
GA4 puts each session into the first channel whose definition it matches, so drag your AI channel above Referral in the group, or AI referrers will match Referral first and never reach your rule. And custom groups apply to your reports retroactively, so past sessions re-sort into the new channel once the group is saved, as far back as your property’s data retention goes. If you’d rather not touch property settings, a GA4 Exploration does the same job: filter on session source with the same regex, and you get the split without saving anything.
When to look: the day after a big AI-heavy piece names you, and the first week after a launch or PR mention that’s getting pasted into chatbots. Let’s say you get 40 visits a month from chatgpt.com. That’s a floor, but a real one, and a jump to 400 the day after a mention tells you something a monthly average hides.
One trap worth knowing: tagging links with a UTM source and no medium. Testing documented in NiceLookingData’s write-up on AI traffic in GA4 found those sessions land in Unassigned, which is worse than leaving the link untagged and letting the referrer do the work.
Why most AI traffic hides as direct
ChatGPT traffic often shows up as direct in GA4 because the referrer gets stripped before your analytics ever sees it, and there’s no reliable way to separate those sessions afterwards.
Three mechanisms do the stripping, and none of them is yours to fix.
- Mobile apps often drop the referrer before the browser opens, and a lot of AI use happens in apps.
- ChatGPT’s in-app browser sandboxes the session so the visit arrives as a plain request from the device, which NiceLookingData’s write-up documents.
- People paste links, which arrive with no referrer at all.
So the referral number in your AI channel is a floor. The real AI-influenced share of your traffic is bigger and partly unknowable, and the percentages circulating on this are one vendor’s post quoting another’s, so treat any of them as direction only. Google’s own AI surfaces add a twist: clicks from AI Overviews and AI Mode are indistinguishable from ordinary organic in GA4, which is why the AI Assistant channel excludes them, and why Search Console is the only place those surfaces show up.
What crawler logs show that analytics can’t
Your server logs record every AI crawler hit by name, and the name tells you what the request was for.
Crawlers never show in GA4, but they’re all over your logs, and if you’re on a CDN you likely have a bot report already. Cloudflare’s AI Crawl Control metrics tab, for instance, shows which crawlers are hitting your content and how often.
OpenAI runs four named agents, and the differences matter. GPTBot is the training crawl, gathering content for future models, and blocking it doesn’t touch your presence in ChatGPT’s answers. OAI-SearchBot is the one that surfaces websites in ChatGPT’s search results, so blocking it means your pages stop appearing in those answers, navigational links aside.
And ChatGPT-User is a live fetch behind a user’s question, which OpenAI says isn’t used to crawl the web in an automatic way, so robots.txt may not apply. The fourth, OAI-AdsBot, checks pages submitted as ads.
Anthropic and Perplexity follow the same pattern. ClaudeBot collects content that could contribute to model training, Claude-User fetches a page when a person asks Claude something, and Claude-SearchBot builds the search index behind Claude’s answers. PerplexityBot surfaces sites in Perplexity’s search results, and Perplexity-User fetches a page at a user’s request, a fetch Perplexity says generally ignores robots.txt.
Crawler hits are a leading indicator of retrieval rather than demand, and that’s why operators read them. The retrieval that decides whether there’s ever a visit happens before the visit, and at a scale most people don’t expect: our Credibility Layer study recorded 200 reasoning sessions that ran 5,933 searches and produced 1,982 citations, and every recommendation came from a 30-search credibility audit. The lines in your log are the visible edge of that work.
There are two things logs won’t tell you. A crawl isn’t a read and it isn’t a visit, so a busy GPTBot week says nothing about demand. And no log shows whether an assistant put you forward as a pick or named you once in passing, which is the part buyers feel.
What Search Console adds
Search Console adds the demand side: a generative AI performance report that counts impressions from AI Overviews and AI Mode.
Google rolled it out to all sites as of August 31, 2026, and it counts how many times links to your pages were shown in those features, by page, country and device. There are no clicks and no queries in it, so it won’t tell you what someone searched for.
Pair it with GA4 knowing they measure different things: this report covers Google’s AI surfaces only, and clicks from those surfaces hide inside ordinary organic, so for Google’s AI the demand never lines up with the visits. GA4’s AI channel covers the other assistants, which is where your measured AI visits come from.
Tools that track AI traffic
AI traffic tracking tools come in two kinds: ones that parse your GA4, and ones that run server-side.
GA4-based tools give you a dashboard someone else maintains, with per-platform splits and landing-page reports, and no new tracking to install. Vetrics works this way: it integrates with your GA4 property to identify traffic from AI platform referrers. That means it sees what GA4 sees, and GA4 never sees the referrer-less visits, so the blind spot survives.
Its plans start at $49 a month, or $42 a month billed annually. Webskeet runs on GA4 too and shows visits broken down by AI source, with a free plan. Its paid plans start at $69 a month.
Server-side tools sit at the other end. Senthor installs at the server or the edge and intercepts requests before they reach your application, so it can log AI crawler hits and human visits separately and catch some of the traffic GA4 misses. It detects 50-odd bots, from GPTBot to Bytespider, and it doesn’t publish a USD price, so ask before budgeting.
Before paying for any of them, check whether it actually solves the referrer problem or just parses GA4 and inherits the blind spot, whether it separates crawler hits from human visits, and whether the price is published, so you can weigh it against the free setup above.
What the visit number can’t tell you
A spike in visits from ChatGPT tells you an assistant sent someone, and nothing about whether the assistant recommends you or just names you in passing.
A visit count doesn’t say which buyer question produced the visit, or who else was in the answer. Let’s say ten visits come from a buyer question you’re winning and a hundred from a passing mention: the second looks better in GA4 and is worth less. Analytics can’t tell those apart.
Omnipresence covers the other half. It tracks whether ChatGPT, Claude, Gemini and Perplexity recommend you or a competitor for the questions your buyers actually ask, with each question asked many times so the number doesn’t swing on one answer, and it shows the searches each assistant ran and the pages it read before deciding. It doesn’t measure site traffic, so you keep GA4; the two numbers sit next to each other, visits on one side and recommendations on the other.
The limits are what you’d expect: four assistants, no AI Overviews or AI Mode, and you bring your own model key and pay the providers at list price.
None of this is perfect, and none of it needs to be. Set the channel group up once, and from then on you can say which part of your traffic you can attribute to AI, and which part you’re still estimating.