Skip to main content
Traffic tracking shows the AI systems fetching your pages and the people arriving from AI answers. A small request-capture SDK on your site, or a log drain from your host, sends each request to Notra, which classifies it at ingest and shows the results on the Agent tab of Analytics. Notra only stores AI traffic from the SDK and log drains and discards ordinary human page views on arrival. To count human readers on any site, add the notra.js script tag and see them in Web analytics, while sites hosted with Notra Sites count them automatically. Agent tab with crawler and referral activity Agent tab with crawler and referral activity

What is captured

Notra classifies captured requests into these visitor types:
  • AI crawler: bots fetching your pages to train models or build a search index. Each crawler carries a Purpose: Model training (collects pages for training corpora), Search index (builds the index an AI answer engine searches) or Cited in answer (fetched while an assistant was answering someone).
  • AI referral: a person who clicked through to your site from an AI answer. Notra detects referrals by referrer host, for example chatgpt.com, perplexity.ai, gemini.google.com, claude.ai, copilot.microsoft.com, you.com, chat.deepseek.com, chat.mistral.ai, grok.com and chat.qwen.ai.
  • Human visitor: an ordinary person opening a page. Notra discards these requests from the SDK and log drains, and counts people only through notra.js, which Notra Sites load automatically. See Web analytics.
AI traffic collection from the SDK and log drains needs no browser script or cookies. Each AI event carries:
  • the source, the agent and the purpose
  • a Confidence of Verified, Reported or Heuristic, which records where the agent’s signature came from
  • the path, host and country
  • whether the client asked for Markdown
  • a journey id
On Notra Sites, each published post also shows its Agent reach in the post’s Overview panel and in the Content list, which counts the crawls, citations and referrals for that post’s page and its Markdown copy.

Supported frameworks

The @usenotra/sdk tracker runs inside your app’s request pipeline. Pick your framework:

Next.js

proxy.ts

TanStack Start

src/start.ts

Nuxt

server/middleware/geo.ts

Astro

src/middleware.ts

SvelteKit

src/hooks.server.ts

React Router

app/root.tsx

Netlify Edge Functions

netlify/edge-functions/geo.ts

Log drains

If you’d rather not change your code, Notra can read your host’s request logs instead. A log drain sees the method, URL, user agent, referer and IP of every request, which is enough to track declared AI crawlers and AI referrals. It can’t tag Markdown links for journeys, and without extra request headers it misses agents that ask for Markdown or pose as a browser.

Vercel log drain

Vercel Pro and Enterprise teams

Cloudflare Logpush

Any site proxied through Cloudflare

Recognized AI agents

Notra recognizes more than 60 AI crawlers and agents from OpenAI, Anthropic, Google, Perplexity, Meta, Apple, Amazon and others. See the full AI crawler directory.

The Agent tab

Open Analytics in the GEO sidebar and stay on the Agent tab. Once events arrive, the page shows the sections below, and each one follows the range picker. The Journeys tab on the GEO Overview page shows how AI agents move through your site, as described in Journeys, and the Web tab counts the people reading your site, as described in Web analytics.
  • A hero row with Crawlers, Referrals and Total visit counts, each compared “vs. previous period”, and a daily trend chart.
  • Sources has three groups: Crawlers (training and search-index bots), Cited (assistant-browse fetches while an engine answered someone) and Referrals. Columns are Source, Purpose, Visits, Pages and Last seen. Open a source to see the share of its visits that asked for Markdown, and log rows that asked for Markdown carry a Markdown badge. Sources group by operator, for example OpenAI, Anthropic, Google, Perplexity, Microsoft, Meta, Instagram, Amazon, Apple, ByteDance and Common Crawl, with Instagram kept as its own source rather than folded into Meta.
  • Top pages by AI source has the columns Page (host and path), Sources and Visits. When a project tracks more than one domain, a domain filter narrows the table.
  • Recent citations is the live event log, with All visitors (AI crawler, AI referral) and All purposes (Model training, Search index, Cited in answer) filters. The domain filter on top pages also narrows this log, and live updates refresh every few seconds until you pause them.

Limits to keep in mind

Crawler classification relies on user agent signatures, and anyone can send a crawler’s user agent string, so the Confidence value tells you where the signature came from. Where an operator publishes IP ranges or a reverse DNS method, the signature table points at it, but Notra doesn’t verify IPs at ingest.
The Cited in answer purpose means an assistant fetched the page while answering someone, but it doesn’t prove the answer quoted or linked the page.
The signature table leaves out agents that a user agent can’t honestly identify, including Pi, ChatGPT Atlas, Google-Extended and Applebot-Extended. Notra cannot reliably attribute their traffic to a specific AI agent, so it treats those requests like human visits and doesn’t store them.
Notra recognizes AI referrals by referrer host, so it doesn’t count clicks from apps that strip the referrer or from hosts that aren’t in the list.
Only journeys that followed a tagged ntr link are exact, while fingerprinted journeys group requests by heuristic and can merge or split real sessions.
If you set sample below 1, every count on the Agent tab reflects the sampled fraction, and Notra doesn’t scale the numbers back up.
Last modified on November 11, 2026