Skip to content

Cancellation Insights

Learn why customers leave while you can still do something about it

Exit surveys sent a week later get answered by the people who were least annoyed. Ask at the moment of cancellation and you get the truth, plus one chance to act on it.

What is Cancellation Insights?

Cancellation Insights captures the reason at the moment a customer cancels, responds immediately with an offer matched to that reason — a discount, a pause, a plan change — and follows up automatically afterwards. It then reports which reasons are growing and what each one costs in lost MRR, so retention work is aimed at the reason doing the most damage rather than the one that was mentioned most recently.

Collect

Ask while they are still in the flow

An in-app widget intercepts the cancellation itself, so you get an answer from someone who is still holding the intent, not a reply from someone who has moved on. Design it to match your product, decide whether a reason is mandatory, and randomise the order so the first option does not soak up the clicks. An email questionnaire covers cancellations that happen outside your app.

  • In-app widget with your copy, colours and icon; embeddable in any stack
  • Optional or mandatory reason selection, with randomised option order
  • Email questionnaire for cancellations made by support or in the billing portal

Why customers left

Last 90 days

  • Too expensive34%
    20% off offered
  • Missing a feature26%
    Routed to roadmap
  • Switched tools18%
  • No longer needed14%
    Pause offered
  • Other8%

Bars scaled to the largest reason. Illustrative figures.

Respond

Answer the reason, not the cancellation

“Too expensive” and “missing a feature” are different problems and a single generic save offer treats them as the same one. Configure an offer per reason and it appears in the moment the reason is given. Accepted discounts apply the coupon in your billing system automatically, so nobody has to remember to go and do it.

  • Per-reason offers: discount, pause, plan change, or nothing at all
  • Accepted discounts write the coupon straight to your payment processor
  • Outcomes tracked as accepted, declined or abandoned, so offers can be judged
bastle.co/demo/cancellations/offers
Open

This is the real product running on sample data. Click to use it.

Follow up

The win-back nobody has to remember

Some reasons are worth revisiting later. A customer who left over price is a genuine prospect once you ship a cheaper tier; a customer who left over a missing feature is worth contacting the week it lands. Set a follow-up per reason, immediate or delayed by a number of days, and it runs itself.

  • Per-reason follow-ups, sent instantly or after a delay you set
  • Sender, reply-to, subject and body per email, with customer and reason variables
  • Each follow-up can be paused without dismantling the sequence

MRR

+5.2%

$162,400

Net revenue churn

−0.3pp

2.1%

Active customers

+38

1,284

ARPU

+1.4%

$126.48

Understand

Tell a bad month from a real problem

Reason counts alone are misleading, because the reason given most often is rarely the reason costing most money. Bastle weights every reason by the MRR it took with it and trends reasons over time, so a slow structural shift is distinguishable from one noisy fortnight.

  • Every reason costed in lost MRR, not just counted
  • Reason trends over days, weeks or months, compared against each other
  • Cancelled-customer table with plan, tenure, LTV and MRR lost

Why did MRR drop last month?

MRR fell $4,180 (−3.1%) in March. Almost all of it is contraction, not cancellations: 31 Scale customers downgraded to Growth after the annual renewal window opened.

47 customers3 plansMRR movement ledger

Capabilities

What Cancellation Insights includes

All of it sits in the same workspace. Bastle is free while in beta, so nothing on this list is an add-on, an upgrade or a separate subscription.

Your own reason taxonomy

Start from a sensible default list and edit it. Reasons are yours to add, rename and reorder as you learn what your customers actually say.

Covers admin cancellations

Cancellations made by your support team or directly in the billing provider are captured too, so the picture is not just self-serve churn.

Push reasons from your own flow

If you have already built a cancellation experience, post the reason to the API and it lands in the same reporting as everything else.

Segment by reason

Reasons behave like any other customer attribute, so you can filter metrics and cohorts by why people left.

Related

Where this connects

Cancellation Insights reads the same normalised billing history as the rest of Bastle, so a change in one place shows up in the others without an export.

Keep going: see everything Bastle does, look up the maths behind any number in the metric glossary, or run a figure through the free calculators.

Practical questions are usually answered by the connector list, an honest comparison with the alternatives, or the same product framed for founders and for finance teams.

Frequently asked questions

Why ask at cancellation rather than sending a survey later?

Two reasons. Response rate collapses once the customer has left, and the people who still reply are the ones who were least frustrated, which biases the whole dataset towards mild reasons. More importantly, a survey a week later cannot save anyone. Asking in the flow is the only moment where the answer and the intervention can happen together.

Do save offers just train customers to threaten to cancel?

They can, if you offer the same discount to everyone every time. That is why offers are configured per reason and their outcomes are tracked: you can see how many people accepted, how long they then stayed, and whether the discount actually bought retention or just deferred the same cancellation by two months. Offers you cannot measure are the ones that create the habit.

Can I make selecting a reason mandatory?

Yes, it is a toggle on the widget. Mandatory selection gives you complete coverage but pushes some people towards whichever option gets them out fastest, which is why the option order can be randomised. Optional selection produces cleaner data from fewer people. Most teams start optional and tighten it once they trust the reason list.

Does the widget work outside a React app?

Yes. The in-app widget is embedded with a snippet and does not assume a particular framework. If you would rather keep your own cancellation flow, you can send the reason to the cancellation-insights API endpoint instead and everything downstream — offers reporting, trends, follow-ups — works the same way.

How does this differ from Recover?

Recover handles involuntary churn: payments that fail when the customer still wants the product. Cancellation Insights handles voluntary churn: customers who have decided to leave. They need completely different treatment — one is a payment problem, the other is a product, price or fit problem — and Bastle includes both rather than selling them as separate add-ons.

What does it cost?

Nothing. Cancellation Insights is part of Bastle, and Bastle is free while in beta with no card required. Elsewhere this is commonly a paid add-on on top of an analytics subscription.

See your own numbers in about two minutes.

Connect Stripe and Bastle backfills your full history. Free while in beta — no card, no sales call.