For SaaS that bills on Stripe

Stop guessing why customers cancel.

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.

  • Connects with Stripe OAuth
  • Invite-only founding pilot
  • No card details stored

Stripe tells you who cancelled. It never tells you why.

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

Customer
Example account
MRR lost
$1,290 / month
Status
Cancelled
Cancellation reason
Not captured

With ChurnIntel

Customer
Example account
MRR lost
$1,290 / month
Status
Cancelled
Cancellation reason
“Missing Slack integration”

Illustration with sample values, not a real customer record.

How it works

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.

Interactive preview
01

Customer clicks cancel

Capture their reason

We are sad to see you go.

Please tell us why.

02

Offer a better option

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.

03

See what it costs you

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.

What you get, concretely.

Four things, all shipping today. Nothing below is on a roadmap. See also the cancellation flow overview.

Cancellation reason capture

Ask while the customer is still in the flow, not in an email they will never open.

  • Your own reasons
  • Free-text follow-up
  • Required or skippable
  • Randomised order
Cancellation survey →

Offers mapped to the reason

Answer the objection they actually gave you instead of discounting everyone.

  • Stripe coupon
  • Pause billing
  • Plan switch
  • Route to your team
  • Offer-once caps
Retention offers →

Revenue-weighted reporting

Rank churn by the MRR behind each reason, not by how often it was picked.

  • MRR at risk
  • Reasons by lost MRR
  • Offer accept rate
  • Journey Sankey
  • CSV export
Churn analytics →

Stripe-native, server-side

ChurnIntel makes the subscription changes, so your app does not have to.

  • Connect OAuth
  • Cancels in Stripe
  • Subscription webhooks
  • One script tag
Stripe integration →

Different customers, different flows

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.

  • Plan and price
  • Billing interval
  • Trial or active
  • Subscription age
  • Existing discount
  • Your own attributes

What setup actually involves.

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.

In ChurnIntel

About 10 minutes, no engineer

  1. Connect Stripe. One OAuth redirect, the same flow you have used for any other Stripe app. No API keys to copy.
  2. Run the first sync. We pull in your products, prices, coupons, and subscriptions so flows can target and offer against real data.
  3. Edit reasons and offers. Start from a default flow, change the wording, and attach an offer to each reason.
  4. Publish. Your default flow becomes the fallback every customer sees.
In your app

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.

Or build it yourself

A fair comparison of the work involved. We have deliberately left out hour and dollar estimates, because we would be making them up.

Scope of work when building a cancellation flow in-house compared with using ChurnIntel
AreaBuild it in-houseChurnIntel
Reason captureDesign the survey UI, store responses, and re-version it every time your reasons changeConfigurable reasons plus free-text, edited per flow without a deploy
Save offersWrite and test Stripe logic for coupons, pause_collection, and prorated plan switchesFour offer types, mapped per reason, applied server-side
TargetingBuild a rules engine so enterprise and trial customers do not see the same offerPriority-ordered flows with audience rules on Stripe and custom data
Discount abuseTrack who already claimed an offer so nobody farms coupons from the cancel pageOffer-once and cooldown rules included
Revenue reportingJoin cancellation responses to Stripe MRR, then keep those queries aliveReasons ranked by lost MRR, offer accept rate, and CSV export
Stripe API changesYours to monitor and fixOurs to monitor and fix

What ChurnIntel can do in your Stripe account.

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.

What we read

  • Products, prices, and coupons, so you can pick which ones an offer uses
  • Subscriptions and the customers attached to them, so a flow knows who it is talking to

What we write, and only on a customer action

  • Apply a coupon you configured
  • Pause collection for the number of days you set
  • Switch the subscription to a price you chose
  • Cancel the subscription when the customer confirms

What we never touch

  • Card numbers and payment methods. We do not request them and we do not store them.
  • Write access is only used to carry out what your flow already offered. Revoke it any time from Stripe under Settings → Authorized applications.

Questions

Still unsure about something? Ask us in your access request and we will answer it in our reply.

How long does setup take?+

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.

What Stripe permissions do you need, and why?+

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.

Can I revoke your access later?+

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.

What can I offer instead of letting someone cancel?+

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.

What are revenue-weighted insights?+

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.

Does the subscription still get cancelled if someone insists?+

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.

Can I show different flows to different customers?+

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.

What happens after I request access?+

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

Find out why your customers actually leave.

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.

  • Free while you pilot

    You will see pricing before it ever applies to you.

  • We build your first flow with you

    A working session on your real plans, not a link to docs.

  • A direct line to the team

    You talk to the people writing the code, not a support queue.

  • Your data stays yours

    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.

Request founding access

Three fields. We use the last two to check you are a fit before replying.

We reply within 12 business hours. No card, no sales call.

What happens next

  1. 1

    A person reads it

    We are invite-only while we work with a small group, so every request is reviewed by hand.

  2. 2

    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.