# Seeing Zero AI Traffic? You May Be Reading the Wrong File
URL: https://doableclaw.com/blog/check-ai-traffic-free/
> 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.
Published: 2026-09-02

> **TL;DR:** 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](https://www.reddit.com/r/Wordpress/comments/1sytmqv/i_made_a_free_tool_to_check_if_ai_tools_are/), 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.

## The Quick Answer

- [Analytics counts the people AI sent you; your log counts the engine itself](#what-you-can-see)
- [A mention with no link produces no click, so analytics never records it](#what-you-can-see)
- [One consultant logged 890 AI visits a day that GA4 reported as zero](#what-you-can-see)
- [GA4 now files assistants under an AI Assistant channel, not buried in Referral](#ga4)
- [Expect tens of sessions a month, not thousands, and a zero is common](#ga4)
- [One grep line reads your access log for every AI crawler by name](#server-logs)
- [A zero in the log usually means blocked, not unknown](#server-logs)
- [Round numbers and bursts matching your working hours are you, not a crawler](#its-you)
- [Anything can write GPTBot into a user agent — verify the published IP ranges](#its-you)
- [Eight of eight AI systems said a retrieved page is not a cited one](#the-limits)

## 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](/blog/what-is-an-ai-mention/) 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](https://x.com/AgenticOperator/status/2089426409978765494)

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](https://x.com/superskybuilds/status/2092254330858488279)

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](https://x.com/0xdeger/status/2093997679411970096)

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.

site: doableclaw.com/ai-visibility — See which AI engines are reading your site, and which ones are only claiming to.

## 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](/blog/named-is-not-recommended/) covers the gap on the other side — being named and still not being the recommendation.

## Bottom Line

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.
