# Win-Back Strategies for Churned and Dormant Users

How to re-engage users who stopped coming back — defining dormancy, sequencing win-back messages, writing copy that works, and knowing when to stop.

Author: The Tappd Team · Engineering at Tappd
Date: 2026-06-14
Category: Guides
Canonical URL: https://tappd.io/blog/re-engagement-winback-campaigns

Every app loses users. The question isn't whether people will go dormant — it's whether you have a system to bring them back when they do.

Win-back campaigns are among the highest-ROI messaging flows you can build: the users already know your product, they already installed the app, and bringing them back is almost always cheaper than acquiring someone new. But most win-back programs fail because they send generic "we miss you" messages to everyone who's been gone a week.

This guide covers how to define dormancy for your app, sequence messages that actually work, and know when to stop.

## Define dormancy for your product

"Dormant" doesn't mean the same thing for every app. A user who's been away 7 days from a daily habit app is very different from someone who's been away 7 days from a tax preparation app.

**Find your natural frequency first:**

1. Look at retained users (people active in the last 30 days).
2. Calculate the median days between sessions.
3. Set dormancy at 2–3x that median.

| App usage pattern | Median session gap | Dormancy threshold |
|---|---|---|
| Daily (social, messaging) | 1 day | 7 days inactive |
| Weekly (fitness, food delivery) | 5–7 days | 14–21 days inactive |
| Monthly (finance, travel, B2B) | 14–30 days | 30–45 days inactive |

Segment dormancy into tiers. A user gone 7 days needs a different message than one gone 60 days:

- **Soft dormant** (7–14 days): gentle reminder, assume they'll come back on their own soon.
- **Hard dormant** (15–30 days): stronger nudge, highlight what they're missing.
- **Churned** (30+ days): last-chance message, potentially different channel (email vs push).

## Why they left (and what to say)

Generic "come back!" messages perform poorly because they ignore why the user stopped coming. Before writing copy, look at what the user did *before* they went dormant:

| Last known behavior | Win-back angle |
|---|---|
| Abandoned cart or checkout | "Your items are still waiting" |
| Completed setup but never activated | "Ready to try [feature]?" |
| Was active, then stopped suddenly | "Here's what's new since you left" |
| Used one feature repeatedly | "Your [projects/workouts/orders] are still here" |
| Never completed onboarding | "Finish setting up — takes 30 seconds" |
| Cancelled subscription | "We've made changes — worth another look?" |

The more specific the reason, the higher the return rate. "Your cart with the Nike Air Max is still saved" beats "Check out our latest deals" by a wide margin.

Use profile data and recent events to personalize. You already have this information — use it.

## The win-back sequence

A single message rarely brings someone back. A short sequence with escalating urgency works better — but each message must offer something new, not repeat the same ask.

**Message 1 — The reminder (day 0 of dormancy)**

Focus: unfinished business or personal context.

```
Title: "Your project is still here"
Body:  "You left off editing 'Q3 Report'. Pick up where you left off."
```

No discount. No urgency. Just a factual reminder tied to their last action.

**Message 2 — The value add (day 3–5)**

Focus: what's changed or what they're missing.

```
Title: "We added [feature] since your last visit"
Body:  "Based on how you used [feature], we think you'll like the new [thing]."
```

Show them the product improved. This works especially well for SaaS and content apps where new features give lapsed users a fresh reason to return.

**Message 3 — The final nudge (day 7–10)**

Focus: easy re-entry with optional incentive.

```
Title: "Last reminder — your account is waiting"
Body:  "Tap to jump back in. Your data and settings are exactly where you left them."
```

Keep it short. Make the tap target land them directly in their last context, not the home screen.

After message 3 with no response, **stop**. Move the user to a long-term dormant segment. Re-evaluate in 30–60 days with a genuinely new angle — a major feature launch, a seasonal hook — not the same "we miss you" copy.

## Channel selection

Not every dormant user should get a push. Match the channel to how long they've been gone and what permissions they still have:

| User state | Best channel |
|---|---|
| Soft dormant, push enabled | Push notification |
| Hard dormant, push enabled | Push, then email if no open |
| Push disabled | Email |
| 60+ days dormant | Email only (if subscribed) |
| Never activated | In-app on next organic visit |

**Push** works for users who still trust your notifications. If they've ignored your last several pushes, another push won't help — switch to email or stop entirely.

**Email** has longer shelf life. A subject line sits in the inbox for days. Use it for hard-dormant and churned segments where push is either disabled or exhausted.

**In-app messages** aren't a re-engagement tool — they only work if the user returns on their own. But they're excellent as a *greeting*: when a dormant user opens the app, show them what's new and where they left off.

## Incentives: use them carefully

Discounts and free trials can spike return rates in the short term, but they come with tradeoffs:

**When incentives work:**

- High-LTV users who lapsed (they know the value, just need a nudge)
- Seasonal or event-driven return (holiday sale, new year)
- Users who cancelled a paid plan (address the objection that caused cancellation)

**When incentives backfire:**

- Users who never paid — you teach them to wait for deals
- Repeated win-back with escalating discounts — creates a "hold out for 20% off" pattern
- Generic "10% off everything" with no personal context

If you do offer an incentive, make it specific and time-bound: "Complete your abandoned order with free shipping — expires Friday." Not "Here's 15% off because we miss you."

## Exit rules and suppression

Win-back flows need explicit exit criteria to avoid messaging users who returned on their own or who are permanently gone.

**Exit the flow when:**

- User opens the app (any session counts)
- User completes the activation or conversion event
- User explicitly unsubscribes or disables notifications
- All sequence messages have been sent with no engagement

**Suppress win-back when:**

- User is in an active onboarding flow (don't compete with onboarding messages)
- User recently received a transactional push (order update, security alert)
- User is in a separate active journey (cart recovery, trial expiry)
- User has uninstalled (detect via push token invalidation)

Overlapping messages from different flows is a common source of over-messaging. Coordinate segments so a user is only in one outbound sequence at a time.

## Measure win-back properly

Track these metrics for every win-back campaign:

| Metric | Target |
|---|---|
| Return rate (session within 72h of send) | 5–15% for push, 2–5% for email |
| Activation rate (completed key action after return) | Higher than organic return rate |
| 7-day retention after return | Compare to never-dormant users |
| Uninstall / opt-out rate post-send | Should not spike |
| Revenue recovered (if applicable) | Cart recovery, subscription reactivation |

Always compare against a holdout group. If 8% of users return after a win-back push but 6% of the holdout group returns organically, the message only drove a 2-point lift — not 8%.

## When to let go

Some users aren't coming back, and that's fine. Continuing to message someone who hasn't opened your app in 90 days wastes effort and risks an uninstall that permanently removes any future chance of return.

**Signs it's time to stop:**

- 3+ win-back messages with zero engagement
- Push token invalidated (app uninstalled)
- Email hard bounced or marked as spam
- User explicitly unsubscribed from marketing

Move these users to a suppression list. Revisit quarterly — not weekly — with a materially different offer or angle tied to a product change.

The best win-back program isn't the one that messages the most users. It's the one that sends the right message to the right lapsed user at the right time — and stays quiet when there's nothing useful to say.

---

[All posts](https://tappd.io/blog) · [Tappd](https://tappd.io/)