Cancellation flows

A cancellation flow that asks why, offers a save, and lets customers leave

A cancellation flow is the experience between “I want to cancel” and the subscription actually ending. ChurnIntel runs that flow inside your app, connected to Stripe, so you capture the reason, respond with a relevant offer, and see what each path costs in recurring revenue.

What a cancellation flow is

When a subscriber clicks cancel, most products either cancel immediately or send them to a generic “are you sure?” screen. Neither tells you why they left or gives you a chance to fix the specific problem.

A proper cancellation flow captures the reason while the customer is still engaged, offers an alternative that addresses that reason, and only then completes the cancellation in Stripe if they insist.

Why cancellation flows matter for SaaS

  • Stripe shows who cancelled and how much MRR left — not why.
  • A missing feature, a price objection, and poor onboarding look the same in billing data.
  • Blanket discounts train customers to click cancel for a coupon.
  • Without a flow, product and growth teams argue from guesswork instead of reasons ranked by revenue.

How ChurnIntel's flow works

  • Customer clicks cancel in your app → ChurnIntel opens the flow.
  • Customer picks a reason (your list, optional free-text, required or skippable, randomised order).
  • ChurnIntel shows the offer you mapped to that reason: coupon, pause, plan switch, or route to your team.
  • If they accept, ChurnIntel applies the change in Stripe. If they confirm cancel, ChurnIntel cancels in Stripe — immediately or at period end, per your configuration.
  • The reason, offer, and outcome land in reporting with the subscription MRR attached.

Cancellation reasons you control

  • Your own reason list, edited per flow without a deploy.
  • Free-text follow-up on any reason.
  • Required or skippable survey step.
  • Randomised reason order to reduce order bias.

Retention interventions per reason

  • Stripe coupon — apply a coupon you already configured.
  • Pause billing — pause collection for a set number of days.
  • Plan switch — move to a different Stripe price.
  • Contact team — route the customer to your support or success team.
  • Offer-once and cooldown rules to limit discount abuse.

More than one flow

Run priority-ordered flows with audience rules on plan, billing interval, trial status, subscription age, existing discount, or custom attributes from your app. A high-MRR account and a trial user do not need the same offer. Whatever matches no rule falls back to your default flow.

What you learn after the flow runs

  • Reasons ranked by lost MRR.
  • Offer accept rate by reason and offer type.
  • Journey Sankey from reason → offer → outcome.
  • CSV export of responses.

Implementation

ChurnIntel is an embedded widget — not a hosted page. Add one script tag, then call window.ChurnIntel.showCancelFlow() with the subscription and customer IDs from your app. Setup inside ChurnIntel (connect Stripe, sync, configure, publish) takes about 10 minutes; wiring the widget is usually under an hour of engineering time.

ChurnIntel supports Stripe subscriptions only.

Questions

Can customers still cancel if they want to?+

Yes. When a customer confirms, ChurnIntel cancels the subscription in Stripe for you. Nobody gets stuck in a retention loop.

Do I need to build the Stripe API logic myself?+

No. ChurnIntel applies coupons, pauses, plan switches, and cancellations server-side in Stripe when the customer acts in the flow.

Can I A/B test different flows?+

You can run multiple flows with audience rules and priority order. Built-in A/B testing is not published as a separate feature today — use audience rules to segment who sees which flow.

Is there a no-code hosted cancel page?+

Not yet. The flow is embedded in your product via a script tag and JavaScript call.

Ready to see it on your Stripe account?

ChurnIntel is in an invite-only founding pilot for Stripe-powered SaaS teams. Request access and we will reply by email if it is a fit.

Request founding access