Dashboard Reference
Doppler Dashboard
Everything you need to understand what Doppler is tracking, what each number means, and how to act on it.
What is Doppler?
Doppler is an automated user recovery engine. It watches your users in real-time and automatically sends them personalized emails when they go quiet — before they churn. You install the SDK in your app, Doppler monitors the lifecycle signals, and the engine decides when and what to send.
Think of it as a growth co-pilot that never sleeps: it monitors every user, scores their engagement, detects drop-offs, and sends recovery messages tailored to exactly where they dropped off in your product.
| Doppler does this | So you don't have to |
|---|---|
| Monitor every user's lifecycle | Manually reviewing user dashboards |
| Score engagement and detect drop-offs | Building churn prediction models |
| Send personalized emails at the right time | Writing and scheduling email campaigns |
| Capture cancellation feedback | Exit survey tools |
| Report how much revenue was recovered | Connecting analytics + CRM + revenue data |
How it works
Doppler works in three layers — your app sends signals, the engine processes them, and the dashboard shows you results.
You install the SDK
Two lines of code in your app. doppler.init() at startup, doppler.identify() after login, doppler.coreAction() when something important happens. That's it.
Doppler classifies each user
Every user gets placed into a lifecycle flow based on their behavior. Signed up but never did the core action? Flow A. Did it once then disappeared? Flow B. Trial ending soon? Flow C. Usage dropped? Flow E.
The engine decides what to send
Based on each user's flow type, health score, and inactivity window, Doppler crafts and sends recovery emails. No templates — the AI writes copy tailored to your product description and each user's state.
Dashboard shows you the results
You see recovered users, opened emails, revenue recovered, churn feedback, and trend graphs in real time. Every number is actionable.
Overview tab
The Overview is your command center. It loads automatically when you open a workspace. Every key metric about your users, emails, and recovery performance is visible here.
Top metric cards
Six cards at the top give you the health of your workspace at a glance. Each card has a sparkline showing 14-day trend.
- Total Users — Total number of users Doppler has ever seen (all
identify()calls). - Inactive Users — Users who haven't been seen within the project's inactivity threshold (configurable in Settings).
- At Risk — Users whose engagement score has dropped to a warning level. These are pre-churn signals.
- Emails Sent — Total recovery emails dispatched by the Doppler engine.
- Recovered — Users who became active again after receiving a Doppler email. The gold metric.
- Reactivation Rate — Recovered ÷ Inactive × 100. Tells you how effective Doppler's engine is for your product.
Activation Gap section
Below the metric cards, you'll see an Activation Gap breakdown if Doppler detects users who haven't reached key milestones:
- Signed up but never set up — Users who have never called
onboardingStarted()or later milestones. These users haven't engaged at all. - Set up but never hit core action — Users who completed onboarding but never called
coreAction(). They started but didn't get real value.
These percentages are of total inactive users — not all users. A 100% in "Set up but never hit core action" means every inactive user went through onboarding but stalled before the AHA moment.
Doppler Engine status panel
A notification panel shows you what the engine is actively doing right now — how many inactive users were detected, how many have been recovered so far, and the current engine status. This refreshes automatically.
Recovery trend graph
An SVG line chart showing daily recovery counts over the last 14 days. Each point is a day; the Y axis scales to your peak recovery day. Use this to see if your recovery rate is growing or flattening.
Metrics explained
Every number on your dashboard has a specific definition. Here's exactly what each one means and how to act on it.
Activity feed
The right side of the Overview shows a live activity feed — a chronological list of everything Doppler has done and everything users have done.
Event types in the feed
- email_sent — A recovery email was sent to a user. Shows subject line, flow type, and recipient.
- churn_feedback — A user submitted a cancellation reason via
captureChurnFeedback(). Shows their reason and optional comment. - revenue — A revenue event was tracked via
trackRevenue(). Shows amount and label.
Recovery graph
The recovery graph on the Overview is an SVG trend line showing daily recovery counts over the last 14 days. It's built from the project_daily_metrics table which is updated by a trigger every time a user's status changes.
What counts as a recovery
A "recovery" is recorded when a user who was previously inactive sends any new event — a heartbeat, a milestone, a revenue event. Doppler marks reactivatedAt and increments that day's recovery count.
Reading the graph
A flat line near zero means no inactive users are coming back. A rising line means your recovery emails are working. A spike followed by a drop often means a one-time broadcast email went out — check the Broadcast tab for the date.
Users tab
The Users tab lists every user Doppler is tracking in this workspace. It's a searchable, filterable table with real-time health scores.
Columns
- User — Email address of the user. Avatar is their initial.
- Flow — Which recovery flow they're in. See the Flows section for what each flow means.
- Last Seen — Time since Doppler last received any event from this user (heartbeat or SDK call).
- Core Event — Time since their last
coreAction()call. "Never" means they've never hit the AHA moment. - Health — Healthy / At Risk / Critical based on the decay score model.
- Status — Active (seen recently) or Inactive (beyond inactivity threshold).
Health vs Status — what's the difference?
Status is binary: active or inactive based purely on time since last seen vs your inactivity threshold.
Health is a gradient: it measures core event decay. A user can be "Active" (seen recently) but "At Risk" (their core event cadence has slowed). This is how Doppler catches early-stage churn before the user fully disappears.
Filters
You can filter by flow type: All, No AHA, Drifted, Trial End, Returning, Usage Drop. Use the search box to find a specific user by email.
What you can do
Currently: view and inspect. Individual user recovery actions (manual email, suppression, unsubscribe override) are coming in a future release. Unsubscribed users are visible but marked — Doppler will never email them.
Flows tab
The Flows tab shows you how many users are in each recovery flow and what that flow means. Each flow has a different recovery strategy and email sequence.
Trigger: User signed up but never called coreAction()
Strategy: Gets them to try the core thing — the AHA moment. Emails focus on value proposition and ease of getting started.
"Hey, you signed up 3 days ago but haven't tried [core feature] yet. Here's how to get your first [result] in 2 minutes."
Trigger: User was engaged (hit coreAction or projectCreated) but went quiet
Strategy: Reminds them of their existing progress and pulls them back. Emails reference what they've already built.
"You set up your [thing] but haven't been back in a while. Here's what you left off."
Trigger: User's trial is ending soon (planDaysLeft passed to identify())
Strategy: Urgency-based. Creates FOMO around losing access. May include an upgrade prompt.
"Your trial ends in 2 days. Here's everything you'll lose access to."
Trigger: User reactivated after being inactive (came back on their own)
Strategy: Welcoming and forward-looking. Celebrates their return and shows what's changed or improved.
"Welcome back! Here's what's new since you were last here."
Trigger: User was previously active but core event cadence has declined
Strategy: Gentle check-in. Acknowledges their history and asks if something changed. Often highest-value recovery.
"You used to [core action] every week — we noticed it's been a while. Is everything okay?"
Emails tab
The Emails tab is a full log of every recovery email Doppler has sent through its engine for this workspace.
What you'll see
- Subject — The subject line of the email as sent.
- Flow — Which recovery flow triggered this email (A, B, C, D, E).
- Type — The email type within the flow (e.g. initial nudge, follow-up, final reminder).
- Sent to — The recipient's email address.
- Sent at — Exact timestamp of when the email was dispatched.
- Recovered? — Whether this specific email resulted in a user becoming active again.
What you can do
Currently view-only. Email editing, A/B testing, and per-user suppression are on the roadmap.
Broadcast tab
Broadcast lets you send a one-time manual message to a segment of your users. Unlike the recovery engine (which is automated), Broadcast is for deliberate, human-initiated outreach — product announcements, changelogs, special offers.
Broadcast vs Recovery Emails — what's the difference?
- Recovery Emails — Sent automatically by the engine. Triggered by user behavior. Personalized per-user based on their flow state.
- Broadcast — Sent manually by you. Not behavior-triggered. Same message to a filtered audience segment.
Audience options
- All Users — Every tracked user in this workspace.
- Active Users — Users seen in the last 7 days.
- Inactive Users — Users with no activity beyond the inactivity threshold.
- At-Risk Users — Users whose health score is "at_risk" or "critical".
Broadcast types
- Email — Sends an email to each user in the selected segment. Requires a subject and body.
- In-App — Sends an in-app notification (requires in-app SDK integration — coming soon).
AI Draft button
The AI Draft button (coming soon) will generate a subject and body for your broadcast based on your product description and the selected audience. Saves you from starting with a blank page.
What you cannot do
- Send to unsubscribed users — Doppler enforces this automatically.
- Schedule broadcasts for a future time (coming soon).
- Create recurring broadcasts (use the engine's automated flows for that).
Feedback tab
The Feedback tab shows all cancellation and churn reasons submitted by your users via the captureChurnFeedback() SDK call.
Feedback reasons
When a user cancels or downgrades, you can call captureChurnFeedback(reason, comment) in your cancel flow. The reason must be one of:
too_expensive— Price was the blockertoo_complex— Too hard to use or learnfound_alternative— They switched to a competitornot_needed— They solved the problem a different wayother— Catch-all, requires a comment
Using feedback data
This is your qualitative churn signal. If 60% of feedback says "too expensive", that's a pricing problem. If it's "too complex", that's an onboarding/UX problem. Combine this with the Flows data to see which flow type correlates with which churn reason.
Settings tab
Per-workspace configuration. Changes here affect how Doppler classifies and recovers users in this workspace.
Configurable fields
- Product description — Used by the AI to generate more relevant, contextual recovery emails. Be specific: what does your product do, who uses it, what's the core action.
- Inactivity threshold (days) — How many days of silence before a user is classified as "inactive". Default: 7. Adjust based on your product's natural usage cadence (a daily tool = 2 days, a weekly tool = 10 days).
- Avg. Revenue Per User (ARPU) — Monthly revenue per user in USD. Used to calculate Revenue Recovered and Revenue at Risk on the Overview.
Danger zone
The Settings tab also has a Delete Workspace option. This permanently deletes all users, emails, activity, and metrics for this project. Type the workspace name to confirm. This is immediate and irreversible.
Client key vs Server key
Doppler gives each workspace two API keys with different permission levels. Using the wrong one is a common setup mistake.
Starts with pk_client_
- ✅ Safe to embed in browser JavaScript
- ✅ Used in
doppler.init() - ✅ Cannot write to sensitive data
- ✅ Cannot access other workspaces
- ❌ Cannot delete users or projects
- ❌ Cannot read your full user list
Starts with sk_
- ❌ Never put this in browser code
- ❌ Never commit to git
- ✅ Use in server-side API calls only
- ✅ Can access admin APIs
- ✅ Use in environment variables
Finding your API keys
Your API keys are workspace-scoped — each workspace has its own key pair.
Open any workspace from the main app screen.
Look at the top bar — you'll see a "Developers" dropdown button.
Click "Developers" → select "Client Keys" to copy your public client key for the SDK.
Click "Developers" → select "API Keys" to access your secret server key for backend use.
Trial & Plans
Every new Doppler account includes a 14-day free trial with full access to all features, including the recovery engine, broadcast, and analytics.
What's included in the trial
- ✅ Unlimited user tracking
- ✅ All 5 recovery flows (A–E)
- ✅ Broadcast emails
- ✅ Dashboard analytics and metrics
- ✅ Churn feedback collection
- ✅ Full API access
What happens when the trial ends
After 14 days, if you haven't upgraded to a paid plan, the Doppler engine is paused. Your data is preserved — no users or emails are deleted. You can upgrade at any time from the Billing page in your account settings to resume the engine immediately.
Cancelling a plan
You can cancel your subscription at any time from Account → Billing. Your access continues until the end of the current billing period. After that, the engine pauses and you return to a read-only view of your data.
Looking for SDK docs? View the SDK reference →