Reactivation Stage

Reactivation works best when you align the trigger and the offer with the churn reason.

That’s why this stage includes two campaign types:

  • Seasonal Broadcasts: Reactivate inactive users with timely “reasons to return” (New Year, holidays, challenges).
  • Save-the-Subscription (1-Month Discount): Recover users after user-initiated cancellation or payment failure with a time-boxed deep offer.

Important: Cancellation and payment failure should start with Service & Transactional Messages (fast, factual, system-triggered one-to-one emails) to confirm what happened and reduce support load.
Reactivation workflows should come after those messages — when the user is ready to reconsider.

Seasonal Broadcasts

Reactivation waves for inactive users tied to a calendar moment (New Year reset, seasonal challenge, holiday program, back-to-school, etc.).

Seasonal Broadcasts Details

✅ Start / Stop conditions

  • Start when:
    Scheduled campaign date (seasonal moment) AND user is in an inactive segment (e.g., no sessions / no core action for 14–60 days).
  • Stop when:
    User reactivates (returns to app / completes a core action) OR user opts out / becomes unreachable.

🎯 Audience

  • Inactive users (soft churn) who previously showed value but stopped using the app.
  • Optionally split into:
    • Former subscribers vs never-paid
    • High LTV vs low LTV
    • Past “power users” vs casual

⏱ Timing

  • 1st send: morning of the seasonal moment (local time zones if available).
  • Follow-up: 48–72h later only for non-responders.

📡 Channel mix

  • Email: context + details + benefits.
  • Push: short reminder + deep link.
  • In-app / App Inbox: keep the comeback message visible if the user misses push/email.

📈 Success metrics

  • Reactivation rate (return session / core action completion)
  • Incremental conversions from reactivated users
  • Lift in week-1 retention after comeback

See examples for


Cancellation & Payment Failure Winback (Deep 1-Month Discount)

A targeted reactivation workflow for users who churned via user-initiated cancellation or payment failure.
The key lever here is a time-boxed deep discount for 1 month to recover the “cart” (subscription intent) fast.

Save-the-Subscription (1-Month Discount) Details

✅ Start / Stop conditions

  • Start when:
    • User-initiated cancel: SubscriptionCanceled with consciousCancel parameter
    • Payment failure: SubscriptionCanceled with paymentFailed parameter
  • Stop when:
    • SubscriptionStarted
    • User opts out / hard bounces / suppression rules apply

🎯 Audience

  • User-initiated cancellation: users who canceled an active subscription.
  • Payment failure: active subscribers with a recent failed charge.

🔁 Workflow description

  • Structure: 2–5 messages with timers.

  • Sequence logic:

    • Send a transactional confirmation first (factual + support tone).
    • After a short cooldown, start winback with a deep 1-month discount.
    • Remind once or twice before expiry; stop immediately on recovery.
  • Messaging approach:

    • Keep it simple: “Come back for 1 month at X% off / special price.”
    • Address the reason:
      • Cancel: empathy + one-line value recap + “easy return”
      • Payment failed: “fix billing” + “keep access” + offer as a fast save

📊 Data & personalization

  • Recommended fields:
    planName, price, currency, cancelReason (if known), failReason, updateBillingDeepLink, paywallDeepLink
  • Offer control:
    Include promoCode and offerExpiresAt (or calculate internally) to enforce urgency cleanly.

⏱ Timing (suggested)

  • Message 1 (offer): +6–24h after the transactional confirmation.
  • Follow-ups:
    • +2d (only if still churned / still failed)
    • -24h before offer expiry (final reminder)

📡 Channel mix

  • Email: primary channel for the full offer and details.

📈 Success metrics

  • Recovered conversions (subscription restarted)
  • Payment recovery rate (payment-failure path: PaymentSucceeded)
  • Net revenue recovered (after discount)