GA import
Paste or upload the GA4 "Pages and screens" CSV — columns auto-detected, previewed, written to hourly rollups with an import marker. 25-month retention for your history.
Workflow & automation
Every detection is an honest z-score on aggregate data — no ML theater. Alerts are evaluated every minute from ClickHouse rollups, the weekly digest builds itself, and stakeholder reporting is a k-anonymized static snapshot that expires on its own.
Alert rules
| Metric | Window | Operators |
|---|---|---|
| Views | 1 hour | above · below · %-above baseline · %-below baseline |
| Errors | 1 hour | above · below · %-above · %-below |
| Goals | 24 hours | above · below · %-above · %-below |
| Zero-traffic watch | 6 hours | silence is the alert |
| LCP p75 | 24 hours | above · below · %-above · %-below |
| Rage clicks | 24 hours | above · below · %-above · %-below |
Per-rule, 5–1440 minutes. One incident, one page — not a hundred pings.
Slack Incoming Webhooks or any JSON webhook. A test-fire button proves the wiring before you need it.
Rule changes and firings land in the append-only audit log — always answerable.
Weekly digest
Auto-built per site from rollups: views, visits and engaged time, top pages, CWV p75, anomaly cards, frustration hotspots, deploys. Delivered to Slack on schedule — plus a send-now button for the "just this once" requests.
Also automated
Paste or upload the GA4 "Pages and screens" CSV — columns auto-detected, previewed, written to hourly rollups with an import marker. 25-month retention for your history.
Score (1–10), NPS (0–10) or text — a self-contained SDK widget triggered via observer('survey', {…}). Responses are aggregate, never linked to identities.
Named filter sets — path, country, device, source — saved per site and reusable across every screen, via a CRUD API.
Alerts, digest, snapshots and import ship in every tier — on your hardware, without a SaaS subscription.