Error tracking
Uncaught JavaScript errors and unhandled rejections, grouped by bug: stack traces, affected browsers and pages, and errors in journey timelines.
The snippet captures uncaught JavaScript errors and unhandled promise rejections from your visitors' browsers and groups them by bug in the Errors tab. A deploy that breaks a page shows up within minutes, with the stack trace, the pages and browsers it hits, and how many visitors felt it. Error reports are never billed as events.
How grouping works
Every occurrence gets a fingerprint built from the error type, its message with volatile fragments (numbers, ids, URLs) normalized out, and the script it came from. The same bug lands in the same group across visitors, pages and deploys, so a render-loop error that fires ten thousand times is one row, not ten thousand.
- Per-visit dedupe: each distinct error is reported at most once per page visit, with a hard cap of 10 distinct errors per visit, so a broken page can't flood collection.
- Stack traces: capped at 20 frames, with every URL in the stack stripped of its query string before it leaves the browser (a query string can carry a token).
- Third-party scripts: cross-origin scripts without CORS headers report an opaque "Script error." - still captured, so third-party breakage shows up as one group.
- Not captured: failed resource loads (blocked images, ad-blocked scripts). They fire per element and are overwhelmingly extension noise, not your bugs.
The Errors tab
- Headline: occurrences, distinct errors and affected visitors over the selected range, each with a delta against the previous period, plus the occurrence trend.
- Groups: every distinct error, most occurrences first. Expand one for its stack trace, first/last seen, and breakdowns by page, browser, OS, device and country, plus the most recent occurrences.
- Journeys: a journey card shows an error badge when that visitor hit one, and the expanded timeline shows each error exactly where it happened. See a visitor click a button, hit a TypeError, and leave.
- Stats API:
GET /api/v1/errorsreturns the groups and totals; addfingerprintfor one group's detail (see Stats API).
Privacy
Error rows carry the same cookieless, daily-rotating visitor identity as regular analytics events - nothing new is collected about the visitor (see Privacy & data). Errors from bots and automated browsers are dropped before storage.
Turning it off
Error tracking is on by default. To disable it, add data-errors="false" to the snippet:
<script defer src="https://app.numative.com/numative.js" data-site="YOUR_ID" data-errors="false"></script>