AI Agents

Clickport shows you which AI assistants and crawlers read your site: ChatGPT, Claude, Perplexity, Gemini and others, joined to the human side you already track. For every engine you see what it ingested, what it cited into live answers, how many visitors it sent, and whether they converted. Per page, you see what AI reads next to what humans read.

Real behavior, not estimates. Every number comes from requests your server actually received and sessions your site actually had. Clickport does not run prompts at AI models to guess your visibility, and there is no synthetic score. If ChatGPT read your pricing page 40 times last week, that is what you see.

Why this needs a connector

AI assistants and crawlers do not run JavaScript, so the tracking snippet never sees them. The only place their visits exist is your server. A small server-side connector reports each request's basic metadata (path, method, status, user agent, requester IP) to Clickport, where the agent is identified and verified. The connector itself contains no bot knowledge at all: when new AI agents appear, Clickport's catalog picks them up and your connector never needs an update.

Setup is per site and takes a few minutes: generate a connector key in Settings → Integrations → AI Agents, then pick the connector that matches your hosting below.

What you see in the dashboard

Sources → AI: the engine funnel

Each AI company is a row with four stages:

  • Ingested: pages crawled for AI search indexes and model training (for example GPTBot or ClaudeBot collecting training data).
  • Cited: pages fetched live during a real person's AI conversation. When ChatGPT answers someone and pulls your page in to do it, that is one citation. This is the closest measurable thing to "my site appeared in an AI answer".
  • Visited: human visits from the AI Search channel, the people who clicked through from an AI answer.
  • Converted: those AI-referred visits that completed one of your goals.

The stages tell each engine's story. Some engines cite thousands of times without crawling ahead: they fetch your page on demand at answer time. Others ingest heavily for training and never cite. Some send visitors without ever fetching, because their answers ride a search index crawled by someone else. The funnel makes those strategies visible for your own site.

SourcesLocationsTechnologiesCampaigns
ChannelsSourcesURLsAI
3061 citations · 10.9k crawls · 497 AI visits · 55 conversions
Engine
Ingested
Cited ↓
Visited
Converted
OpenAI4820136421224
Perplexity2988102717419
Anthropic1743386587
Google962204385
Microsoft31066120
Mistral981430
Cross filters don't apply to agent traffic.

Pages → AI: what AI reads, next to what humans read

Every page with agent activity is a row with Cited (live-answer fetches), AI reads (all AI agent hits), and Visitors (unique human visitors of the same page in the same range). The little caret unfolds a per-engine split for that page, including how many visitors each engine's answers sent to it.

Two icons on each row connect the AI world to the rest of your dashboard:

  • The bot icon draws that page's AI reads as a separate dashed line on the main chart, on its own axis. Click again to remove it. Engine rows in Sources → AI do the same on click.
  • The human icon applies a regular page filter, exactly as if you had clicked the page in Top Pages, so the whole dashboard shows that page's human traffic. Both icons can be active at once, which puts a page's human visits and AI reads side by side on one chart.
PagesSessionsGoalsJourneys
TopEntryExitSearch404AI
Page
Cited ↓
AI reads
Visitors
/blog/google-analytics-alternative4861204892
EngineCitedReadsAI visitors
OpenAI21448938
Perplexity17641561
Anthropic9630017
/docs/getting-started342861573
/pricing2916441108
/blog/cookieless-tracking227538402
Cross filters don't apply to agent traffic.

The channels list

Below your traffic channels, a separate row shows total AI agent fetches for the selected range. It is deliberately not a channel: agent fetches are not visits and never count toward your visitor numbers or percentages. Clicking the row opens the AI view.

SourcesLocationsTechnologiesCampaigns
ChannelsSourcesURLsAI
Channel
Visitors ↓
%
Organic Search5,20443%
Direct3,02425%
Organic Social1,42812%
AI Search9848%
Email4924%
AI Agents14.0k fetches

Bot Center: verification

Every agent hit is verified against the operator's published IP ranges, where the operator publishes them:

  • Verified: the request came from the operator's published address space.
  • Spoofed: the user agent claims a known bot, but the IP is outside the operator's published ranges. Scrapers love pretending to be well-known crawlers; Clickport catches them.
  • Unverifiable: the operator publishes no ranges to check against.

Spoofed hits are excluded from every AI number in the dashboard. The per-agent verification detail lives in Settings → Bot Center.

AI agent verification
GPTBot OpenAI3,204 verified118 spoofed
ChatGPT-User OpenAI1,616 verified
ClaudeBot Anthropic1,286 verified41 spoofed
PerplexityBot Perplexity964 verified210 spoofed
Claude-User Anthropic457 verified
CCBot Common Crawl152 unverifiable
Verified = hits from the operator's published IP ranges. Spoofed hits are excluded from every AI number in the dashboard.

Connect with a Cloudflare Worker

The recommended connector when your domain's DNS runs through Cloudflare. It adds zero latency: the report is sent after the response is already on its way to the visitor. It also sees every request, including ones served from cache.

  1. In Clickport, open Settings → Integrations → AI Agents and generate the connector key. The Worker code shown there has your key and endpoint pre-filled.
  2. In the Cloudflare dashboard, create a Worker and paste the code.
  3. Add a route: yourdomain.com/* → the Worker.
  4. Optional but recommended: store the key as a Worker secret named CLICKPORT_KEY instead of leaving it in the code.

Data appears in Sources → AI and Pages → AI within a minute of the first agent hit.

Connect with the WordPress plugin

The Clickport WordPress plugin (version 1.2.0 or newer) reports agent visits directly from your server. No theme changes.

  1. Install or update the plugin from the WordPress guide.
  2. In Clickport, open Settings → Integrations → AI Agents and generate the connector key.
  3. In WordPress, open Settings → Clickport and paste the key into the AI Agents connector field.
Full-page caches have a blind spot. Caching plugins and CDNs serve some requests without running WordPress at all, and those hits cannot be counted from inside WordPress. If your site sits behind Cloudflare, prefer the Worker connector, which sees cached responses too.

Connect from any server

Any backend, edge function, or log pipeline can report visits by POSTing newline-delimited JSON to the agent-visits API, one line per request your server saw:

POST https://clickport.io/api/agent-visits
Authorization: Bearer ck_your_connector_key
Content-Type: application/x-ndjson

{"ts":"2026-07-13T09:00:00Z","path":"/blog/post","method":"GET","status":200,"duration_ms":42,"headers":{"User-Agent":"...","Remote-Addr":"203.0.113.7"},"connector":"rest"}

Send every content request. Human hits are discarded server-side; agents are classified and verified. Up to 5,000 lines per request, gzip supported, and the endpoint responds 204 on success. The full field reference is in the API documentation.

Reading the numbers honestly

  • AI visits are a floor. Assistants often strip referrers, so some AI-driven visits land in your Direct channel and cannot be attributed to an engine. The Visited column undercounts rather than guesses.
  • A citation is a fetch, not a guaranteed appearance. An engine may fetch a page while composing an answer and use only part of it, or fetch it more than once for one answer. It is the strongest signal available from real behavior, not a screenshot of the answer.
  • Collection starts at connection. Requests that happened before the connector was installed were never recorded anywhere Clickport can see, so there is no retroactive history.
  • Cross filters do not apply to agent traffic. Agent hits carry no country, source, or device, so the AI views ignore the dashboard's filters. The human numbers inside them (Visitors, Visited, Converted) are real session data and pair with the rest of your dashboard through the icons described above.
  • Classic search crawlers are not AI. Googlebot and Bingbot visits are collected and visible in the Bot Center, but they never count into AI reads, citations, or crawls.
  • Agent hits never touch your bill. They do not count as pageviews and do not consume your plan's quota.

Privacy and data handling

  • Connectors send request metadata only: path (query strings are stripped), method, status, timing, user agent, and the requester's IP for verification.
  • The IP is checked against published operator ranges at ingest and immediately discarded. Only the verdict (verified, spoofed, unverifiable) is stored.
  • Agent data is retained for 13 months.
  • None of this involves your human visitors: their analytics continue to come from the cookie-free tracker alone.

Troubleshooting

The status says "Not connected" after setup

The status flips on the first reported agent hit, not on key creation. Small sites can go hours between AI fetches. To force a test: request any page of your site with an AI crawler's user agent, for example curl -A "Mozilla/5.0 (compatible; GPTBot/1.2)" https://yourdomain.com/, and check again a minute later. The hit will show as spoofed, which is correct: it came from your machine, not from the operator.

Rows appear, but everything is "unverifiable"

Your connector is not passing the requester's IP. In the Worker this is automatic. For the API, include the client address as Remote-Addr (or X-Forwarded-For) inside each line's headers object.

WordPress shows fewer reads than expected

See the page-cache warning above: requests served entirely from cache never reach the plugin. The counts you do get are real, just incomplete on heavily cached sites.