Skip to content

Key concepts ​

The vocabulary used in every report, in the API and in the MCP server.

Actor types and families ​

Every event is attributed to an actor. There are eight actor types, grouped into three families.

FamilyActor typeWho
HumanshumanA person using the browser directly
Action agentsai_agentAn AI agent driving a real browser for a user: Claude in Chrome, ChatGPT Agent / Atlas agent mode, Perplexity Comet, Project Mariner, Operator, browser-use… It runs JavaScript, clicks, fills forms and may buy.
automationA scripted browser without an identified AI vendor: Selenium, Puppeteer, Playwright, headless Chrome. Scrapers, QA scripts, fraud, unknown agents.
Indexing botsai_fetcherAn AI assistant fetching a page because a user asked a question: ChatGPT-User, Claude-User, Perplexity-User. Usually no JavaScript.
crawler_aiCrawlers collecting content for model training or AI search: GPTBot, ClaudeBot, OAI-SearchBot, Claude-SearchBot, PerplexityBot, CCBot, Bytespider, Meta-ExternalAgent…
crawler_searchSearch engine crawlers: Googlebot, Bingbot, Applebot, YandexBot, Baiduspider, DuckDuckBot, Qwantbot…
monitoringUptime monitors, Lighthouse/PageSpeed, SEO audit tools, link previewers (Slackbot, facebookexternalhit, Twitterbot)
unknown_botNon-human traffic without a better classification, including spoofed crawlers

When Eureka recognizes the vendor, the actor also gets a name, for example claude-in-chrome, chatgpt-agent, googlebot or gptbot.

The two non-human families answer different questions. Action agents act on your site, so they are measured like visitors (funnels, conversions, revenue). Indexing bots read your site, so they are measured by coverage and frequency (which pages, how often, by whom).

Each session gets a navigation mode, computed from the actors found in it:

ModeMeaning
agentOnly action-agent events
humanOnly human events
mixedAt least one human part and one agent part: for example, a customer delegating checkout to Claude in Chrome
botOnly indexing bots

Actor segments ​

An agent like Claude in Chrome drives the user's own browser: same cookies, same session. Eureka therefore separates actors event by event, and groups consecutive events of the same actor into actor segments:

session s1 (navigation mode = mixed)
├─ segment 0 · human      10:00 → 10:00   home page, clicks "Shoes"
├─ segment 1 · ai_agent   10:01 → 10:02   product page, add to cart, shipping form, purchase €120.50
│  (claude-in-chrome, score 0.95)
└─ segment 2 · human      10:03 → …       account page (the human takes back control)

That is how reports can say what the human did and what the agent did within the same visit. Each switch creates an actor_switch event.

Actor score and signals ​

For visitors running JavaScript, the tag computes a rolling actor score: the probability (0 to 1) that the current activity is not human. It combines:

  • declared identity: user agent, Web Bot Auth signature (Signature-Agent), published IP ranges;
  • automation traces: navigator.webdriver, Selenium or Playwright globals, headless browser traits, known agent overlays in the page;
  • behaviour: clicks without mouse movement, clicks exactly in the centre of a button, text typed without key presses, robotic typing rhythm, long pauses followed by instant actions, scrolling without wheel or touch.

The visitor switches to non-human above 0.8 and back to human below 0.35 for two actions in a row, so one odd click never flips a session. Reports show the score and the signals behind each classification rather than a plain yes/no. Full list: Detection signals.

Visitors, sessions, users ​

  • Visitor: a browser. In full consent mode it is identified by the first-party cookie _ah_id, which lasts at most 13 months and is never extended. In cookieless mode, the visitor ID is a hash that changes every day, so the same person is a new visitor the next day.
  • Session: a visit. A new session starts after 30 minutes of inactivity, at midnight (local time) or when the visitor arrives from a new campaign. A session is engaged if it lasts at least 10 seconds, has at least 2 page views, or includes a key event such as a purchase. A bounce is a session that is not engaged.
  • User: a logged-in person, when your site calls eureka('identify', id). The ID is hashed in the browser. Users let you follow one person across devices.

There is one visitor cookie, not two: the agent and the human share the browser, and they are told apart per event.

Billable and free events ​

Your plan's monthly quota counts agent and human events only (actor families action_agent and human). Indexing bot events are measured but never billed, so heavy crawling never inflates your bill. See Plans and billing.

Data freshness ​

Events reach the reports within a few seconds: the tag sends batches every second, the collector answers immediately, and the processing pipeline writes to the database in batches of about a second. Realtime shows the last 30 minutes, minute by minute. Reports on past days are cached; today's figures are always recomputed.

Agents & humans, every visit counts!