Tools
Analytics
Privacy-friendly page view and visitor tracking. No cookies, no cookie banners. Works automatically once the embed script is installed.
What’s tracked#
Analytics tracking starts automatically when the embed script loads. No additional configuration needed.
Page views
Every page load where the script is installed. Tracked automatically.
Unique visitors
Deduplicated using a persistent localStorage UUID with server-side hash fallback.
Referral sources
Where your traffic comes from — with per-referrer conversion rates and visitor counts.
Device breakdown
Browser, OS, mobile vs desktop, and viewport size from User-Agent parsing.
Top pages
Which pages get the most traffic, with bounce rate and conversion metrics.
Conversion funnel
Configurable 2–6 step funnel using any event type, including custom events.
Custom events
Track any user action via trackEvent(). View counts, trends, and metadata breakdowns.
Performance
Core Web Vitals (TTFB, FCP, LCP, CLS, INP) captured automatically.
Privacy model#
OperatorStack is designed to be privacy-friendly from the ground up:
- No cookies — visitor identification uses a localStorage UUID with server-side hash fallback
- Lightweight fingerprinting — a stable browser hash (SHA-256 of User-Agent, screen size, language, and timezone) is used as a fallback when localStorage is unavailable. No invasive fingerprinting techniques
- Monthly rotation — server-side visitor hashes rotate every month
- DNT respected — when enabled, honors Do Not Track headers
- No third-party requests — all data stays on your OperatorStack instance
No cookie banner needed
Conversion funnel#
The analytics dashboard includes a configurable conversion funnel. The default funnel tracks:
You can customize the funnel in the Settings tab with 2–6 steps using any combination of system events and custom events. The first step is always page_view, and the last step defines what counts as a “conversion” across all analytics.
Custom funnel example
Custom events#
Track any user action with custom events using the SDK:
// Track a button clickOperatorStack.trackEvent('pricing_click', { plan: 'pro' }) // Track a video playOperatorStack.trackEvent('video_play', { duration: 45 }) // Track a signup stepOperatorStack.trackEvent('signup_started', { source: 'hero' })Custom events appear on a dedicated Events tab in the analytics dashboard, showing:
- Total events and unique visitors per event type
- Events over time (daily chart)
- Period-over-period change for each event type
- Filter by specific event name
pricing_click). Dashboard KPIs#
| Property | Type | Description |
|---|---|---|
| Page views | number | Total page views in the selected period |
| Unique visitors | number | Deduplicated visitor count for the selected period |
| Conversions | number | Total conversions (defined by the last step of your funnel) |
| Conversion rate | percent | Conversions / unique visitors for the selected period |
Each KPI shows a % change and absolute delta compared to the previous period (e.g., current 7 days vs prior 7 days).
Filtering#
Analytics can be filtered by:
- Date range — 7 days, 30 days, or 90 days
- Host — multi-select by domain (useful if the script runs on multiple subdomains)
- Referral source — filter by traffic source hostname (Google, Twitter, etc.)
All filters apply across every metric — KPIs, charts, breakdowns, and the conversion funnel all respect the active filters.
Detail breakdowns#
Click into any metric for a paginated detail view:
- Top Pages — page URL, views, unique visitors, conversions, conversion rate, bounce rate
- Referral Sources — source URL, page views, unique visitors, conversions, conversion rate, pages/visitor
- Device & Browser — browser distribution, OS distribution, mobile vs desktop counts
- Domain Breakdown — per-domain visitors, views, and views/visitor
Time series chart#
The main chart shows three datasets on two axes:
- Left axis (y): Unique visitors + conversions (daily)
- Right axis (y1): Daily conversion rate
For 90-day views, daily data is aggregated into weekly buckets to keep the chart readable.
Installation health check#
The analytics dashboard includes an installation health indicator that validates your embed script is working correctly:
- Healthy — events received in the last 24 hours
- Degraded — events in the last 7 days but not 24 hours
- Stale — older data exists but nothing recent
- No data — no events received yet
Per-domain status is shown when the script runs on multiple domains, with top pages and visitor counts for each.
Performance monitoring#
When performance monitoring is enabled, the embed script captures Core Web Vitals automatically:
- TTFB — Time to First Byte
- FCP — First Contentful Paint
- LCP — Largest Contentful Paint
- CLS — Cumulative Layout Shift
- INP — Interaction to Next Paint
Timezone support#
All analytics are computed in your local timezone so day boundaries align with your expectations. Your timezone is auto-detected on signup and can be changed in account settings. Projects can also have their own timezone override.
Settings#
| Property | Type | Description |
|---|---|---|
| enabled | boolean | Enable or disable analytics tracking for this project (default: true) |
| respectDoNotTrack | boolean | Honor the browser DNT header (default: true) |
| excludePaths | string[] | URL paths to exclude from tracking (supports wildcards) |
| funnel | object | Custom funnel configuration with 2–6 steps. Configurable from the Settings tab in the analytics dashboard. |
| timezone | string | Project timezone for day boundaries (defaults to your account timezone) |