voices quoted
Seeing Zero AI Traffic? You May Be Reading the Wrong File
Your analytics and your server log count different things, and both mislead on the first read. How to run each check free, and why most of it is you.

The short version
Your server log records every AI crawler that fetches a page, by name. GA4 records only the people an assistant sent over, which is almost nobody, because most mentions carry no link to click. Both files are free and already running. Expect a share of your first reading to turn out to be you — and expect neither check to prove you were named, only that you were reachable enough to be read.
Key highlights
- 1 Analytics counts the people AI sent you; your log counts the engine itself
- 2 A mention with no link produces no click, so analytics never records it
- 3 One consultant logged 890 AI visits a day that GA4 reported as zero
- 4 GA4 now files assistants under an AI Assistant channel, not buried in Referral
- 5 Expect tens of sessions a month, not thousands, and a zero is common
- 6 One grep line reads your access log for every AI crawler by name
- 7 A zero in the log usually means blocked, not unknown
- 8 Round numbers and bursts matching your working hours are you, not a crawler
- 9 Anything can write GPTBot into a user agent — verify the published IP ranges
- 10 Eight of eight AI systems said a retrieved page is not a cited one
Your access log already knows. Every time GPTBot, ClaudeBot or PerplexityBot fetches a page, your server writes a line with the name attached. GA4 knows the other half — the people an assistant sent over after naming you.
Two files. Both free, both already recording, and neither switched on by default, which is why almost nobody has opened them.
Read either one cold and you will get a wrong number. Your log counts every time you loaded your own page while testing. GA4 counts almost nothing, because most mentions carry no link to click. They fail in opposite directions, neither announces it, and knowing which way each one lies is the whole difference between a check and a story you tell yourself.
A lot of WordPress site owners I talk to don't know that GA4 can already show some traffic coming from AI tools like ChatGPT, Perplexity, Claude, Gemini. The problem is that the data is a little buried.
That is a developer who went on to build a checker for this, and he is right about the starting point: the data is already in your account. It is buried, not missing. Knowing what is in there is what makes any later decision — including buying something — an informed one rather than a guess.
What Can I Actually See for Free?
You can see two different things, and confusing them is the most common mistake. Your analytics shows people who arrived from an AI tool. Your server log shows the AI tool itself arriving. They answer different questions and they disagree constantly.
| What it records | What it proves | Where it lives | |
|---|---|---|---|
| Analytics | a person landed on your site after clicking inside an AI answer | someone read about you and came | already in your GA4 |
| Server log | a bot fetched one of your pages | an engine read your page | already on your hosting |
A mention with no link produces no click, so it produces nothing in analytics at all. What an AI mention is covers why that gap exists. Treat analytics as a floor, not a measurement: everything it shows is real, and most of what happened is missing from it.
One consultant put the size of the gap in front of a client:
Pulled a client's server logs this week. GPTBot: 400+ visits. ClaudeBot: 180. PerplexityBot: 90. Meta-ExternalAgent: 220. 890 AI visits per day. His Google Analytics showed zero of them.
One client's site, not a benchmark — but the shape is the point. Analytics showing nothing is not the same as nothing happening.
The server log is the opposite. It is nearly complete and almost entirely bots, so the work there is subtraction rather than addition.
How Do I Find AI Traffic in Google Analytics?
Look at where your sessions came from and read the source names. GA4 already records them, and it has stopped burying them: the assistants now arrive under a channel of their own, AI Assistant, carrying a medium of ai-assistant. On older properties the same visits sit inside general referral traffic instead, so it is worth knowing both places to look.
- Open Reports, then Acquisition, then Traffic acquisition. This is the report that lists where sessions came from.
- Look for the AI Assistant channel. If it is there, you are done looking. If it is not, switch the dimension to Session source / medium and check inside Referral, where these visits used to land.
- Read the source column for
chatgpt.com,claude.ai,perplexity.ai,gemini.google.com,copilot. Each engine arrives under its own hostname. - Widen the date range to 90 days. These are small numbers. A 7-day window on a small site frequently shows zero and tells you nothing.
- Write down the number and the date you checked. One reading is not a trend.
What you get is a count of people who clicked through from an AI answer. It is genuinely useful and it is genuinely small — for most businesses this is tens of sessions a month, not thousands, and a zero here is common enough that it should not frighten you on its own.
The number is worth having anyway, because it is the only one of the two that represents actual human beings.
How Do I Read My Server Logs for AI Bots?
Search your access log for the bot names. Every request your server answers is written to a log file with the visitor's user agent string attached, and AI crawlers announce themselves in it by name.
This is the check almost nobody runs, because the file is not somewhere you would think to look and nothing prompts you to open it. It is also the only one of the two that sees an engine that never sent you a visitor — which is most of them.
The names worth grepping for:
GPTBotandOAI-SearchBot— OpenAI's crawlersChatGPT-User— fires when a person asks ChatGPT something liveClaudeBotandClaude-User— Anthropic, the same index-time and live splitPerplexityBotGoogle-ExtendedandGoogleOtherAmazonbot,Bytespider,CCBot— not chat engines, but heavy, and they will dominate your counts
If you have shell access, the whole check is one line:
Check your own site in 30 seconds. Grep your server logs: grep -iE "GPTBot|ClaudeBot|PerplexityBot|Meta-ExternalAgent" access.log | wc -l If that number is zero, AI search doesn't know you exist.
The command is right. The conclusion is a step too far, and the correction matters if you are about to panic at a zero: a zero most often means the crawler was blocked, not that you are unknown. An old robots.txt rule, a firewall setting, or a host-level bot filter will produce exactly the same empty result as being ignored. Check what you are allowing before you read anything into the number.
Where the file is depends on your host. On cPanel-style shared hosting it is usually under a Raw Access Logs download. On a VPS it is /var/log/nginx/access.log or the Apache equivalent. On Cloudflare it is under Analytics rather than a file.
On some modern hosts the log does not exist in a usable form. Platforms built around edge functions often keep request logs only for a short retention window and never expose the user agent through an API at all — Vercel is the common example. If your host is in that category, this check is closed to you, and the honest response is to say so rather than read a zero as evidence.
There is no published normal to compare your mix against, so treat any figure you find elsewhere as somebody else's site rather than a target. Search Engine Land reported a much larger sample with the same shape — seven days of Cloudflare logs, 29,099 bot requests, AI bots 65.8% of them, with training crawlers frequently rate-limited (Amazonbot 51%, ClaudeBot and GPTBot 29%) while PerplexityBot and ChatGPT-User were rate-limited 0% of the time. Their framing is the useful part: log data separates a content problem from an access problem. If the crawlers never arrive, no amount of rewriting will help you.
Why is Most of What I See Probably Me?
Because you generate traffic every time you check your own work, and your tools do not know the difference between you and a crawler. This is the failure that makes first readings useless, and it is the one step no dashboard can do for you, because only you know which of those visits were yours.
Every time you load your own page to see if a change worked, the server writes it down. Every uptime monitor, every plugin that phones home, every curl you ran while setting this up — all of it lands in the same file you are about to count. None of it is labelled as yours, and the count does not care who you are.
This matters most on the first reading, because the first reading is the one you take when you have just spent an afternoon poking at the site.
The tells, on your own data:
- Round numbers. Real traffic is ragged. Counts landing on multiples of ten or twenty are a script, and the script is usually yours.
- A burst that matches when you were working. Forty fetches inside the hour you were testing something is you.
- Requests with no country attached. A real crawler comes through a data centre with a location.
curlfrom your laptop often does not. - Tools in the user agent.
python-urllib,curl,Go-http-client,PostmanRuntimeare not AI engines.
There is a second version of this problem pointing the other way. Anything can put GPTBot in its user agent — it is a text field, not a credential — and crawlers reach sites through proxies, so the address a request arrives from can be as misleading as the name on it.
GPTBot and ClaudeBot publish their real IP ranges. Verify against those and a chunk of your "AI traffic" turns out to be random bots spoofing the user-agent. Trust nothing in your logs.
That fix — check the address against the ranges each operator publishes, not just the name — came up independently from three separate practitioners in our sweep, none of them selling anything. It is the right next move and it is a longer job than this page. Sorting it out properly is its own piece; for now, treat the name in the log as a claim rather than a fact.
What Do These Two Checks Not Tell Me?
They tell you that you were read. They do not tell you that you were named. This is the single most important limit of the free check, and it is the line where doing it by hand stops being enough.
| The check | What it proves | What it cannot prove |
|---|---|---|
| Analytics | a person clicked through from an AI tool | anything about the answers that produced no click |
| Server log | an engine fetched your page | that the engine used your page in an answer |
| Both | you are reachable and readable | that you were mentioned, cited, or recommended |
We put this directly to eight AI systems — ChatGPT, Claude, Gemini, Grok, DeepSeek, Kimi, Perplexity and Copilot — across a 115-question interrogation, and all eight agreed that a page being retrieved is not the same as a page being cited. That is eight self-reports rather than eight measurements, and a model has no privileged view of the system it runs inside, so treat it as strongly indicated rather than proven.
The practical consequence: a busy bot log and no mentions is a completely normal state, and it is a different problem from an empty bot log. Why AI names your business but suggests a competitor covers the gap on the other side — being named and still not being the recommendation.
Conclusion
Start with what is already recording. Your analytics already lists the people AI sent you, and your server already logged every engine that came to read. Both take an afternoon and cost nothing, and doing them yourself once is what teaches you to read any dashboard you use later.
Expect three things. The numbers will be small. A share of the first reading will turn out to be you. And neither check can tell you whether you were actually mentioned — only that you were reachable enough to be read.
That is a real answer and it is further than most businesses have got. It is also where the manual version runs out: the moment you want to know which answers name you, rather than which bots arrived, you are asking a question a log file cannot reach. Do the free check first anyway. It tells you whether you have an access problem or a content problem, and that decides what is worth paying for next.
Checking AI Traffic: Frequently Asked Questions
Does Google Analytics show ChatGPT traffic?
Why does my AI traffic show as zero?
Is GPTBot in my logs proof that ChatGPT mentions me?
What is the difference between GPTBot and ChatGPT-User?
How often should I run these checks?
What if my host does not give me server logs?
Find the exact growth leak in your business — in 2 minutes.
Paste your URL. Our AI agent crawls your site, diagnoses what's broken, and ships a step-by-step fix plan. Free, no signup.
Run free audit

