
Subscription win-back campaigns: email vs in-app (and how to combine them)
Compare email and in-app win-back channels for subscription apps, including timing, personalization, and a combined playbook to reactivate churned subscribers.
Churned subscribers are among the cheapest users to win back because they already know your product. Most teams start with email: a sequence at day 7, day 30, and day 90 with escalating offers. Email works, but it is not the only channel. In-app win-back reaches users who still open the app, surfaces Apple win-back offers at the right moment, and personalizes on cancel reason captured inside the product.
This guide compares email and in-app win-back, outlines timing for each, explains personalization strategies, cautions on discounting, and shows how to combine both channels into one journey without conflicting messages.
Why win-back deserves two channels
Email and in-app solve different delivery problems:
| Factor | In-app | |
|---|---|---|
| Reach after uninstall | Yes (if you have address) | No |
| Reach for silent churners who still open app | Easy to miss | Strong |
| Rich interactive UI | Limited | Native flows |
| Apple win-back offer presentation | Link out | In-product |
| Personalization on cancel reason | Merge tags | Real-time branching |
| Measurement | Opens, clicks, resubscribe | Funnel steps, outcomes |
RevenueCat and lifecycle email vendors publish strong playbooks for email sequences. Rheo focuses on the in-app half: remote flows triggered by churn signals, cancel surveys, and offer surfaces. The best programs use both.
Channel comparison table
| Dimension | Email win-back | In-app win-back |
|---|---|---|
| Best trigger | Lapsed billing, trial ended | Cancel event, failed renewal, return session |
| Strength | Scale, narrative, reminders | Context, UI, immediate action |
| Weakness | Spam filters, stale addresses | Requires app open |
| Typical KPI | Resubscribe rate per send | Flow completion, offer acceptance |
| Compliance | CAN-SPAM, GDPR consent | Store policies, offer eligibility |
Neither channel replaces fixing the product reasons people churn. Win-back amplifies recovery when you already understand why users left.
Email sequence timing (7 / 30 / 90)
Email win-back sequences are well documented in subscription growth literature. A practical default:
Day 0–1: Confirmation, not sales
Send receipt-style acknowledgment of cancellation with a single helpful link (manage subscription, export data). Avoid hard selling. Trust preserves future opens.
Day 7: Value reminder
Short note reframing what they lose access to, grounded in features they used (if data exists). One CTA to resubscribe. Subject lines that reference personal usage outperform generic "come back" copy.
Day 30: Proof and social proof
Case study, testimonial, or product update since they left. Good for users who churned because of missing features.
Day 90: Offer (optional)
If your unit economics allow, introduce a limited win-back discount or extended trial. Measure payback, not just conversion spike.
Measurement: track resubscribes attributable to each send, not only click rate. Email clicks that do not convert may still pollute in-app attribution if UTM links fight with product flows.
In-app triggers that work
In-app win-back activates when product signals fire:
| Trigger | Flow behavior |
|---|---|
| User completes cancel survey | Branch on reason: price, missing feature, temporary pause |
| Subscription lapses but app opens | Full-screen win-back with offer or plan change |
| Failed payment (billing retry window) | Prompt to update payment method |
| Return after 14+ days inactive | Short value recap then offer |
| iOS win-back eligibility | Present Apple's promotional offer in context |
Rheo ships win-back as a channel pattern: screens, decision nodes on cancel reason traits, and optional RevenueCat paywall nodes for resubscribe. Publish changes remotely when offer copy or branch logic changes.
Timing inside the app
- Immediate post-cancel: capture reason before the user emotionally disengages. One to two screens max.
- Next session: if they declined an offer at cancel, try a softer education beat before price.
- Cooldown: do not show the same win-back modal every launch. Cap frequency and respect dismissals.
Personalization by cancel reason
Cancel surveys pay off when downstream paths differ:
| Reason selected | In-app path | Email complement |
|---|---|---|
| Too expensive | Plan downgrade or timed discount | Day 7 value vs price framing |
| Not using enough | Habit tips, re-onboarding mini flow | Feature highlight drip |
| Missing feature | Roadmap screen, notify-me capture | Product update when shipped |
| Temporary break | Pause narrative, easy return | Light touch at day 30 |
| Technical issues | Support CTA, status link | Personal support outreach |
Store reason as a trait or SDK attribute so email and in-app stay consistent. If in-app captures "too expensive," email should not pitch premium feature depth as the lead message.
Discount caution
Discounts lift short-term resubscribe rates and erode long-term ARPU if overused.
Guidelines:
- Segment offers to users who cited price, not everyone.
- Cap depth and document payback windows.
- Prefer annual or bundled value over perpetual cheap monthly.
- Use Apple win-back offers where eligible instead of custom coupon chaos on iOS.
- Holdout groups protect against false wins from users who would have returned anyway.
In Rheo, route price-sensitive users to offer screens with decision nodes rather than showing discounts globally in the default path.
Combined journey diagram
A coherent cross-channel journey might look like this:
Cancel in app
→ In-app: reason survey + tailored offer (Rheo)
→ If dismissed: email day 1 (acknowledgment)
→ If still lapsed day 7: email value reminder
→ If app opened day 10: in-app short flow (no duplicate email offer)
→ Day 30: email product update
→ Day 90: email offer if still churned and eligible
Rules that prevent collisions:
- One active offer narrative per user per week across channels
- Shared trait for "accepted offer" or "dismissed three times"
- Suppression if user resubscribes on any channel
- Consistent pricing across email landing and in-app paywall
Metrics that matter
Track channel-specific and blended metrics:
| Metric | In-app | Blended | |
|---|---|---|---|
| Resubscribe rate | Per send / cohort | Per flow variant | 30-day win-back |
| Revenue recovered | LTV of won backs | Same | Payback vs discount cost |
| Survey completion | N/A | Step completion | Reason distribution |
| Uninstall rate post-cancel | N/A | Optional | Guardrail |
Primary success: net revenue recovered after discounts and fees, not modal acceptance rate alone.
Rheo's role in the stack
Rheo does not send email. It owns:
- Cancel survey and branching flows
- Win-back screen sequences published over the air
- Integration with RevenueCat paywall nodes for resubscribe
- Step analytics on which win-back paths recover revenue
Pair with your ESP (Customer.io, Braze, etc.) or RevenueCat's lifecycle tooling for email. Trigger emails from the same churn webhooks that arm in-app channels.
For iOS win-back offers, combine Apple's promotional mechanics with in-app presentation patterns documented in Rheo's lifecycle content. Eligibility rules change; verify current Apple developer documentation before shipping.
Webhooks and triggers (technical overview)
In-app win-back flows start from events your backend or billing provider already emits:
| Event source | Typical signal | In-app action |
|---|---|---|
| RevenueCat webhook | CANCELLATION or EXPIRATION | Arm win-back channel on next open |
| App Store Server Notifications | DID_CHANGE_RENEWAL_STATUS | Survey or offer eligibility |
| Product analytics | Session after 14 days idle | Re-engagement beat |
Rheo resolves the appropriate channel when the SDK requests a flow for that moment. You do not need a new binary to change copy or branch rules after the trigger fires. Email can subscribe to the same webhooks so both channels stay synchronized.
Engineering checklist:
- Map churn events to a stable user id shared with the Rheo SDK
- Avoid duplicate prompts if email deep link and in-app flow fire the same day
- Log dismissals as traits so users are not nagged every session
Legal and store policy reminders
Win-back offers touch pricing and marketing law:
- Honor marketing opt-out for email even if in-app flows remain eligible
- Present subscription terms clearly on in-app offer screens
- Follow Apple and Google promotional offer rules; custom coupons on iOS have constraints
- Document discount eligibility in your finance model
When in doubt, pair legal review with a small holdout before rolling aggressive offers to all churned users.
Sample calendar: first 90 days after launch
| Week | In-app | |
|---|---|---|
| 1 | Acknowledgment template | Cancel survey plus reason branch |
| 2–4 | Build day 7 value email | Offer screen for price-sensitive cancels |
| 5–8 | Measure resubscribe per send | A/B offer copy in Rheo |
| 9–12 | Add day 30 product update | Re-entry flow for returning opens |
Adjust cadence to your churn volume. Low churn apps need lighter touch; high volume subscription apps benefit from tighter coordination between ESP and in-app triggers.
Summary
Email win-back scales reminders and narrative across users who no longer open the app. In-app win-back captures context at cancel time and presents native offers when users return. Combine them with shared traits, non-overlapping offers, and disciplined measurement.
Start with cancel reason capture in-app, add a measured email sequence, and iterate both sides with the same definitions of churn and recovery.
Start for free and publish your first in-app win-back flow in Rheo.