Skip to main content
skill CX Codex

subscription-lifecycle — Claude Code skill: install and use

This skill maps the subscription journey from trial start to renewal, cancellation, failed payments, and win-back. Use it to plan lifecycle metrics and recovery flows.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add appeeky/aso-skills --skill subscription-lifecycle -a claude-code
Open on GitHub

What subscription-lifecycle does

The skill covers each subscription stage: trial start, paid conversion, renewal, voluntary cancellation, failed billing, and win-back. It suggests metrics for these stages, trial messages, a cancellation flow with a pause and exit survey, and a dunning sequence for payment failures.

It also describes win-back campaigns through push, email, and Apple Win-Back Offer. The RevenueCat section covers Billing Retry on iOS, Account Hold on Android, and webhooks for triggering in-app messages after billing events. Check your use of RevenueCat and StoreKit 2 before relying on those parts.

The skill can structure a subscription health report around trial conversion, renewal, churn, dunning recovery, and resubscribe rate. Paywall and pricing work is separated into monetization-strategy, while subscription dashboards are covered by app-analytics.

What it helps with

  • measure trial-to-paid conversion
  • identify reasons for voluntary churn
  • plan retries for failed subscription payments
  • design a win-back campaign for lapsed users
  • structure a subscription health report

Example prompts for the agent

  • Map our subscription lifecycle from trial start through renewal, cancellation, and win-back.
  • Create a dunning plan for failed payments with a grace period and user messages.
  • Review our churn risks and draft a cancellation flow with a pause option and exit survey.

How to install subscription-lifecycle

1Skills CLI (Vercel)

npx skills add appeeky/aso-skills --skill subscription-lifecycle -a claude-code

2Manually: put the files in place

~/.claude/skills/subscription-lifecycle/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/subscription-lifecycle/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about subscription-lifecycle

How do I install subscription-lifecycle in Claude Code?

Run npx skills add appeeky/aso-skills --skill subscription-lifecycle -a claude-code, then open ~/.claude/skills/subscription-lifecycle/SKILL.md.

What does subscription-lifecycle do?

It helps plan and review a subscription journey from trial conversion through renewal, cancellation, failed payments, and win-back. It provides lifecycle metrics, message sequences, and recovery flows.

Does it require RevenueCat for failed-payment flows?

The skill describes RevenueCat as handling dunning automatically. That section uses Billing Retry for iOS, Account Hold for Android, and webhooks for billing-event messages.

Source text

SKILL.md · MIT
---
name: subscription-lifecycle
description: When the user wants to optimize their subscription business end-to-end — from trial start through renewal, cancellation, and win-back. Use when the user mentions "subscription lifecycle", "trial conversion", "churn", "cancellation", "win-back", "lapsed subscribers", "dunning", "billing retry", "grace period", "renewal rate", "subscriber LTV", or "resubscribe". For paywall design and pricing strategy, see monetization-strategy. For subscription analytics dashboards, see app-analytics.
metadata:
  version: 1.0.0
---

# Subscription Lifecycle

You optimize every stage of the subscription journey: trial → paid → renewal → cancellation recovery → win-back.

## The Subscription Lifecycle

```
Install → Trial start → [Trial period] → Conversion → Renewal → ... → Cancel → Win-back
            ↓                               ↓              ↓           ↓
         No convert                    Voluntary       Involuntary   Lapsed
         (nurture)                     (exit survey)   (dunning)     (campaign)
```

## Key Metrics at Each Stage

| Stage | Metric | Formula | Benchmark |
|-------|--------|---------|-----------|
| Trial | Trial start rate | Trials / Downloads | > 20% |
| Trial | Trial-to-paid | Conversions / Trials | 25–40% strong |
| Retention | Month 1 renewal | M1 renewals / Subscribers | > 70% |
| Retention | Month 6 renewal | M6 renewals / Subscribers | > 50% |
| Churn | Monthly churn | Lost subs / Start subs | < 5% good; < 2% excellent |
| Revenue | MRR | Active subs × monthly price | — |
| Revenue | LTV | ARPU / Monthly churn rate | — |
| Recovery | Dunning recovery | Recovered / Failed payments | > 30% |
| Win-back | Resubscribe rate | Returns / Lapsed | 5–15% |

## Stage 1 — Trial Optimization

### Trial Length

| App Type | Recommended trial | Notes |
|----------|------------------|-------|
| Simple utility | 3–7 days | Value obvious quickly |
| Health/fitness | 7–14 days | Habit formation needs time |
| Productivity | 7–14 days | Workflow integration |
| Education | 7–14 days | First lesson completion |
| Entertainment | 7 days | Binge behavior |

**Test:** Monthly apps with a 7-day trial vs. 14-day trial — conversion rate may drop slightly but LTV often increases.

### Trial Nurture Sequence

Send in-app (or push) messages during the trial to drive activation:

```
Day 0: Welcome — "Your trial has started. Here's how to get the most from it."
Day 1: Core feature highlight — "Try [key feature] today"
Day 3: Progress / social proof — "Users who do X get 3× better results"
Day 5 (7-day trial): Urgency — "2 days left in your trial"
Day 6: Value recap — "Here's what you've done / could do with premium"
Day 7: Last day — "Your trial ends today"
```

**Rule:** Messages should show value, not just create pressure.

### Trial End — Conversion Moment

At trial end, show a paywall that:
- Recaps what the user achieved during the trial
- Shows the most-used premium features
- Offers 3 plan options (monthly / annual / lifetime if applicable)
- Highlights savings on annual ("Save 40%")

See `monetization-strategy` for paywall design details.

## Stage 2 — Reducing Voluntary Churn

### Why Users Cancel (and How to Fix It)

| Reason | Signal | Fix |
|--------|--------|-----|
| Forgot they subscribed | Low sessions, no activation | Improve onboarding + notification strategy |
| Not enough value | Low feature usage | Push underused high-value features |
| Too expensive | Price sensitivity | Introduce lower-tier or pause option |
| Problem with app | 1-star reviews | Fix the bug, reply to reviews |
| Found alternative | — | Monitor competitor installs |
| Seasonal use | Churns at same time yearly | Offer a pause option |

### The Cancellation Flow

When a user initiates cancellation (iOS — `ManagedSubscriptionGroup`):

1. **Offer a pause** before full cancel: "Pause for 1–3 months instead of cancelling"
2. **Show value recap**: "You've used [feature] X times this month"
3. **Offer a discount**: Only as last resort — 20–30% off for 3 months
4. **Exit survey**: Always ask "Why are you cancelling?" (1 tap, not an essay)

**Cancellation exit survey options:**
- Too expensive
- Not using it enough
- Missing a feature I need
- Switching to a competitor
- Technical issues
- Just taking a break

### Engagement Signals to Watch

Users at high churn risk:
- Sessions < 1 per week (down from higher baseline)
- Core feature not used in 14+ days
- Push notifications disabled
- Last session > 7 days ago

Trigger a re-engagement push or in-app message before they cancel.

## Stage 3 — Involuntary Churn (Failed Payments)

Involuntary churn accounts for **20–40%** of all subscription cancellations.

### Dunning Strategy

| Day | Action |
|-----|--------|
| 0 | Payment fails silently — Apple/Google retry |
| 3 | Apple/Google retry #2 |
| 7 | Apple/Google retry #3 — show in-app "Update payment method" banner |
| 10 | Send push: "Your subscription couldn't be renewed — tap to update" |
| 14 | Grace period ends — subscription suspended |
| 15 | Final in-app message: "Reactivate to keep access" |

**Grace period:**
- iOS: 6 days (configurable up to 16 in App Store Connect)
- Android: 3 days (configurable)

Maximize grace period length — every extra day recovers more subscribers.

### RevenueCat Integration

RevenueCat handles dunning automatically. Key settings:
- Enable Billing Retry (iOS) / Account Hold (Android)
- Configure grace period to maximum allowed
- Use RevenueCat webhooks to trigger in-app messaging at each failure event

See `revenuecat.md` integration guide.

## Stage 4 — Win-Back Campaigns

Target lapsed subscribers (cancelled or expired in last 30–90 days).

### Win-Back Offer Ladder

Start with the softest offer; escalate only if no response:

```
Week 1 after lapse:  "We miss you" — highlight new features added since they left
Week 3:              "Come back for 30% off your first month back"
Week 6:              "3 months at 50% off — best offer we'll make"
Week 12+:            Archive — low conversion probability
```

### Win-Back Channels

| Channel | How |
|---------|-----|
| Push notification | In-app if app still installed |
| Email | If email was collected |
| Apple Win-Back Offer | Native iOS win-back offer in StoreKit 2 |
| Paid retargeting | Meta/Google retargeting to lapsed subscriber list |

### StoreKit 2 Win-Back Offers (iOS 18+)

Apple natively supports win-back subscription offers for lapsed subscribers:
- Set up in App Store Connect → Subscriptions → Win-Back Offers
- Presented automatically in the App Store to eligible lapsed users
- No additional code needed beyond StoreKit 2 integration

## Output Format

### Subscription Health Report

```
Lifecycle Metrics ([period]):

Trial start rate:    [X]%  (benchmark: >20%)
Trial conversion:    [X]%  (benchmark: 25-40%)
M1 renewal:          [X]%  (benchmark: >70%)
Monthly churn:       [X]%  (benchmark: <5%)
Dunning recovery:    [X]%  (benchmark: >30%)
Win-back rate:       [X]%  (benchmark: 5-15%)

LTV (estimated):    $[N]
MRR:                $[N]

Top issues:
1. [Stage] — [metric] is [X]% vs benchmark [Y]% — [recommended fix]
2. [Stage] — [metric] is [X]% vs benchmark [Y]% — [recommended fix]

Priority action:
[Single highest-leverage change to implement this week]
```

## Related Skills

- `monetization-strategy` — Paywall design, pricing tiers, trial setup
- `retention-optimization` — Engagement strategy to reduce voluntary churn
- `app-analytics` — Track the metrics above with Firebase + RevenueCat
- `onboarding-optimization` — Fix early-stage drop-off that prevents trial starts
- `rating-prompt-strategy` — Satisfied subscribers are your best raters

© appeeky · MIT · appeeky/aso-skills

Similar skills

Everything for Marketing and content →

From the same set39

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor