How to Design a Cancellation Survey to Get Better Churn Data
Most subscription products already ask customers why they are canceling. But I think the biggest problem is knowing whether the answer means anything.
When I cancel a tool, I am not in research mode. I want to finish the process and move on. If “too expensive” looks like the quickest answer, I may pick it. If I know it will unlock a discount, I have another reason to pick it. And if none of the options describe what actually happened, I am very unlikely to write a paragraph in an “Other” field.
I see the same thing with customers. The cancellation survey records the answer someone is willing to give while trying to leave, and the design of the flow shapes that answer. So I would never take the selected reason, add it to a churn dashboard, and assume the work is done.
As the customer success manager at Userpilot, I’ll show you how I would design the questions, decide which answers to include, use the response without trapping the customer in the flow, and verify the pattern with Userpilot’s user feedback tools, product analytics, and session replay.
The cancellation flow changes what people answer
Customers choose answers based on how quickly they can leave and what they expect to happen next.
Some people select the least confrontational option. “My business is closing” or “I no longer need it” feels final, so it is less likely to trigger another question or retention pitch. Others select price because it is familiar, even when the deeper issue is that they never got enough value from the product.
Then there are customers who understand how cancellation flows work. They know “too expensive” can lead to a discount and “not using it enough” can lead to a pause. People openly share these tricks, and some repeat the cancel process whenever the promotional rate ends. At that point, the survey is also measuring how well customers have learned your offer logic.
The opposite behavior happens too. Some customers deliberately refuse to give a reason because they do not want the company to overcome their objection. They have already decided to leave, and every extra explanation gives the business another opening to negotiate.
This is why forcing the question does not fix response quality. It normally gives you more fake reasons, random answers, and frustrated comments such as “just cancel it.” That’s why I would rather see 12% of customers choose “I’d rather not say” than have those same customers inflate the price or product-fit categories.
Decide what the question is for
A question shown before cancellation and a question shown after cancellation do different jobs.
Before cancellation is confirmed, the answer can route the customer to a pause, downgrade, discount, support session, or another relevant option. That makes the question useful for retention, but it also gives customers a reason to answer strategically.
After cancellation is confirmed, the customer no longer needs to unlock an offer or prove that they deserve to leave. It’s simply because fewer people will bother answering because the task they came to complete is already over.
For most self-serve SaaS products, I would use both moments lightly:
- Before cancellation: Ask one structured question and show no more than one response that matches the selected reason. Keep the cancel button visible.
- After cancellation: Ask one optional follow-up that helps diagnose the problem. Use this response for research rather than another save attempt.
This separation also makes the data easier to interpret. The first answer tells you which option the customer was willing to consider. The second tells you more about what led them to leave.
You do not need to show both questions to every customer. For low-value self-serve accounts, the structured reason may be enough. For high-value or unusual accounts, the post-cancel question can lead into a personal loss interview.
Use visible multi-select options first
I usually start with a multi-select question because churn often has more than one cause.
A customer may have failed to adopt a key workflow, used the product less as a result, and eventually decided the price was no longer worth it. A single-select question forces that sequence into one bucket before the customer has even seen all the options.
At the same time, unlimited multi-select is not helpful. Some people will click everything, and you still will not know what tipped the decision. I would let customers choose up to two reasons, then ask which one mattered most.
First ask what contributed to the decision
Show every option as a visible checkbox rather than hiding the list in a dropdown. A dropdown takes up less space, but it makes customers open and scan the menu while they are already impatient. It also makes the first visible or easiest-to-reach item more likely to win. I would rather give the question enough space and let people recognize their situation immediately.
Start with four or five options based on the patterns you already see in past cancellation responses, support conversations, customer success notes, and account behavior. For a SaaS product, the question might look like this:
What contributed to your decision to cancel? Select up to two.
- I was not getting enough value from the product.
- The product no longer fit my needs or workflow.
- I was not using it enough.
- The price was too high.
- Something else.

This is only a starting point. Your final options should reflect the reasons customers most commonly give your business. For example, if technical reliability appears repeatedly, it may deserve its own option. If almost nobody selects price, remove it instead of keeping it because every other cancellation survey includes it.
Review the answers regularly and optimize the list over time. For example, when the same explanation keeps appearing under “Something else,” turn it into a predefined option. This keeps the survey short without forcing customers to choose an answer that does not describe their situation.
Then ask which reason mattered most
Once the customer has selected up to two factors, show those choices again and ask:
Which of these had the biggest impact on your decision?
This gives you a primary category for reporting without pretending that nothing else contributed. It also gives you one reason to use for the next question or save offer.
If your setup only supports single-select, keep the visible option list and ask for the main reason directly. The follow-up then becomes more important because it has to capture the missing context.
Keep the open text question specific
I would not start the cancellation survey with a blank text box. It asks the customer to organize your research for you at the exact moment they have the least motivation to help. Nevertheless, keep this question optional. A two-word answer can still be useful, and the customer should not have to write an exit interview before the cancellation goes through.
The open question should respond to the answer they already selected. Here are a few cases:
| Main reason | Follow-up question |
|---|---|
| Product fit | What were you trying to do that the product did not support? |
| Did not get the expected result | What result were you hoping to achieve? |
| Low usage | What stopped the product from becoming part of your regular workflow? |
| Missing feature | Which task could you not complete? |
| Difficult or unreliable | What problem affected your work most? |
| Price | What would have made the subscription feel worth the price? |
| Budget or team change | Is the change likely to be temporary? |
| Temporary need | What did you originally subscribe to complete? |
| Moving to another product | Which product are you moving to, and what does it handle better? |
| Something else | What did we miss? |
The answer list needs to sound like your customers
Most cancellation data becomes vague before the first response arrives because the available reasons are too broad.
“Too expensive” needs more context
Price can genuinely be the reason. The customer may have lost budget, moved to a smaller team, or found a cheaper way to complete the same job.
But price is also where several other problems end up. A customer who never completed setup may decide the product is too expensive because they never experienced the value. A customer whose use case was never supported may choose price because “this was not built for me” is missing from the list.
I use “The price was too high for the value I received” because it gives the customer room to explain the relationship between the two. I would still check the account behavior before deciding whether the problem belongs to pricing, onboarding, adoption, or product fit.
“Not using it enough” describes the result
Low usage tells you what happened, but not why it happened.
The user may have forgotten about the product, failed to reach activation, lost the internal champion, finished a temporary project, or moved the workflow to another tool. Those situations need different fixes.
This is why I keep separate options for low usage, temporary need, poor product fit, and missing value. The categories may look similar from the revenue side, but they point to completely different customer experiences.
“Missing feature” should lead to the blocked job
Customers usually describe the solution they wanted. Your job is to understand what they could not accomplish.
Someone may ask for an export format, an integration, and a custom report when the underlying need is the same: getting product data into a monthly executive review. Counting those as three unrelated feature requests would miss the bigger pattern.
Ask what task was blocked before you add the requested feature to a roadmap list. The cancellation makes the problem worth investigating; it does not automatically make the proposed solution the right one.
Include reasons that are specific to the product
A generic SaaS list will always miss situations that are obvious to your customers.
A streaming product might need “I only subscribed for one show or event.” A project tool might need “The project ended.” A pet subscription should account for a pet passing away. These options do more than improve reporting. They let the company respond appropriately instead of showing a discount during a painful life event or trying to retain someone whose need has simply ended.
I like flows that make customers feel understood in this way. They often leave a better final impression than a clever retention pitch.
Give people a clean refusal
“I would rather not say” is different from “Something else.” One means the customer does not want to explain. The other means your answer list is incomplete.
Keeping both options stops reluctant customers from polluting another category and lets you improve the list when the same unrecognized reason appears repeatedly.
Show one relevant offer
A save offer should address the selected reason once, then get out of the customer’s way.
When I tried to cancel Profound, I selected price and received an offer for 50% off the following month. The offer made sense for the answer I gave. It also made the flow easy to reverse-engineer: choosing price was how I reached the discount.
That does not mean price-based offers are wrong. Sometimes a temporary discount or cheaper plan solves the problem. The issue starts when customers learn that canceling is the normal route to better pricing, or when the same discount appears regardless of why they are leaving.
| Reason | What I would show |
|---|---|
| Price is too high | A cheaper plan or time-limited discount when the account is otherwise getting value. |
| Not using it enough | A pause, downgrade, or free plan that preserves the account and data. |
| Did not get the expected result | A short success session or a focused implementation plan. |
| Missing feature | A workaround or beta invitation only when the capability genuinely exists or is already planned. |
| Technical problem | A support escalation and clear follow-up after the issue is resolved. |
| Moving to another product | A short question about the workflow the alternative handles better. |
| Temporary need or project ended | A pause or clean cancellation with an easy route back. |
| Product did not fit | A clean cancellation. A discount will not change the use case. |
| Would rather not say | No offer. Continue the cancellation. |
I would not follow one rejected offer with three more screens. Customers remember the effort it took to leave, and that memory matters if they ever consider returning. It also affects whether they recommend the product, dispute a charge, or warn other people away from it.


For more examples of how different products handle this part of the journey, see these cancellation flow examples.
Keep the cancellation button visible
Customers should be able to continue canceling without completing the survey or accepting an offer.
When the question is a required hoop, the customer’s job becomes finding the answer that gets them through it. Some will click at random. Some will invent a reason that sounds final. Others will leave the page believing they canceled when the subscription is still active.
Keep the cancel action visually clear throughout the flow and confirm the cancellation plainly at the end. The survey can sit beside the action; it should never replace it.
There is a retention benefit here too. People are more open to returning when joining and leaving both feel safe. A difficult cancellation may save one billing period, but it can also create chargebacks, angry support conversations, and a former customer who will never trust the company again.
Check the answer against the account
The cancellation reason is a starting point. I would compare it with the account’s actual experience before deciding what caused the churn.
Price may be an activation problem
When an account selects price, I first check whether its users ever reached the core value moment, which features they adopted, how often they returned, and whether activity was rising or already fading.
An active account with broad feature adoption may have a real affordability or packaging problem. An account that never completed onboarding and barely touched the core workflow probably did not receive enough value to justify any price.
Userpilot’s product analytics let you review events and feature activity at the user or company level, compare trends over time, and break behavior down by plan, role, company property, or segment. Our MCP makes it even easier. I can take the user or company ID into ChatGPT or Claude and ask questions such as:
- How active was this account during the 90 days before cancellation?
- Which core features did its users adopt?
- When did activity begin to decline?
- Did the account ever reach our activation milestone?
- Does its product behavior support the cancellation reason it selected?
Instead of opening several reports and piecing the account history together manually, I can get an initial summary of the relevant usage, event, survey, and company data. I would still verify the important findings in the underlying reports, but this gives me a much faster starting point for deciding whether the issue was really price, poor adoption, or a failure to reach value.
Low usage needs an account-level view
In B2B SaaS, the person canceling is often an administrator. Their answer may not describe the whole account.
I look at how many users were active, which teams adopted the product, the top events and pages, session frequency, and whether one champion was carrying most of the usage. “We were not using it” may actually mean the rollout never moved beyond one person.
That changes the conclusion. The account may need a smaller plan, better implementation support, a different internal rollout, or a clean exit because the original project ended.
Product complaints need replay evidence
When the customer selects technical problems, poor fit, or missing features, I want to see what happened before the cancel event.
Userpilot’s session replay can be filtered by user, company, segment, and event activity. That makes it possible to watch the sessions where the customer attempted the relevant workflow instead of reviewing random recordings.
A “missing feature” may turn out to be a feature the customer could not find. “Too difficult” may point to one setup step they repeated several times. “Not using it” may follow weeks of failed attempts rather than a lack of interest.
Support conversations often contain the answer already
Cancellation feedback should be read with support tickets, customer success notes, and earlier survey responses.
If the customer reported the same integration problem three times, the exit survey does not need to rediscover it. If they repeatedly asked for help with rollout, “not using it enough” is probably the end of that story rather than the beginning.
This is also why I would not wait until cancellation to start listening. Questions raised during onboarding, failed implementations, declining activity, repeated support contacts, and passive in-app feedback usually give the team more time to help.
Keep the stated reason and the likely pattern separate
I would store the customer’s selected answer exactly as it was given, then add an internal interpretation only when there is enough supporting evidence.
For example, an account might select price while the account history shows:
- Onboarding was never completed.
- The core feature was not adopted.
- Usage declined for six weeks.
- The administrator requested setup help twice.
- The customer accepted a discount and canceled again as soon as it ended.
Price was part of the final decision, so the answer is not necessarily a lie. But the preventable pattern was failure to reach value. Keeping both pieces of information stops the team from turning every price response into a pricing project.
Do not count offer acceptance as proof
A customer who accepts 50% off has confirmed that they like paying less. They have not confirmed that price was the original reason for leaving.
Track what happens after the save. Did the account become active again? Did more users adopt the product? Did the customer remain after the promotional period ended? A discount that delays the same cancellation by one month has recovered a payment, not the customer relationship.
Look for patterns within similar accounts
A reason can mean something different depending on plan, tenure, company size, role, or stage of adoption.
New accounts choosing price may never have activated. Long-term accounts choosing missing features may have outgrown the current product. Small teams choosing low usage may need a pause. Enterprise accounts choosing poor fit may have had an implementation problem rather than a product problem.
Analyze those groups separately before changing pricing, onboarding, or the roadmap for everyone.
Some churn feedback should not shape the product
A customer may be leaving because the product was never intended for their use case. That feedback is useful for positioning, qualification, and expectation setting, but it does not always belong on the roadmap.
I pay more attention when the same problem appears across accounts that match the target customer, use the same workflow, and show similar behavior. A long comment from one poor-fit customer should not outweigh a repeated pattern across the customers the product is designed to serve.
Use interviews selectively
Generic emails asking every former customer for a five-minute call rarely produce much. Once the cancellation is complete, the customer no longer owes the company more time.
I reserve personal follow-up for high-value accounts, unexpected cancellations, conflicting signals, or patterns the team cannot explain from the existing data. The message should come from someone the customer knows and refer to their actual experience. An incentive can compensate them for the time, but the interview sample should not be treated as representative of everyone who churned.
Let “Something else” improve the survey
Review the open answers regularly. When the same reason keeps appearing, promote it into the main list.
If customers repeatedly write that the product was not built for their use case, add that option. If many people only needed the product for a temporary project, separate that from low usage. The survey should change as you learn how customers describe the decision.
Use the answer as a clue
A cancellation survey cannot make every customer explain the full truth while they are leaving. It can give you a useful clue without making the cancellation harder.
Show visible reasons that match how customers actually describe the problem. Let them choose more than one factor, ask which mattered most, and keep the follow-up specific and optional. Use one relevant save option at most, then let the customer leave.
Afterward, compare the response with account activity, feature adoption, replay, support history, and what happens after any retention offer. That is how you get from “too expensive” to the part of the experience your team can actually improve.
Book a Userpilot demo to see how you can collect cancellation feedback, connect it with company-level behavior, and investigate what is really driving churn.

