Docs/What the numbers mean

What the numbers mean

Every metric in the dashboard, defined — including the ones that differ from Google Analytics.

Audience

MetricDefinition
VisitorOne anonymous daily fingerprint: sha256(daily salt + IP + User-Agent + domain). The salt changes every night, so the same person on two days counts as two visitors. This is the price of having no cookie.
SessionA visit. It ends after 30 minutes without a request, and a new one starts on the next page.
PageviewOne page load, plus every route change in a single-page app.
Bounce rateShare of sessions with a single pageview. Note that a session with one page but three minutes of reading counts as a bounce — engaged time is the better signal.
Avg. durationAverage time between the first and the last request of a session.
Engaged timeSeconds where the tab was visible and the visitor did something within the last 30 seconds. A tab left open all afternoon adds nothing.
Scroll depthDeepest point reached on the page, in percent.

Humans, robots, and the ones we can't tell

Three populations, mutually exclusive, so they always add up to the total:

  • Humans — behaviour proved it: a mouse moved, a key was pressed, a finger touched, a real scroll happened.
  • Robots — the User-Agent said so (search crawler, AI crawler, SEO tool, headless browser, monitor, link preview), or automation was detected.
  • Unconfirmed — everything else: immediate bounces and quiet automation. We don't guess for them.

A robot that moves a mouse is still a robot: a declaration beats behaviour, in that direction only. It matters because a conversion rate computed over crawler traffic is not a conversion rate.

Intent

Every session is filed by what the visitor came for, read from the landing page and the campaign parameters: paid (pricing, subscribe, order), free (free, template, download), tool (generator, calculator, converter), info (guide, how-to, comparison), home (arrived on the home page) and other.

It answers the question a global conversion rate hides: are they here to buy, or here for the free thing? Read the funnel by intent and one unreadable rate becomes two usable ones.

Funnel stage

Each session carries the furthest step it ever reached, from arrival to purchase — arrived, engaged, activated, signed up, checkout started, purchased. It only ever moves forward, so a visitor who buys is never counted back at an earlier step. Steps come from the canonical events; see custom events.

Channels

Sessions are grouped by where they came from: Direct, Search, AI assistants, Social, Referral. The AI bucket is broken down by assistant (ChatGPT, Perplexity, Claude and others), because in most tools they arrive as ordinary referrers and disappear into "other".

Channels count sessions, not visitors: one person arriving once from Google and once from ChatGPT is one visitor but two sessions, and sessions add up exactly.

Friction signals

SignalDefinition
Rage clickThree or more clicks in the same spot within 700 ms.
Dead clickA click on an element that shows a pointer cursor but does nothing.
Abandoned fieldA field was focused and the form was never submitted before leaving.
JS errorAn uncaught error or rejected promise, deduplicated, five per page at most.

Only the element's tag, a short selector and its visible label are stored — never what someone typed.

Time

Every date in the dashboard and the API is UTC. A "day" runs from 00:00 to 23:59 UTC, so a sale at 01:00 in Paris belongs to the previous UTC day.

What is never counted

  • Anything from localhost, a private IP, a .local host or a file:// page.
  • Any browser where you opened the site once with ?kp_ignore=1.
  • Nothing else is filtered: a production domain you did not expect still counts, because a site legitimately lives under several names.