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.

Stripe records who left, and the MRR that left with them. Not why. A missing feature, a price objection, and a bad onboarding are three different fixes.

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

They pick a reason. You offer something that matches it. The revenue shows up in the report. Try a reason below.

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

Sample figures. Your reasons, offers, and who sees each flow are yours to set.

What you get, concretely.

Shipping today. Nothing here is a roadmap item. See the cancellation flow overview.

Cancellation reason capture

Ask in the cancel flow, while they are still there.

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

Offers mapped to the reason

Answer the reason they gave. Do not discount everyone.

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

Revenue-weighted reporting

Rank reasons by the MRR behind them.

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

Stripe-native, server-side

We change the subscription in Stripe. Your app does not.

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

Different customers, different flows

One flow for a trial. Another for a $2,000 account. Anyone who matches no rule sees the default.

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

What setup actually involves.

Two parts. The second needs an engineer. This is a widget in your app, not a hosted cancel page.

In ChurnIntel

About 10 minutes, no engineer

  1. Connect Stripe. One OAuth click. No API keys.
  2. Sync. We pull products, prices, coupons, and subscriptions.
  3. Edit reasons and offers. Change the wording. Attach an offer to each reason.
  4. Publish. That flow is what every customer sees, unless a rule says otherwise.
In your app

One engineer task, usually under an hour

Add the script once. 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,
})

We cancel in Stripe and apply the offer. Your old cancel handler can stop.

Or build it yourself

The work, side by side. No invented hours or dollars.

Scope of work when building a cancellation flow in-house compared with using ChurnIntel
AreaBuild it in-houseChurnIntel
Reason captureBuild the survey, store answers, and redeploy when reasons changeReasons and free text, edited without a deploy
Save offersWrite Stripe logic for coupons, pauses, and plan switchesFour offer types, mapped per reason, applied for you
TargetingA rules engine so a trial and an enterprise account do not see the same offerPriority flows, with rules on Stripe data and your own
Discount abuseStop the same customer claiming a coupon on every visitOffer-once and cooldown rules
Revenue reportingJoin survey answers to Stripe MRR, and keep those queries aliveReasons by lost MRR, accept rate, and CSV export
Stripe API changesYours to watch and fixOurs to watch and fix

What ChurnIntel can do in your Stripe account.

Write access to billing, through Stripe Connect OAuth. Here is what that covers.

What we read

  • Products, prices, and coupons, so offers use real ones
  • Subscriptions and customers, so the flow knows who is cancelling

What we write, only when they act

  • Apply a coupon you chose
  • Pause billing for the days you set
  • Switch to a price you chose
  • Cancel when the customer confirms

What we never touch

  • Card numbers or payment methods. We do not request or store them.
  • Used only to do what the flow offered. Revoke anytime in Stripe, under Settings → Authorized applications.

Questions

Ask in your access request. We answer in the reply.

How long does setup take?+

About 10 minutes in ChurnIntel: connect Stripe with OAuth, sync, edit reasons and offers, and publish. An engineer then adds a script tag and calls window.ChurnIntel.showCancelFlow() from your cancel button. Usually under an hour.

What Stripe permissions do you need, and why?+

Stripe Connect OAuth, with read and write. Write access applies the coupon, pauses collection, switches the price, or cancels. We read products, prices, coupons, subscriptions, and customers. We never request or store card numbers or payment methods.

Can I revoke your access later?+

Yes. In the Stripe dashboard, go to Settings → Authorized applications. That cuts access immediately. There is no disconnect button inside ChurnIntel yet.

What can I offer instead of letting someone cancel?+

Four options, each mapped to a reason: a Stripe coupon, a billing pause, a plan switch, or a handoff to your team. Offer-once caps stop the same customer claiming a discount on every visit.

What are revenue-weighted insights?+

A customer paying $1,000 a month is not the same loss as one paying $20. Cancellation reasons are ranked by the recurring revenue behind them, not by how often they were picked.

Does the subscription still get cancelled if someone insists?+

Yes. On confirm, ChurnIntel cancels the subscription in Stripe, immediately or at period end. No retention loop. Your own cancel handler does not have to do it.

Can I show different flows to different customers?+

Yes. Run several flows with audience rules and priority, matched on plan, billing interval, trial status, subscription age, or price. You can also pass your own attributes. No match uses the default flow.

What happens after I request access?+

A person reads it. If it is a fit, we email a sign-in link. No password. If it is not a fit yet, we say why.

Founding partner pilot

Find out why your customers actually leave.

A small group of Stripe SaaS teams. You help decide what we build next.

  • Free while you pilot

    You see the price before it applies.

  • We set up the first flow

    On your real plans. Not a link to docs.

  • A direct line to us

    The people who write the code. Not a queue.

  • Your data stays yours

    Export responses and comments as CSV.

A fit if you bill on Stripe, see regular cancellations, and can add a script tag this month.

Request founding access

Three fields. MRR and customers tell us if it is a fit.

Reply within 12 business hours. No card. No sales call.

What happens next

  1. 1

    A person reads it

    Every request is reviewed by hand.

  2. 2

    You get a sign-in link

    If it is a fit, we email a link. No password.