Stripe
- Customer
- Example account
- MRR lost
- $1,290 / month
- Status
- Cancelled
- Cancellation reason
- Not captured
For SaaS that bills on Stripe
ChurnIntel is a Stripe cancellation flow that captures why customers leave, offers a pause, discount, or plan switch to keep them, and ranks each reason by the revenue behind it.
Your billing data records the cancellation and the MRR that left with it. The reason is not in there. So churn gets explained by guesswork, and you cannot tell a missing feature apart from a price objection or an onboarding problem — which are three very different things to fix.
Stripe
With ChurnIntel
Illustration with sample values, not a real customer record.
A customer clicks cancel, picks a reason, and gets an offer that answers that specific reason. Whatever they choose lands in your reporting with the revenue attached. Pick a reason below to watch all three steps change.
Capture their reason
We are sad to see you go.
Please tell us why.
Pause, discount, or plan switch
Special offer for you 🎉
We've unlocked an exclusive discount for you.
20% off for 2 months
Applied automatically to upcoming invoices when you accept.
Revenue behind every reason
Top cancellation reason
Too expensive
Revenue impact
$2,940MRR
A working preview of the real flow, running on sample figures. Your reasons, offer wording, and the plans each flow targets are all yours to configure.
Four things, all shipping today. Nothing below is on a roadmap. See also the cancellation flow overview.
Ask while the customer is still in the flow, not in an email they will never open.
Answer the objection they actually gave you instead of discounting everyone.
Rank churn by the MRR behind each reason, not by how often it was picked.
ChurnIntel makes the subscription changes, so your app does not have to.
Run more than one flow and let audience rules decide which one a customer sees. A $2,000-a-month account does not need the same offer as a trial. Anything that matches no rule falls back to your default flow.
Two parts, and we would rather you know about the second one now than find it on a call. ChurnIntel is an embedded widget — there is no hosted no-code cancellation page yet.
About 10 minutes, no engineer
One task for an engineer, usually under an hour
Add the script once, then call it from the cancel button you already have.
<script src="https://churnintel.io/widget.js"
data-api-key="YOUR_WIDGET_API_KEY" async></script>window.ChurnIntel.showCancelFlow({
subscriptionId: subscription.id,
customerId: subscription.customer,
})ChurnIntel performs the cancellation and applies any accepted offer in Stripe itself, so your existing cancel handler can stop doing that work.
A fair comparison of the work involved. We have deliberately left out hour and dollar estimates, because we would be making them up.
| Area | Build it in-house | ChurnIntel |
|---|---|---|
| Reason capture | Design the survey UI, store responses, and re-version it every time your reasons change | Configurable reasons plus free-text, edited per flow without a deploy |
| Save offers | Write and test Stripe logic for coupons, pause_collection, and prorated plan switches | Four offer types, mapped per reason, applied server-side |
| Targeting | Build a rules engine so enterprise and trial customers do not see the same offer | Priority-ordered flows with audience rules on Stripe and custom data |
| Discount abuse | Track who already claimed an offer so nobody farms coupons from the cancel page | Offer-once and cooldown rules included |
| Revenue reporting | Join cancellation responses to Stripe MRR, then keep those queries alive | Reasons ranked by lost MRR, offer accept rate, and CSV export |
| Stripe API changes | Yours to monitor and fix | Ours to monitor and fix |
You are about to give a young product write access to your billing, so here is exactly what that means. ChurnIntel connects through Stripe Connect OAuth with read and write access.
Still unsure about something? Ask us in your access request and we will answer it in our reply.
Inside ChurnIntel, about 10 minutes: connect Stripe with OAuth, run the first sync, edit the reasons and offers you want, and publish your default flow. Putting that flow in front of your customers is one task for an engineer — a script tag, then a call to window.ChurnIntel.showCancelFlow() from the cancel button you already have — usually under an hour.
ChurnIntel connects through Stripe Connect OAuth with read and write access. Write access is required because the flow acts on the subscription for you: it applies the coupon you configured, pauses collection, switches to a price you picked, or cancels. We read products, prices, coupons, subscriptions, and the customers attached to them. We never request or store card numbers or payment methods.
Yes. You can revoke ChurnIntel from your own Stripe dashboard under Settings → Authorized applications, which cuts off our access immediately. To be straight with you: there is no disconnect button inside ChurnIntel yet, so that is the route to use today.
Four options, and you map each one to a specific reason: a Stripe coupon, pausing billing for a set number of days, switching to a different plan, or routing the customer to your team. You can also cap offers so the same customer cannot claim a discount every time they open the cancel page.
Not every cancellation costs the same. Losing a customer paying $1,000 a month matters more than losing one paying $20. ChurnIntel ranks cancellation reasons by the recurring revenue behind them, so the reason at the top of your list is the one costing you the most — not just the one picked most often.
Yes. When a customer confirms, ChurnIntel cancels the subscription in Stripe for you — immediately or at period end, depending on how you configured the flow. Your own cancel handler does not need to do anything, and nobody gets stuck in a retention loop.
Yes. You can run several flows with audience rules and priority order, matched on Stripe data such as plan, billing interval, trial status, subscription age, or price range. You can also pass your own attributes from your app to target on data Stripe does not have. Whatever does not match a rule falls back to your default flow.
A person reads your request. If it is a fit, we reply by email with a magic link that signs you straight in — there is no password to create. If it is not a fit yet, we will tell you what changed our mind.
Founding partner pilot
We are working closely with a small group of Stripe-powered SaaS teams while we shape the product, and you help decide what we build next.
You will see pricing before it ever applies to you.
A working session on your real plans, not a link to docs.
You talk to the people writing the code, not a support queue.
Export every response and comment as CSV whenever you want.
A good fit if you bill through Stripe, see enough monthly cancellations for patterns to show, and can add a script tag this month.
A person reads it
We are invite-only while we work with a small group, so every request is reviewed by hand.
You get a sign-in link
If it is a fit, we reply with a magic link that signs you straight in. No password to create.