What cancellation reasons are worth

Every subscription product I’ve run has some version of the same screen. Someone clicks cancel, and before the account actually closes, they get a short form asking why. A dropdown with five or six options, maybe a free-text box underneath. It feels like you’re capturing gold: the customer is telling you, in their own words, exactly what went wrong. I used to treat that data like a verdict. Now I treat it like one witness statement in a case with several witnesses, none of whom saw the whole thing.

This isn’t a case against collecting cancellation reasons. It’s a case for being honest about what that data is and isn’t, so you don’t overcorrect your product or your pricing based on a single, noisy signal.

What the cancellation form actually captures

When someone cancels, you’re not measuring “the reason they churned.” You’re measuring “the reason they were willing to type into a form, at the exact moment they were leaving, using whatever categories you gave them to choose from.” That’s a narrower thing.

Three filters sit between the real reason and the data you get:

First, the options you offer shape the answer. If your dropdown has “too expensive,” “missing features,” “switched to a competitor,” and “no longer needed,” you’ve already decided the universe of acceptable reasons. Someone whose real issue was “I never got around to setting it up and felt embarrassed” doesn’t have a box for that, so they pick the closest thing, usually “no longer needed.” Your dropdown didn’t record their reason. It recorded which of your reasons was least uncomfortable to admit.

Second, self-report at the moment of cancellation carries a strong social-desirability bias. “Too expensive” is a polite, low-friction answer. It doesn’t require the person to say “your product was confusing” or “I lost interest” or “I forgot I was paying for this.” People are more likely to reach for the answer that closes the conversation fastest, not the one that’s most accurate.

Third, only a fraction of people fill out the form at all. If you offer a skip button, you’ll see one. The people who do answer aren’t a random sample of everyone who churned. They tend to be either genuinely annoyed (motivated to explain) or unusually conscientious (feel they owe you an answer). The silent majority who just quietly stop paying are invisible in this dataset, and there’s no way to know if their reasons match the ones you collected.

None of this means the data is worthless. It means it’s a biased sample of self-reported reasons, not a ground-truth log of causes.

Where the dropdown data earns its keep

Despite the caveats, the categorical dropdown is useful for one thing in particular: watching how the mix of stated reasons shifts over time. If “too expensive” jumps from being a third of responses to being half of responses right after a price increase, that’s a meaningful directional signal, even accounting for the bias, because the bias itself is roughly constant month to month. You’re not trying to know the absolute truth. You’re trying to know if something changed.

The same logic applies to a spike in “missing features” right after a competitor ships something your product doesn’t have, or a spike in “technical issues” after a rough deploy. The dropdown is bad at telling you the true root cause of any individual cancellation. It’s decent at telling you that something shifted in the environment and prompting you to go look for what.

Treat it the way you’d treat a smoke detector. It doesn’t tell you whether the fire is in the kitchen or the garage. It tells you to go check.

Where free text does more work than the dropdown

Free-text responses are messier to analyze but carry more signal, because the person isn’t constrained to your categories. If you’re running this alone, you can genuinely read every free-text cancellation comment for a small product, which is one advantage of staying small. I go through mine roughly once a month and just read them in order, no spreadsheet, no dashboard. Patterns show up fast when you read twenty comments in a row: three people mentioning the same confusing screen, two people saying they didn’t realize a feature existed, one person who clearly churned for a reason that has nothing to do with the product at all (their business closed, their team shrank).

If you’ve got enough volume that reading every comment isn’t realistic, a language model can help you cluster free-text responses into themes faster than doing it by hand. That’s a reasonable use of the tool. What it can’t do is tell you which theme is the real driver of churn versus which theme is just the most common way people phrase an exit. Skim a sample of what it grouped together before you trust the summary, the same way you’d spot-check any automated categorization before acting on it.

Pairing it with what people actually did

The reason cancellation surveys mislead people on their own is that they’re disconnected from behavior. The fix isn’t a better survey question. It’s looking at usage data from before the cancellation alongside the stated reason.

Say someone selects “missing features” on the way out. Before you add that feature to your roadmap, pull their usage history. Did they use the product actively for three months and then hit a wall, or did they log in twice and never come back? Those are two completely different stories wearing the same checkbox. The first person might genuinely have a feature gap worth addressing. The second person probably churned for reasons unrelated to features entirely, most likely they never got value in the first place, and “missing features” was just the exit line that felt easiest to type.

This is where cohort thinking earns its place. If you group cancellations by how long the customer had been active, or how much they used the product in their last thirty days, you start to see that stated reasons cluster differently by cohort. Long-tenured, heavy users who cancel tend to give more specific, credible reasons. New, low-usage cancellations tend to give vague reasons that are really just polite cover for “I never onboarded properly.” That second group is a different problem, and no amount of feature-building fixes it. It’s an activation problem, not a churn problem, even though it shows up in the churn survey.

What it can’t tell you, no matter how you slice it

Cancellation reasons cannot tell you causation. A stated reason is a correlation between an exit event and a self-reported explanation, filtered through memory, politeness, and whatever categories you offered. If “too expensive” is your top reason for six months running, that’s useful evidence to weigh, but it isn’t proof that a price cut would fix retention. Some of those people would have left anyway for reasons they didn’t want to name. Some would stay at the current price if the product delivered more obvious value. The survey alone can’t separate those cases, and neither can any single metric.

It also can’t tell you about the customers who never got there. If your onboarding loses half of new signups before they ever reach a point where cancellation is even a decision, that failure never shows up in a cancellation survey, because those people didn’t cancel a subscription, they just never activated one. A churn survey only covers people who stuck around long enough to formally leave.

A workable process for a solo operator

I keep this simple. Once a month, I look at the dropdown mix and note any category that moved more than usual. I read the free-text comments in full rather than skimming a summary. For any reason that seems to be trending up, I pull a handful of accounts in that bucket and check their usage history before I believe the stated reason. And I resist the urge to change pricing or roadmap based on one month of data, because a small business doesn’t have the volume to tell a real trend from noise on a single cycle.

Cancellation reasons are a starting point for a question, not an answer to it. Used that way, they’re genuinely worth collecting. Used as a verdict, they’ll send you chasing the wrong fix.

If you want more of this kind of plain-English breakdown of the numbers behind running a small business, you can find the rest of what I’ve written here.

Get new guides and videos first — join the Telegram channel.