9 min read
Why SaaS customers cancel, and how to find the real reason
The reason a customer gives when they cancel is usually the start of the answer, not the answer. A practical method for getting from 'too expensive' to something you can actually fix.
- churn
- exit interviews
- guide
Most SaaS founders can tell you their churn rate to a decimal place. Far fewer can tell you, with evidence, why last month's customers left. The rate is easy because your billing system computes it for you. The reason is hard because it only exists in the customer's head, and it starts fading the day they cancel.
This guide is about closing that gap. It's written so you can follow it with a spreadsheet and your own inbox. Where a tool helps, we say which kind, and our comparison of SaaS churn tools covers the specific products.
The stated reason and the real one
When someone cancels and you ask why, the first thing they say is usually true, short, and not specific enough to act on. That isn't evasiveness. A first answer is a summary, written by someone who has already made the decision and is mentally on to the next thing.
"Too expensive" is the classic case. It is a real reason, and it covers several quite different problems, each with a different fix:
- They can't justify the price for what they get. The value isn't landing, which is often an onboarding or positioning problem rather than a pricing one.
- They aren't using the feature that makes the price worth it. Maybe they never found it, or it doesn't fit how they work.
- The price jumped at a threshold such as a seat or usage limit, and the next tier doesn't fit how they actually use the product. That's packaging, not price.
- They found something cheaper that does the part they use. That's competition at a specific job.
- Their own budget shrank. That's nothing you can fix in the product, and it's worth knowing so you stop trying.
Each of those is "too expensive". Only one of them is solved by a discount. The same unpacking applies to most of the common answers:
| What they said | What it can mean | A question that separates them |
|---|---|---|
| Too expensive | Value not landing, unused features, a pricing threshold, a cheaper alternative, or a budget cut | Was there a point where it stopped feeling worth it? |
| Missing a feature | One specific capability, a whole workflow you don't support, or an integration | What were you trying to do when you noticed it was missing? |
| Switched to another tool | A better product, a cheaper one, or one their company already pays for | What made the other tool the better fit for you? |
| Not using it enough | Never onboarded properly, the champion left, or the need was seasonal | Did something change in how your team works, or was it never quite part of the routine? |
| Too complicated | Setup friction, one confusing workflow, or the wrong product for their skill level | Where did you get stuck, or what took longer than you expected? |
Too expensive
- What it can mean
- Value not landing, unused features, a pricing threshold, a cheaper alternative, or a budget cut
- A question that separates them
- Was there a point where it stopped feeling worth it?
Missing a feature
- What it can mean
- One specific capability, a whole workflow you don't support, or an integration
- A question that separates them
- What were you trying to do when you noticed it was missing?
Switched to another tool
- What it can mean
- A better product, a cheaper one, or one their company already pays for
- A question that separates them
- What made the other tool the better fit for you?
Not using it enough
- What it can mean
- Never onboarded properly, the champion left, or the need was seasonal
- A question that separates them
- Did something change in how your team works, or was it never quite part of the routine?
Too complicated
- What it can mean
- Setup friction, one confusing workflow, or the wrong product for their skill level
- A question that separates them
- Where did you get stuck, or what took longer than you expected?
We've written separately about a real-shaped example of this, where a price complaint turned out to be a seat-packaging problem, in Your churn rate is not a reason.
First, separate failed payments from decisions
Before you read a single cancellation reason, split out the customers who never decided to leave. An expired card, a bank decline or a payment-method problem ends a subscription just as surely as a cancel button, and it can be counted as churn even though nobody chose anything.
This matters for two reasons. Involuntary churn is fixed with billing mechanics such as retries, reminders and card-update links, not with product work. And if it's mixed into your cancellation data, every pattern you find is diluted by people who had no reason at all. Our own product handles this as Payment Recovery; dedicated dunning tools go further. Either way, keep the two numbers apart.
Step 1: Ask while the reason is still fresh
The reason someone cancelled is easiest to recover in the hours after they do it. A few weeks later you tend to get a vaguer, more polite version, if you get a reply at all. Whatever method you use, the timing matters more than the wording.
There are three common moments to ask, and they reach different people:
- At the cancel button: a short in-app survey. It reaches nearly everyone who cancels themselves, but the answers are quick and usually picked from a list.
- Just after cancellation: an email or a call. It reaches fewer people, because only some reply, but those answers can be longer and you can ask a follow-up.
- Later, by appointment: a scheduled research interview. It's the deepest and the most expensive, so it suits a handful of important accounts rather than everyone.
These aren't mutually exclusive, and the trade-offs are real enough that we've given them their own article: exit interviews vs. cancellation surveys.
Step 2: Ask one more question
Most of the value in cancellation feedback is in the second answer. The first answer tells you which bucket a customer belongs in. The follow-up tells you what's inside the bucket.
A good follow-up is specific to what they said, short enough to answer in one line, and asks about a moment or a task rather than an opinion. "Can you tell me more?" is better than nothing, but it hands the work back to the customer. Compare:
- "Missing features" → "Which one, and what were you trying to do when you noticed?" The answer names a job, not just a feature.
- "We switched to another tool" → "What made it the better fit?" The answer tells you whether you lost on price, a capability, or a procurement decision you were never part of.
- "We weren't using it" → "Did something change, or did it never quite stick?" The answer distinguishes a champion leaving from an onboarding gap.
Keep it to one follow-up unless the customer clearly wants to keep talking. Someone who has just left owes you nothing, and a third email starts to feel like a sales sequence.
Step 3: Group answers into a small, stable set of reasons
Individual answers are anecdotes. You need them grouped before you can see a pattern, and the grouping is where most homemade systems drift.
- Keep the list short. Somewhere around eight to ten reasons is usually enough to be specific without every answer needing a debate.
- Keep it stable. If you rename categories every month, you can't compare this quarter with last quarter. Add a reason when a genuinely new one appears, and resist splitting existing ones on a whim.
- Keep the original words. A label is for finding things. The quote is what you'll actually make a decision from, and what you'll show your team.
- Allow one primary reason and note secondary ones. Real cancellations often have two causes, but a chart with every answer counted three times tells you nothing.
AI tagging makes this step much less tedious, and most tools in this space now do some version of it. Whatever does the tagging, treat the labels as a starting point you can correct, not a verdict. Our insights and tagging are built that way, with every tag editable and the original text beside it.
Step 4: Rank patterns by revenue, not by count
The most frequent reason is not automatically the most important one. Here's a made-up but realistic illustration. Twelve customers on a $19 plan leave because onboarding was confusing; that's $228 of monthly revenue. Three customers on a $400 plan leave because you don't support single sign-on; that's $1,200. By count, onboarding wins four to one. By revenue, SSO is worth more than five times as much.
Neither number is the whole answer. The twelve small customers might be the ones who'd grow into the big plan, and the onboarding fix might be a week's work while SSO is a quarter's. But you can't have that conversation at all until each reason carries the revenue behind it. At minimum, record the plan and monthly value next to every cancellation.
Step 5: Decide, ship, and tell the people who asked
Pick one pattern and fix it properly rather than nudging five. Then do the step almost everyone skips: tell the customers who left over that specific thing. A short, honest note that says you heard them and the thing now exists is the most relevant message you will ever send a former customer, because it's about the exact reason they gave you.
This only works if you know who said what, which is another reason to keep reasons attached to customers rather than in an anonymous survey export. In WhyLeft this is part of Retention Playbooks; by hand, it's a filter on your spreadsheet.
Step 6: Check whether it worked
Measuring the effect of a fix on churn is harder than it sounds, and it's worth being honest with yourself about what the numbers can and can't show.
- Watch the share of cancellations that cite the reason you fixed. If it was a quarter of your cancellations and falls to a tenth over the following months, that's a meaningful signal.
- Count reactivations among the customers you told. Small numbers, but directly attributable.
- Look at churn in the segment the fix was for, not just overall. A fix for annual customers can be invisible in a blended rate.
- Don't over-read a single month. Small SaaS cancellation numbers are noisy, seasonal, and moved by things you didn't do, like a competitor's launch or a price change elsewhere.
If the reason doesn't shrink, that's useful too. It usually means the first fix addressed the stated reason rather than the real one, which sends you back to Step 2.
Doing this by hand, or with a tool
Everything above can be done with an email you send yourself, a spreadsheet, and discipline. At a handful of cancellations a month that's a perfectly good system, and it will teach you more than any dashboard. The problem is that the discipline lapses in exactly the busy months when churn tends to rise.
Tools in this space split into a few jobs: saving customers at the cancel button, recovering failed payments, measuring churn, and understanding why people leave. They're not interchangeable. Our guide to SaaS churn tools sorts them by job, including where other products are a better fit than ours.
WhyLeft is built for the last of those jobs. It sends the exit email for you from your own address, asks one AI-written follow-up based on the reply, tags the answer, and ranks patterns by the revenue behind them. If that's the part you keep meaning to do and don't, the interactive demo shows the whole loop on sample data.
Frequently asked questions
What are the most common reasons SaaS customers cancel?
The categories that come up again and again are price or perceived value, missing features, switching to a competitor, low usage or no longer needing the product, setup or usability problems, support experiences, and the customer's own business changing. Failed payments are common too but aren't a decision. The ranking varies a lot between products, and a published industry average won't tell you which matters most for yours.
How many cancellations do I need before a pattern means anything?
There's no magic threshold. With a few cancellations a month, treat each answer as a lead to investigate rather than a statistic. Three customers independently naming the same specific gap is worth acting on even if three isn't a significant sample. The risk at small numbers isn't acting too early; it's mistaking one loud customer for a trend.
Should I offer a discount when someone says it's too expensive?
Sometimes, but find out which kind of "too expensive" it is first. A discount can save a customer whose budget is temporarily tight. It does nothing for someone who isn't getting value, and it can train customers to threaten to cancel. If you do use offers, keep them easy to decline. A cancellation that's hard to complete is a different problem, and a reputational one.
Is a churn rate still useful?
Yes, as a measure of how much is happening. It just can't tell you why. Use the rate to know whether things are getting better or worse, and the reasons to know what to do about it.
Sources
Checked on . Products and prices change; follow the links for the current version.