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.
The formula
Section titled “The formula”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) |
Bot scoring
Section titled “Bot scoring”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.
Notes the report adds
Section titled “Notes the report adds”- Datacenter networks not checked: the events carry no network data, so the bot and suspicious shares may be
understated (
checks.datacenterisfalse). - 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.