Win Back Churned Users with Re-engagement Workflows
Acquiring a new customer costs 5x more than retaining an existing one. Here's how to win back users who've gone quiet.
The Re-engagement Opportunity
Not all churned users are lost forever. Many leave because:
- Life got busy
- They forgot about your product
- They hit a temporary roadblock
- Your product evolved past their last impression
A well-designed win-back campaign can recover 5-10% of inactive users.
Defining "Inactive"
First, define what inactive means for your product:
// Track activityawait fbf.identify({ userId: 'user-123', traits: { lastActiveAt: new Date().toISOString(), activityScore: calculateActivityScore(user) }});Common definitions:
- SaaS: No login in 14-30 days
- E-commerce: No purchase in 60-90 days
- Mobile app: No session in 7-14 days
The Win-Back Sequence
Phase 1: The Gentle Reminder (Day 14-30)
Start soft. They might just be busy.
{ "trigger": "user.inactive", "condition": "daysSinceLastActive >= 14 && daysSinceLastActive < 30", "actions": [ { "type": "notify", "channel": "email", "template": "we-miss-you", "variables": { "lastActivity": "{{user.lastActiveAt}}", "newFeatures": "{{getRecentFeatures()}}" } } ]}Email content ideas:
- "Here's what you missed" - new features, updates
- "Your projects are waiting" - remind them of their work
- "Need help?" - offer support
Phase 2: The Value Reminder (Day 30-45)
Show them what they're missing.
{ "trigger": "user.inactive", "condition": "daysSinceLastActive >= 30 && daysSinceLastActive < 45", "actions": [ { "type": "notify", "channel": "email", "template": "value-reminder", "variables": { "achievements": "{{user.previousAchievements}}", "peersActivity": "{{getSimilarUserActivity()}}" } }, { "type": "wait", "duration": 86400 }, { "type": "notify", "channel": "push", "title": "Quick tip for {{user.firstName}}", "body": "Did you know you can {{relevantFeature}}? Tap to try →" } ]}Content ideas:
- "Users like you are seeing X results"
- "You achieved Y - keep the momentum"
- Customer success stories
Phase 3: The Incentive (Day 45-60)
If reminders don't work, offer value.
{ "trigger": "user.inactive", "condition": "daysSinceLastActive >= 45 && daysSinceLastActive < 60 && !user.hasReceivedWinbackOffer", "actions": [ { "type": "notify", "channel": "email", "template": "comeback-offer", "variables": { "discount": "25%", "expiresIn": "7 days", "offerCode": "{{generateOfferCode(user)}}" } }, { "type": "update_user", "attributes": { "hasReceivedWinbackOffer": true, "winbackOfferSentAt": "{{now}}" } } ]}Incentive ideas:
- Discount on next purchase/renewal
- Extended trial period
- Free month of premium
- Exclusive feature access
Phase 4: The Last Chance (Day 60-90)
Create urgency and finality.
{ "trigger": "user.inactive", "condition": "daysSinceLastActive >= 60 && daysSinceLastActive < 90", "actions": [ { "type": "notify", "channel": "email", "template": "account-notice", "variables": { "dataRetentionDays": 30, "exportUrl": "{{getDataExportUrl(user)}}" } }, { "type": "wait", "duration": 604800 }, { "type": "notify", "channel": "sms", "message": "{{user.firstName}}, your {{appName}} account will be archived in 7 days. Save your data: {{exportUrl}}", "condition": "user.smsOptIn" } ]}Segmented Win-Back Strategies
By Value Tier
// High-value users get personal outreachuser.lifetimeValue > 500 && daysSinceLastActive >= 14For high-value users:
- Personal email from account manager
- Phone call offer
- Concierge re-onboarding
By Churn Reason
If you track why users leave:
// Price-sensitive churns get discount offersuser.churnReason == "too_expensive" && daysSinceLastActive >= 30By Previous Engagement
// Previously highly engaged usersuser.previousActivityScore > 0.8 && daysSinceLastActive >= 14These users loved your product once - find out what changed.
Exit Intent Prevention
Don't wait for churn. Catch signals early:
// Declining engagementuser.activityScore < 0.3 && user.previousActivityScore > 0.7{ "trigger": "engagement.declining", "actions": [ { "type": "notify", "channel": "in_app", "template": "engagement-survey", "message": "Quick question - how can we help you get more value?" } ]}Measuring Success
Track these metrics:
- Reactivation rate: % of inactive users who return
- Reactivation by channel: Which touches work best
- Time to reactivate: How long the sequence takes
- Retained reactivations: Do they stay active?
- Revenue recovered: LTV of reactivated users
Don't Spam
Important rules:
- Respect unsubscribes - if they opt out, stop
- Limit frequency - don't email daily
- Have an end - stop after 90 days
- Easy opt-out - every message should have one
Getting Started
- Define your inactivity threshold
- Segment by user value/behavior
- Design your sequence (4 phases)
- Set up tracking for measurement
- Test with a small cohort first