Metrics
Dashboard numbers are computed in the Next.js app from raw eventsin each site's Supabase project. Definitions align with common product analytics (similar to Umami visit-based bounce).
Summary cards
| Metric | Definition |
|---|---|
| Visitors | Count of unique visitor_id values in the selected period. Visitor id comes from a browser fingerprint stored in localStorage. |
| Visits | Count of unique visit_id values. A new visit starts after 30 minutes without activity (tracker-side). |
| Pageviews | Number of events where event_type = 1 (pageview). |
| Bounce rate | Percentage of visits that contain exactly one pageview. Formula: (bounced visits / total visits) × 100. |
| Visit time | Average time on site for visits with at least two pageviews. Computed from timestamps between first and last pageview in each visit. Single-page visits are excluded from this average. |
Date range
The site overview supports 7 or 30 days via the period selector (?days=7 or ?days=30 on the URL).
Breakdown panels
- Channel — grouped traffic source (direct, organic, social, etc.) from referrer and UTM
- Referrer — referring host
- UTM — campaign dimensions when present
- Pages — top paths by pageviews
- Entry / Exit pages — first and last page per visit
- Country — donut chart from
country_code - Browser, device, OS — from tracker enums
Realtime (last 5 minutes)
The realtime view shows active visitors from recent events and Supabase Realtime subscriptions. Metrics like "last 5 min" pageviews are a rolling window, not the same as the 7/30-day overview.
What is not filtered today
- Server-side bot exclusion — bots are blocked in the tracker by User-Agent, but events inserted directly into the database are not filtered when aggregating stats.
- Logged-in users — use
OpenAnalytics.identify()fordistinct_id; visitor counts still usevisitor_id.