Product Analytics for Pro 2
Open
@Sancus is already working on this.
Since Jun 13, 2026.
Product
- Dominant language
- No language data
- Stars
- 9
- Forks
- 3
- PR merge metrics
- No merged PRs in 30d
Description
Objective
Continue Product Analytics / Metrics for Pro: ship the remaining Pro-wide telemetry so PostHog answers usage and health questions per service, with the same privacy model (hashed distinct_id, no content, gated on POSTHOG_API_KEY).
🟢 In Scope (carryover)
- Aggregate daily snapshot metrics (subscription counts, waitlist, mail provisioning) not yet instrumented or surfaced in PostHog
- Per-user activity signals (boolean flags and byte counts only)
- PostHog dashboards and alerts for new signal areas
- Instrumentation in Appointment and Send services (not started in prior milestone)
🔴 Out of Scope
- Reading or indexing email/file/calendar content
- Building custom analytics UI inside the accounts app
Technical and/or Business Requirements
- All
distinct_idvalues must be SHA-256 hashed; no raw UUIDs or emails reach PostHog - All collection gated behind
POSTHOG_API_KEY— zero events without it - Test accounts excluded from all counts
Remaining proposed metrics (from milestone 1 checklist)
Pro General
| Metric | Source | Cadence |
|---|---|---|
| Total active (paying) subscribers | Subscription model, status=active |
Daily |
| Remaining waitlist users | AllowListEntry where user is null |
Daily |
| Waitlist conversion rate | Converted / total AllowListEntry |
Daily |
Accounts / sign-up flow (PostHog)
Tracked in thunderbird-accounts#164.
| Metric / signal | Source | Cadence |
|---|---|---|
| Sign-up and onboarding usage in Accounts | Accounts app UI / API (PostHog events) | Per-event / derived |
| Sign-up and auth-flow usage in Keycloak | Keycloak (events forwarded or mirrored into PostHog where applicable) | Per-event / derived |
Thundermail
| Metric | Source | Cadence |
|---|---|---|
| Quota usage per user (bytes + %) | Stalwart API usedQuota |
Daily |
| Users at storage extremes (<1%, >90%) | Derived from quota data | Daily |
| Active mail accounts provisioned | Account model, active=True |
Daily |
Appointment
| Metric | Source | Cadence |
|---|---|---|
| Weekly active users (page views) | Appointment service | Per-event |
| % of users with availability configured | Appointment service | Daily |
| Bookings created by clients | Appointment service | Per-event |
| % of users receiving bookings | Appointment service | Weekly |
Send
| Metric | Source | Cadence |
|---|---|---|
| MAU / WAU | Send service | Per-event |
| Median storage usage | Send service | Daily |
| Users at storage extremes | Send service | Daily |
| File downloads by recipients | Send service | Per-event |
| Files reported (abuse) | Send service | Per-event |
Sub-issues: thunderbird-accounts#164 (sign-up flow metrics — Accounts + Keycloak), thunderbird-accounts#802 (subscription trends in PostHog), thunderbird-accounts#815 (activity split by account status), thunderbird-accounts#816 (invite → subscriber conversion: invites sent vs subscriptions).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.