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.

Six AI assistants sending curved arrows into a website window whose GA4 panel reads zero while the access log below lists every one of them

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.

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.
r/Wordpress · r/Wordpress · a developer launching a free checker for exactly this

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 recordsWhat it provesWhere it lives
Analyticsa person landed on your site after clicking inside an AI answersomeone read about you and camealready in your GA4
Server loga bot fetched one of your pagesan engine read your pagealready 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.
@AgenticOperator · @AgenticOperator

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.

  1. Open Reports, then Acquisition, then Traffic acquisition. This is the report that lists where sessions came from.
  2. 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.
  3. Read the source column for chatgpt.com, claude.ai, perplexity.ai, gemini.google.com, copilot. Each engine arrives under its own hostname.
  4. 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.
  5. 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:

  • GPTBot and OAI-SearchBot — OpenAI's crawlers
  • ChatGPT-User — fires when a person asks ChatGPT something live
  • ClaudeBot and Claude-User — Anthropic, the same index-time and live split
  • PerplexityBot
  • Google-Extended and GoogleOther
  • Amazonbot, 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.
@superskybuilds · @superskybuilds

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. curl from your laptop often does not.
  • Tools in the user agent. python-urllib, curl, Go-http-client, PostmanRuntime are 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.
@0xdeger · @0xdeger

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.

Free tool
See which AI engines are reading your site, and which ones are only claiming to.
Check AI visibility

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 checkWhat it provesWhat it cannot prove
Analyticsa person clicked through from an AI toolanything about the answers that produced no click
Server logan engine fetched your pagethat the engine used your page in an answer
Bothyou are reachable and readablethat 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?
Yes, but only visits where somebody clicked a link. GA4 now files them under an AI Assistant channel, with source names like chatgpt.com and claude.ai and a medium of ai-assistant; on older properties the same visits sit under Referral, so check Session source / medium if that channel is missing. Answers that mention you without linking produce no visit and therefore appear nowhere in GA4.
Why does my AI traffic show as zero?
Usually because the window is too short or the mentions carried no link. Most AI answers name businesses without linking to them, and a mention with no link cannot create a session. Widen the range to 90 days before concluding anything, and read a zero as "no clicks yet", not as "no mentions" — they are different findings.
Is GPTBot in my logs proof that ChatGPT mentions me?
No. It proves your page was fetched, which is a step earlier in the process. All eight AI systems we interrogated agreed that retrieval is not citation, and the user agent itself is only a claim — any script can write GPTBot into that field. Read the log as evidence you are reachable, not as evidence you were named.
What is the difference between GPTBot and ChatGPT-User?
They fire at different moments, and one practitioner put the split plainly: "gptbot and claudebot are just training crawl, but oai-searchbot and perplexity-user only fire when someone asked a live question and your page got pulled in." GPTBot builds a picture of the web in advance; ChatGPT-User fires when a real person is asking right now. The second is the more interesting line in your log, and analytics records neither.
How often should I run these checks?
Often enough to see a pattern and no more, which for most businesses means monthly with the date written beside each reading. These are small, noisy numbers, and checking weekly mostly produces variance you will misread as change. There is no published benchmark for a normal rate yet, so your own trend is the only honest comparison available.
What if my host does not give me server logs?
Then run the analytics check and treat the log side as closed rather than empty. Some modern platforms keep request logs for about an hour and never expose the user agent through an API, which is a genuine dead end rather than a setting you have missed. The alternative is logging requests yourself at the edge, which is a developer job. --- Meta Title: Seeing Zero AI Traffic? You May Be Reading the Wrong File Meta Description: Your analytics and your server log count different things, and both mislead on the first read. How to run each check free, and why much of what you find is you.

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