Winning Back Dormant Users — What Their Last Sessions Tell You
Users who go quiet have not all left for the same reason. Learn how to segment dormant users by what they did before going silent, what their final sessions reveal, and how to design a win-back message that matches the cause.
Short answer: a generic "we miss you" email treats all inactive users alike, and most ignore it. Dormant users went quiet for different reasons: they never got started, they hit a problem, they finished what they needed, or their situation changed. Look at each person's activity before they stopped, group them by cause, and send a message that addresses that cause.
Table of Contents
- Defining Dormant
- Four Kinds of Dormant User
- Reading the Last Sessions
- Matching the Message to the Cause
- Measuring Win-Back
- Key Takeaways
Defining Dormant
Dormancy depends on how often the product should be used.
| Expected use | Dormant after |
|---|---|
| Daily | About a week of no activity |
| Weekly | Three to four weeks |
| Monthly | Two to three months |
| Seasonal | Missing an expected season |
Define it by the core action, not by logins. Someone who opens the app and does nothing is already fading.
Four Kinds of Dormant User
| Group | Before going quiet | Likely cause |
|---|---|---|
| Never started | Signed up, little or no activity | Onboarding failed |
| Hit a wall | Active, then an error, limit, or failed task | A specific problem |
| Job done | Used it for a project, completed it | No current need |
| Drifted | Usage declined gradually | Lower priority, a competitor, changed role |
The split matters because the same email cannot serve all four. A user who hit a bug does not need a discount. A user whose project ended does not need a tutorial.
Reading the Last Sessions
Identify users so their sessions can be found, then watch the final two or three sessions for a sample of each group.
- What were they trying to do?
- Did it work?
- Was there an error? Check the console timeline and JavaScript errors.
- Did they reach a limit or a paid feature?
- Did they look for something that does not exist?
- Did they export data?
- Was the last session unusually short, just a login and a glance?
Typical findings:
- An import that failed with an unclear message.
- A feature they clearly wanted, placed on a higher plan.
- A redesign after which they could not find their usual screen.
- A report generated and downloaded, with nothing afterwards. The job was done.
Recordings are kept only for your plan's retention period, so review dormancy regularly. A user who went quiet four months ago may have no sessions left to watch (retention limits).
Matching the Message to the Cause
| Group | Message | Offer |
|---|---|---|
| Never started | "Here is the quickest way to get your first result" | A shortcut, sample data, or a setup call |
| Hit a wall | "We fixed the import problem you ran into" | Specific acknowledgement and help |
| Job done | "Something new since you last visited" | A relevant new feature, a reminder at the next likely need |
| Drifted | "Here is what teams like yours are doing now" | A use case, a change they would care about |
Principles:
- Be specific. Refer to what they did or tried.
- One clear action, linking straight to the relevant place, logged in if possible.
- Fix before you ask. If a bug drove them away, resolve it first.
- Tell them what changed. A reason to look again.
- Do not rely on discounts. They help only when price was the problem.
- Respect consent and preferences. Send only to people who agreed to hear from you, and make unsubscribing simple.
- Stop after a small number of attempts.
Mentioning a specific problem a user had can feel intrusive if handled badly. Keep it helpful and general: "we have improved imports" works better than describing exactly what you saw them do.
Measuring Win-Back
- Reactivation rate: share who return and perform the core action.
- By group and by message.
- Retention after return. Do they stay for a month, or visit once?
- A holdout. Keep a random share who receive nothing. Some dormant users return unaided, and without a holdout you credit the email for them.
Track the return:
deepsync("track", "reactivated", { campaign: "import-fix" });Then watch the returning sessions. Does the user succeed this time, or meet the same obstacle?
Prevention is cheaper than win-back. The patterns you find in final sessions are a list of things to fix so fewer users go dormant (cancellation analysis).
Review newly dormant users monthly
Catching someone three weeks after their last session, while you can still see what happened, is far more effective than a campaign to a year-old list.
Key Takeaways
- Dormant users fall into distinct groups with different causes.
- Their final sessions show what went wrong, while recordings still exist.
- Match the message to the cause and fix problems first.
- Use a holdout to measure the real effect.
Conclusion
A user who went quiet is not always lost, and is rarely won back by a message that could have gone to anyone. Find out why they stopped, and speak to that.
Frequently Asked Questions
Related articles
Stay in the loop
Get the latest insights on product analytics and user behavior delivered to your inbox.



