Skip to content
New storyWe built Skald to count visitors. It caught an AI-key thief.
SkaldEvery visit, truly told.

AI traffic · ChatGPT

ChatGPT traffic: what it read, and who it sent you

ChatGPT traffic is more than the clicks your analytics shows. OpenAI's crawlers read your pages, ChatGPT fetches them while someone waits, and a few people click through. Skald shows all of it, apart.

ChatGPT traffic is every visit ChatGPT causes on your website: GPTBot and OAI-SearchBot crawling ahead of any question, ChatGPT-User fetching a page while a person waits for an answer, and people who click a link in that answer. Only the last one ever runs a script tag. The server log holds all of them.

30-day free trial · no card · we set it up within one working day · free to self-host

access.log · sample · ChatGPT's traces

09:14:58 198.51.100.23 "GET /docs/setup/" ref chatgpt.com

A browser, and the referrer's host is chatgpt.com: a person, from ChatGPT.

0412

Crawls

GPTBot, OAI-SearchBot · nobody waits

0186

Live fetches

ChatGPT-User · a person waits

0009

People

from chatgpt.com · a floor

Locked. A crawl, a fetch and a person are three different things. Skald never adds them.

Sample lines. Each one clicks exactly one counter, or none: a fake GPTBot goes to bots, and a likely visit is kept apart.

[01] three names, three jobs

"ChatGPT visited us 1,000 times." Which ChatGPT?

OpenAI sends three different fetchers, and each means something else. One trains a model, one builds ChatGPT's search, one reads your page while a person waits. Lump them together and the one that matters most hides. This is one part of AI traffic tracking.

Tear off a ticket

pick one
Why it comes
Collects pages that may train OpenAI's models. Nobody is waiting on it.
Checked against
openai.com/gptbot.json
OpenAI's published GPTBot addresses. A GPTBot from anywhere else is filed under bots.
In Skald
AI · training crawl. Its pages, re-crawls, bytes and answer times, and whether it asked for /llms.txt.
With "Block training"
Refused. Skald writes a rule for nginx, the web server in front of many sites, that answers it 403, the refusal code. robots.txt, the file where a site asks crawlers to stay away, stays readable.

The three lists are fetched once a day. A list older than 7 days is no longer trusted to call anything a fake.

[02] before the click

A visitor arrived from ChatGPT. What did ChatGPT read first?

Before an answer links to you, ChatGPT-User often fetches a few of your pages. Open a visit from ChatGPT and Skald lights the pages it fetched in the same minute or the 15 minutes before: nearest first, at most 10, the landing page ringed.

pick a visit

example.com · sample site

  • /
    • pricing/1 min
    • docs/
      • setup/same min
      • api/
      • webhooks/
      • self-host/
    • compare/
      • plausible/3 min
      • ga4/
    • blog/
      • server-logs/
      • ai-crawlers/
    • about/

Cited by ChatGPT · 3 pages read first

  1. same min/docs/setup/ landed here
  2. 1 min/pricing/
  3. 3 min/compare/plausible/

The visit carries chatgpt.com, so it is cited. ChatGPT-User fetched three pages in the window, the landing page among them.

Sample visits. Context, not a count of people: a fetch can be for someone else. GPTBot and OAI-SearchBot are never listed, because nobody was waiting on them.

[03] the honest count

Your ChatGPT referrals are the tip. Skald shows the rest apart.

Apps and privacy settings strip the referrer (the address of the page a click came from), so many clicks from ChatGPT land as "Direct". Skald counts only the clicks that prove where they came from: chatgpt.com, chat.openai.com, openai.com, the Android app's com.openai.chatgpt, or a utm_source=chatgpt tag, a label some ChatGPT links add to the address. That is a floor: the real number is at least this.

Below the line sit direct visits to a page ChatGPT-User had just fetched. Skald marks them likely from ChatGPT and keeps them out of every total.

switch

98visits from chatgpt.comcounted, people · a floor

waterline: the referrer stops here

55likely from ChatGPTDirect, no tag, same page, fetched up to 15 minutes before · never added

?Direct, nothing fetched beforestays Direct. Nobody can say.

Total shown for ChatGPT: 98, never 153.

Sample month. The 98 are people, counted once each. The 55 are a separate estimate, marked "likely", with a note that says how it was made.

[04] when reading changes

ChatGPT stopped reading your pricing page. Skald tells you.

An answer can drop you without a word. The first sign is in your log: OpenAI stops fetching the page. Skald watches each page OpenAI reads and opens an alert when it starts or stops, from whole, checked days only. GPTBot, OAI-SearchBot and ChatGPT-User count as one reader: OpenAI.

step through

OpenAI fetches of /pricing/ · one square a day · sample

alert · medium

OpenAI stopped reading /pricing/

ChatGPT-User, GPTBot fetched /pricing/ in 4 of the 4 weeks 2026-09-19 to 2026-10-16 (23 fetches); none in the 7 days 2026-10-17 to 2026-10-23.

Rule: fetched in at least 3 of the 4 weeks, none in the last 7 days.

Sample page. "Started" also needs the page answered as a page that day. More than 5 pages for one reader become one alert. Alerts go to the dashboard, the site's alert mail and your webhooks.

[05] what it cannot see

Where ChatGPT traffic tracking stops

Every ChatGPT figure is one Skald can prove from the log. These are its edges.

What it does not do

  • What ChatGPT said in its answer is not in your log. For that, see AI visibility tracking.
  • Clicks that lose the referrer arrive as Direct. ChatGPT clicks are a floor; likely visits sit beside them, never inside.
  • A ChatGPT-User fetch can be for someone who never clicks. A fetch is a reader one step removed, never a visit.
  • No server or CDN log (Shopify, Webflow, Squarespace) means no GPTBot or ChatGPT-User at all. A CDN, such as Cloudflare, is a service that serves your pages from near each reader.
  • A ChatGPT-User fetch from an address on no OpenAI list is shown as not verifiable or filed under bots, never guessed.

questions

ChatGPT traffic FAQ

Straight answers, including what Skald does not do.

How do I see traffic from ChatGPT?

Look in two places. People who click a link in a ChatGPT answer arrive with chatgpt.com as the referrer, and any analytics tool can count them. ChatGPT's own fetches, by GPTBot, OAI-SearchBot and ChatGPT-User, never run a script, so only your server log has them. Skald reads both from the log and keeps them apart.

What is the difference between GPTBot and ChatGPT-User?

GPTBot crawls your pages to collect training data, and nobody is waiting on it. ChatGPT-User fetches a page at the moment one person asks ChatGPT something, so a reader exists right then. Skald files GPTBot as a training crawl and ChatGPT-User as a live fetch, and never adds the two together.

What is OAI-SearchBot?

OAI-SearchBot builds the search index ChatGPT answers from. It crawls ahead of any question, like Googlebot, so Skald files it with the training crawls: nobody is waiting on it.

Why does Google Analytics show so few visits from ChatGPT?

Two reasons. ChatGPT's fetches never run a script, so they are invisible to it. And many clicks from ChatGPT lose the referrer on the way, so they arrive as direct visits. Skald counts the clicks that carry chatgpt.com as a floor, and marks direct visits to a page ChatGPT had just fetched as likely from ChatGPT, kept apart.

Does Skald count the ChatGPT phone app?

Yes, when the app says so. The ChatGPT Android app sends its app name, com.openai.chatgpt, as the referrer, and Skald counts that visit as ChatGPT. A click that arrives with no referrer at all is a direct visit, or likely from ChatGPT if ChatGPT-User had just fetched the page.

Can I stop GPTBot but stay in ChatGPT answers?

Yes. Crawler rules have a Block training only choice: GPTBot is refused, while OAI-SearchBot and ChatGPT-User still reach the site. How blocking AI crawlers works.

$ tail -f access.log | skald

See what AI does with your site. Free for 30 days.

No card. We set up hosted Skald for you within one working day, or you self-host it free. Every line of your log, sorted and added up.

Start free trial Live demo