Analytics
How WaitKit subscriber analytics are collected. IP geolocation for country data, user-agent parsing for device detection, source tracking, and why signup requests must come from the browser for accurate analytics.
What gets tracked
Every subscriber signup captures three analytics dimensions automatically:
| Dimension | Source | Example values |
|---|---|---|
| Country | IP geolocation | US, ET, DE, unknown |
| Device | User-agent parsing | desktop, mobile, tablet |
| Source | SDK source field | landing-page, twitter |
Why client-side calling matters
The analytics dimensions depend on data that only exists in the subscriber's browser:
- Country is derived from the subscriber's IP address, not your server's IP
- Device is parsed from the subscriber's
User-Agentheader - Source can be read from the browser URL (
?source=or?s=)
If you call subscribers.create() from a server (Next.js Server Action, Express route handler, etc.), every subscriber will appear to come from your deployment server's location and device, making the Countries and Devices analytics meaningless.
Always call the join endpoint from the browser.
How each dimension works
Country
The API derives the country from the subscriber's IP address.
Device
The API classifies the device as desktop, mobile, or tablet from the subscriber's user-agent.
Source
The source field is set by the SDK (or API caller). If no source is provided, it defaults to "landing-page". See the Source Tracking guide for the full resolution chain.
Analytics endpoints
The dashboard provides these analytics views:
| View | What it shows |
|---|---|
| Overview | Total, today, this week, this month counts with % change vs prior period |
| Growth | Time-series data for charting (hourly/daily/weekly/monthly granularity) |
| Countries | Breakdown by country with percentages |
| Devices | Breakdown by device type with percentages |
| Sources | Breakdown by signup source with percentages |
Time-range filtering (7d, 30d, 90d, all) adjusts the granularity - shorter ranges use hourly or daily buckets, longer ranges use weekly or monthly.
How WaitKit Works
The WaitKit signup request lifecycle, duplicate prevention for the same email on a project, and asynchronous confirmation email delivery.
Security
WaitKit security model explained. API key generation and hashing, Bearer token authentication, key rotation best practices, project-scoped keys, and session authentication for the dashboard.
