
7 lifecycle automations every subscription app should run
Seven essential subscription lifecycle automations: trial nudge, onboarding incomplete, cancel save, win-back, NPS branch, payment failed, feature adoption: with triggers and channels for each.
Most subscription apps eventually send some lifecycle email. Fewer run a coherent set of automations keyed to product events: with clear entry, exit, and channel per journey. The gap shows up in trial conversion, involuntary churn, and silent lapses that neither email nor push reaches because nobody defined the trigger.
These seven automations are the baseline we see across successful mobile and web subscription teams. For each: trigger, primary channel, backup channel, and exit condition. Implement in Rheo Engage (plus Convert where the fix is in-app), or map the same logic to your lifecycle stack: the patterns matter more than the logo.
1. Trial mid-point nudge
Job: Users who started a trial but have not hit the core value action by mid-trial need a focused push toward the aha moment: not a generic "hope you're enjoying" message.
| Field | Detail |
|---|---|
| Trigger | trial_started + 50% of trial elapsed + no aha_event (define per product) |
| Primary | Push: one sentence + deep link to feature |
| Backup | Email with screenshot and steps |
| In-app | Convert tip overlay on next open |
| Exit | aha_event fired or trial_converted / subscription_started |
| Suppress | User already completed onboarding checklist |
Pair with step-level analytics so you know which feature to highlight (step-level funnel analytics).
2. Onboarding incomplete
Job: Finish setup before paywall fatigue sets in.
| Field | Detail |
|---|---|
| Trigger | onboarding_started + stall on step N for 24-48h (no onboarding_completed) |
| Primary | In-app Convert: resume journey at last step |
| Backup | Email "Pick up where you left off" |
| Push | Optional if marketing consent and step < 50% complete |
| Exit | onboarding_completed or user enters paywall trial |
| Suppress | Users who explicitly skipped optional steps |
Remote onboarding lets you shorten the path for this segment without a release (remote onboarding flows).
3. Cancel save follow-up
Job: After voluntary cancel, one respectful save attempt: not twelve emails.
| Field | Detail |
|---|---|
| Trigger | cancel_survey_submitted or RC CANCELLATION with voluntary flag |
| Primary | In-app Convert cancel-save flow with reason branch |
| Backup | Email within 24h referencing stated reason |
| Webhook | Slack for high-MRR accounts |
| Exit | subscription_reactivated or 14 days |
| Suppress | Involuntary billing cancel (route to payment automation) |
See in-app cancellation flows and eight cancellation flow examples.
4. Win-back after expire
Job: Recover lapsed subscribers with coordinated channels.
| Field | Detail |
|---|---|
| Trigger | subscription_status = expired + voluntary churn |
| Primary | Email day 2-3 value recap |
| Backup | Push on app open; in-app win-back flow |
| Webhook | CRM / ads suppression on resubscribe |
| Exit | Resubscribe or 60-day sunset |
| Suppress | Active win-back from automation #3 overlap: dedupe |
Full orchestration: event-triggered win-back.
5. NPS detractor branch
Job: Turn low scores into support loops and product signal: not ignored survey data.
| Field | Detail |
|---|---|
| Trigger | In-app NPS flow submits score ≤ 6 (in-app NPS flows) |
| Primary | Webhook to Zendesk/Intercom with score + comment |
| Backup | Email from founder template for small teams |
| In-app | Convert follow-up "What would make this a 9?" for passives optional |
| Exit | Ticket created or user submits follow-up |
| Suppress | Promoter upsell automations for same session |
Promoters (9-10) can enter a separate review-request automation: do not mix branches.
6. Payment failed
Job: Recover involuntary churn before expire.
| Field | Detail |
|---|---|
| Trigger | RevenueCat BILLING_ISSUE / subscription_status = billing_retry |
| Primary | Email with update payment link (store or web) |
| Backup | Push day 1 and 3 if consent |
| In-app | Blocking banner on open with restore CTA |
| Webhook | Finance queue if B2B |
| Exit | subscription_reactivated or expired → hand off to win-back #4 |
Tone is utility, not marketing: consent rules may differ; confirm with counsel.
7. Feature adoption (paid idle)
Job: Paid subscribers who pay but do not use core features churn at renewal.
| Field | Detail |
|---|---|
| Trigger | subscription_active + no core_feature_used in 14 days |
| Primary | In-app Convert education flow |
| Backup | Email with use case story |
| Push | Single highlight notification |
| Exit | Feature used or 30-day cap on messages |
| Suppress | Seasonal products with expected idle periods |
Connects retention to product analytics: the same events you use for funnels should drive Engage segments (lifecycle from in-app events).
Summary table
| # | Automation | Trigger gist | Primary channel |
|---|---|---|---|
| 1 | Trial mid-point nudge | Mid-trial, no aha | Push |
| 2 | Onboarding incomplete | Stall on step | In-app |
| 3 | Cancel save follow-up | Voluntary cancel | In-app |
| 4 | Win-back | Expired sub | |
| 5 | NPS detractor | Score ≤ 6 | Webhook |
| 6 | Payment failed | Billing issue | |
| 7 | Feature adoption | Paid, idle | In-app |
Implementation order
If you cannot ship all seven in one sprint:
- Payment failed: fastest involuntary churn ROI
- Onboarding incomplete: lifts trial starts
- Trial mid-point nudge: lifts conversion
- Cancel save: reduces voluntary churn
- Win-back: recovers lapses
- NPS detractor: quality loop
- Feature adoption: renewal defense
Each automation needs marketing consent where promotional, identity merge for anonymous onboarding, and exit events synced from RevenueCat.
Shared properties every automation should set
Consistent properties make segments composable and prevent contradictory journeys.
| Property | Set by | Used for |
|---|---|---|
subscription_status | RevenueCat webhook | Suppress trial nudges when paid |
marketing_consent | Signup / CMP | Gate email and promo push |
onboarding_flow_version | Convert publish | Branch copy in Engage |
trial_day | Scheduled compute or RC | Mid-trial timing |
last_engagement_at | SDK heartbeat | Cooldown rules |
When two automations could fire the same day (trial nudge + feature adoption), define priority: payment failed and onboarding incomplete beat promotional education.
QA script before launch
- Create test user; walk funnel with dev build.
- Force webhook fixtures for RC billing states in staging.
- Confirm unsubscribe link works on every email template.
- Verify push deep link opens correct Convert flow variant.
- Trigger webhook to staging endpoint; assert idempotent handling.
Repeat after every SDK bump that touches event names.
Stack reminder
Rheo Analytics defines whether triggers fire; Convert delivers in-app fixes; Engage sends email, push, and webhooks. RevenueCat remains billing truth; Superwall or native paywalls still present offers: Engage moves users to the right surface.
Start for free and enable the first two automations from your existing SDK events.