Post-trial recovery
Catch users the first time they open the app after their trial ended and show a recovery paywall instead of the default one.
Use this when your product has a free trial and you see a measurable cohort that lapses without converting. Don't use this when the app has no trial, or when lapsed users should be treated identically to free users — this recipe only pays off if the recovery paywall differs from the default.
Goal
A user opens the app on day 8, the trial ended on day 7, and the default paywall appears as it always has. You have one shot to re-sell them and you are using the same creative that did not convert them on day 1. This recipe detects the trial-ended state, fires a dedicated recovery flow with a different offer, and stops bothering them once they either convert or clearly churn.
Setup
In the dashboard
Create a campaign
post-trial-recovery.Trigger: session start.
Conditions:
trial_status = "expired"andsubscription_status = "free"andsessions_since_trial_end < 5.Action: fire
yourapp://paywall/recovery— a paywall that leads with a discounted annual offer or a one-time coupon.Frequency cap: one show per session, maximum three total.
Create a follow-up campaign
post-trial-recovery-finalwith the same trigger butsessions_since_trial_end >= 5and a sharper offer. Cap it at one show, ever.End state: when the user subscribes, set
subscription_status = "pro". Both campaigns stop matching.
In the app (engineering hand-off)
When your billing library reports trial expiration, update the user attributes:
Track a session counter that increments only while
trial_status = "expired":Register the
yourapp://paywall/recoverydeeplink to present the recovery screen.
How it runs
User installs, starts a 7-day trial.
trial_status = "active".Day 7: billing library fires trial-ended. App sets
trial_status = "expired",subscription_status = "free",sessions_since_trial_end = 0.Day 8: user opens the app. Session starts. Counter is now
1.post-trial-recoverymatches. Amply fires the recovery deeplink. User sees the 40%-off annual offer instead of the default paywall.User dismisses. Counter becomes
2,3,4over the next few sessions. Campaign continues to match (counter stays below 5), capped at three total shows.On the session where the counter reaches 5,
post-trial-recoveryno longer matches andpost-trial-recovery-finaldoes. A last-chance offer appears.User subscribes. App sets
subscription_status = "pro". Neither campaign matches from this session onward.
Metrics to watch
Recovery paywall view-to-purchase rate. Compare against default paywall conversion for the same cohort.
Days-to-conversion after trial end. Shorter is better.
Share of trial-ended users who ever return. If this is <20%, the recovery window is wasted; move the effort to push or email.
Long-term retention of recovered subscribers versus first-session subscribers. A bad recovery offer buys expensive churn.
Related
Paywall versioning — swap the recovery paywall variant itself
Reactivation after inactivity — the same pattern for users with no trial signal
Campaigns — frequency caps and session-start triggers
User attributes — modeling trial and subscription state
User attributes how-to — writing the attributes from the app
AI-assisted integration — describe this campaign in plain language and have your AI assistant build it
Last updated