The site looked dead. Thirty days of analytics, and the traffic arriving from AI came to two visits — one from ChatGPT, one from DuckDuckGo. Two. From a dashboard like that you would conclude that no AI has ever noticed the site exists.
That conclusion is wrong by about ten thousand.
Over the same thirty days, AI crawlers requested pages from that site 13,306 times, and 10,202 of those requests were for pages with actual writing on them. The two instruments are not contradicting each other. They are answering different questions, and almost everybody is only asking the first one.
The site is davaonline.net, a WordPress site running a plugin that does the opposite of normal analytics. It ignores human visitors completely and records only AI crawlers: which ones arrived, what they fetched, and whether the thing they fetched was a page or just a file.
Here is the whole month.
The numbers
| Thirty days | Count |
|---|---|
| AI crawler requests | 13,306 |
| Requests that hit a content page | 10,202 |
| Requests made to answer a live question | 1,902 |
| People who arrived by following an AI answer | 2 |
Read it downward. The story is in the descent.
Visiting is not reading
The gap between the first two numbers — 3,104 requests — is not rounding error. It is robots.txt, sitemap.xml, and a tail of files that are not your writing. A crawler that fetches robots.txt and leaves has visited your site and read nothing. Counting that as AI is reading me is counting a knock at the door as a conversation.
Which is why the instrument sorts every request by purpose instead of reporting one number:
| Purpose | Requests (vs previous 30 days) |
|---|---|
| Training — collected to train a model | 9,514 (+1,175%) |
| AI search — indexed for an answer engine | 1,890 (+432%) |
| User fetch — retrieved to answer a live question | 1,902 (+3,558%) |
These are not interchangeable. Training collection is a bet on the future: your words may end up inside a model that ships next year, or they may not. Search indexing is a bet on retrieval: you become findable inside somebody else's answer engine. User fetch is neither a bet nor a future. It means a person asked a question a few seconds ago, and a machine went to your page to answer them.
Reading is not traffic
1,902 times in thirty days, this site was contacted by a crawler that retrieves on behalf of somebody asking a question right now. Two people arrived.
One came from ChatGPT. One came from DuckDuckGo. That is the complete AI referral traffic for the month.
A note on the arithmetic: the 1,902 and the 10,202 slice the same pile of requests in different directions — one by what the crawler is for, the other by what it asked for. Neither is contained in the other, and the 1,902 includes some share of robots.txt fetches rather than pages. Read at its most conservative, the ratio does not soften.
This gap is not a funnel to optimize. It is the shape of the thing. The page was retrieved, read, and used as the source of an answer that appeared somewhere else entirely. The answer was delivered. The visit never happened. Meanwhile those fetches grew 3,558% over the previous thirty days — two arrivals is what that growth looks like from the traffic side.
A conventional analytics dashboard reports this month as though almost nothing occurred. It is not wrong about visits. It is answering a question that has quietly stopped being the important one.
What this instrument cannot see
Before any of that means anything, here is what these numbers are not.
- Two is a floor, not a count. Arrivals are identified by referrer. AI clients running as desktop or phone apps frequently send none at all, and those visits land in your analytics as direct traffic, indistinguishable from somebody typing your URL. The true figure is higher than two. Nobody can tell you how much higher.
- Cached pages are invisible. When a page cache answers a request, PHP never runs, so nothing is recorded. Every number here is a lower bound.
- Not every crawler can be verified. OpenAI and Perplexity publish IP ranges, so their requests can be confirmed. Meta and ByteDance publish nothing, so theirs are matched on the user-agent string alone — and user-agent strings can be forged. Anthropic sits in between: it began publishing a range list on August 18, partway through the month measured here, and the plugin was still carrying an older snapshot that did not contain it — so its requests are counted here as unverified as well. The dashboard marks which is which. This article does not separate them.
- One site, one month. Different subject matter, a different language, a different publishing rhythm would all produce different numbers. This is an instrument reading, not a study.
None of those caveats move the conclusion, because they all push the same direction. Correcting for every one of them would make the reading number larger and leave the arrival number roughly where it is.
How to measure your own site
The instrument is a WordPress plugin called AILYS Lens, and it is free. I build it, which you should factor into everything above. It is also built so that measuring costs you nothing else: every calculation runs on your own server, nothing is transmitted anywhere, and human visitors are never recorded — only AI crawlers are. Requests that are not crawlers pass through in under a millisecond, and no CSS or JavaScript is loaded on your front end.
Install it, leave it alone for a week, and you will know whether anything is reading you. It is a question with a factual answer, and until recently there was no instrument that would give it to you.
The uncomfortable part of this month is not the two. It is that a site can be read ten thousand times and still produce a dashboard that looks like failure — and that its owner has no ordinary way to tell the difference between being ignored and being read in silence. That is a strange position to publish from. It seems worth knowing which one you are in.
A note on AILYS Doctor
AILYS Lens is free permanently. That is a design commitment rather than a pricing stage — every feature runs locally on your server, so there is nothing for a paid tier to unlock.
The diagnostic service alongside it, AILYS Doctor, is a different thing. Lens tells you what happened; Doctor tells you why, and what to change. It is free to use during its data-collection period, and any future pricing will be announced on the site.
Updated September 15, 2026: this note originally said Doctor would become a paid subscription on that date. The change has been postponed, and Doctor remains free for now.
See a sample diagnosis · AILYS Doctor
Correction, September 4, 2026: this article originally said that Anthropic publishes no IP ranges. Anthropic began publishing them on August 18, 2026, before this article went up. The passage above has been rewritten. The counts themselves are unchanged — the requests really were recorded unverified — but the reason was a stale snapshot on my side, not an absent list on theirs.
Top comments (4)
This makes a strong case for separating two measurement planes: origin-side retrieval evidence and answer-side usage evidence.
A server can show that a crawler fetched a page, but it cannot show whether the answer engine actually used or cited that page, whether the source changed the answer, or whether the user took a downstream action without visiting the site. So "read" is a valuable exposure signal, but not yet attribution.
The missing primitive may be a privacy-preserving receipt from the answer engine: source included or not, coarse query category, timestamp window, and perhaps whether an action followed, without exposing the user or full prompt.
Have you explored any way to pair AILYS Lens data with answer-side citation or inclusion telemetry? That would turn this from crawler analytics into a much more complete measurement model.
You've put your finger on the split I couldn't name while I was writing this. Retrieval evidence is origin-side and cheap to collect. Usage evidence is answer-side and, as far as I can tell, nobody is issuing it.
Worth adding that the origin side is shakier than the piece makes it sound. I have a follow-up going up this weekend that sorts the same thirty days by whether each request could be verified as coming from whoever it claimed to be. Roughly one in six could. So "read" is an exposure signal with a soft floor under it, not merely an incomplete one.
On pairing: Lens can't, structurally. It transmits nothing off your server — a permanent design commitment rather than a current limitation — so there is no version of it that phones an answer engine for telemetry. That work would have to live on the hosted side.
I haven't found anything to pair it with, though. Everything currently sold as citation tracking samples from the outside: run prompts, read the answers, count appearances. That estimates a distribution. It isn't a receipt for your page, and it can't become one, because it never touches the engine's own retrieval record.
The only answer-side signal I get for free is the referrer, and it is badly incomplete — app-based clients send none at all, which is how thirty days of this produced two arrivals.
A privacy-preserving receipt is the right shape for the missing primitive. It would have to come from the engine, and I can't yet see what would make one want to issue it.
nice catch separating the 10,202 from the 1,902, most people would report "AI crawled me" as one number and miss that training collection isnt retrieval. One correction though: two arrivals isn't proof of zero citation, referrer stripping in AI clients hides most of it. i use viewfy for checking whether a page even gets fetched, and this kind of purpose-split log for confirming it was actually used. worth pulling your own referrer logs before trusting the "two visits" number 💙
Thanks for reading — and you're right about referrer stripping. That's
actually why the post calls the two "a floor, not a count," since app-based
AI clients often send no referrer at all and land as direct traffic.
So the two isn't meant as a citation count. It's just the most referrer logs
can see, sitting next to the 10,202 that server logs can — and that distance
is really what the piece is about.