Supported subscriptions
This is the reference for which Stripe subscription shapes Unchurn handles automatically, which ones route to a manual cancellation request, and which retention offers apply where. For the rationale behind the rules, see Eligibility; this page lists the rules without re-explaining them.
What gets checked
Every cancel session is checked twice — once when the flow opens, again when we apply the change on Stripe. The result is one of three states:
| State | What happens | Customer sees |
|---|---|---|
| Eligible for retention offers | Widget renders the eligible offers in waterfall order. Customer accepts one (or declines through to cancel). | Discount, pause, plan-switch, or trial extension tiles — only the ones that are safe for this subscription. |
| Not eligible for offers, eligible for automated cancel | Widget skips the offer waterfall and goes straight to cancel confirmation. | ”Your subscription will end on <date>.” |
| Not eligible for automated cancel | Widget records a manual cancellation request and surfaces it to your team. | ”Your cancellation request has been received.” |
The third state is what most cancel-flow tools get wrong — they tell the customer they’re cancelled when no Stripe call ran. See Manual cancellation request below.
Where to look
- Per-offer eligibility — one table per offer (cancel, discount, pause, plan switch, trial extension) listing the conditions a subscription must satisfy.
- Blocked subscription shapes — the full list of shapes blocked from automated cancel, with the Stripe-side reason for each.
Manual cancellation request
When a subscription shape isn’t safe for an automated cancel, the cancel button doesn’t call Stripe. Instead Unchurn records a cancellation request and surfaces it to your team.
What the customer sees:
- The cancel button in the widget.
- A confirmation screen: “Your cancellation request has been received.” You can include a contact link via the optional
support_urlconfiguration. - A confirmation email, sent immediately, retried in the background until delivered.
The screen never says “your subscription is canceled” for blocked shapes — we don’t make claims about Stripe state we didn’t change.
What you receive:
- A task in your dashboard with the subscription ID, customer ID, the reason automated cancel was blocked, and a timestamp.
- The cancellation request is logged distinct from automated cancels in your analytics, so your save-rate math stays honest. Outbound webhooks to your own server are on the roadmap.
What does not happen:
- No Stripe API call to cancel the subscription. You handle the cancellation directly in Stripe within your legal SLA.
- The session is not counted as a save or as an automated cancel — it’s its own outcome.
Double-clicks and retries collapse to a single request. The customer can’t accidentally trigger duplicate notifications by clicking again.
What each offer does on Stripe
The five offers map to these Stripe calls. Full per-offer eligibility on the per-offer page.
| Offer | What Unchurn calls on Stripe | Where it applies |
|---|---|---|
| Cancel | Schedules a cancellation at the end of the current period | All subscription shapes Stripe can safely cancel |
| Discount | Creates a single-use coupon and attaches it to the subscription | Any cadence |
| Pause | Pauses billing with new invoices voided during the window | Monthly subscriptions only |
| Plan switch | Swaps the subscription to a cheaper pre-approved plan with no proration | Monthly downgrades only |
| Trial extension | Extends the trial-end date by the configured number of days | Trialing subscriptions only |
For the Stripe API specifics — calls, field names, official references — see Token format and the linked Stripe docs in the per-offer page.
Roadmap
Annual pause, broader plan-switch transitions, discount stacking, and scheduled-cancel support are on the roadmap. The supported set today is what the per-offer and blocked-shapes pages describe.