Skip to content

Trust report

Every range in the dashboard has a trust report: how much traffic was lost, how much of what arrived was not human, how much never interacted, and a grade.

score = 100 − 40 × loss
− 30 × (suspicious + bot) / received
− 20 × zero-interaction visits / visits
− 10 × refused / (received + refused)
A ≥ 85 · B ≥ 70 · C ≥ 50 · D below
Term Where it comes from
Loss Measured by the server SDK; counts as 0 when not measured, and the report says so
Suspicious + bot Every event’s bot score
Zero-interaction visits Visits with no active time at all
Refused Events the collector refused after reading them (invalid names or addresses, too old, heatmaps off)

Each event gets a score from the signals present, capped at 100:

Signal Weight
A known bot user agent 100
A headless browser 90
A datacenter network 60
Inhumanly fast events (not for signed server events) 40

80 and over is bot, 40 and over suspicious, the rest human. Nothing is deleted: reports count humans by default, and include_suspicious=true adds suspicious traffic.

  • Datacenter networks not checked: the events carry no network data, so the bot and suspicious shares may be understated (checks.datacenter is false).
  • Fewer than 30 visits in the range: percentages can swing widely.
  • Loss not measured: add the server SDK.
  • Visitors are counted without cookies, once per local day: people sharing a network and browser can merge; devices that change address can split.

API: GET /v1/sites/{id}/stats/trust.