Exit survey form: questions that reveal why customers leave
A copy-ready exit survey form: four questions, honest reason options, when to ask, how to protect answers, and how to check each reason against behaviour.
You’ve just exported last month’s cancellations. Half the answers say too expensive, a few say something else, and the rest picked whatever got them out fastest. You can’t tell whether to cut prices, fix onboarding, or build a feature, because your exit survey form collected labels, not evidence.
That doesn’t mean the form is useless. It means you’re reading it wrong. Treat the selected reason as a hypothesis to test against behaviour, not as ground truth, and a four-question form becomes enough to separate preventable churn from churn you should let go.
A copy-ready exit survey form structure
Build the form as a short, event-triggered diagnostic, fired right after cancellation. It isn’t a satisfaction questionnaire, and it shouldn’t ask customers for facts your billing system already holds. Use fixed-response questions for comparison and one open-text prompt for context.
| Field | Format | Required | Purpose |
|---|---|---|---|
| Account context | Recorded automatically: plan, tenure, source, payment status, usage | Not shown | Splits churn by cohort without extra questions |
| Primary reason | Single choice from mutually exclusive categories | Yes | Gives one comparable reason per cancellation |
| Secondary reasons | Multi-select, up to three options | No | Captures contributing factors without distorting the primary reason |
| Explanation | One open-text prompt in a short text box | No | Adds context for themes the categories miss |
| Offer and outcome | Offer shown, accepted or rejected, final status | Not asked | Shows whether a remedy changed the decision |
| Follow-up opt-in | Yes or no checkbox | No | Allows a later, reflective follow-up with the same person |
What the customer actually sees
Account context is recorded unobtrusively: plan, tenure, acquisition source, payment status, usage level, and cancellation path. Never ask for it. Every question you remove here is completion rate you keep for the question that matters.
Then come four questions, in this exact order:
- Q1, required, single choice: “What was the main reason you decided to cancel?” Options: price, low usage, missing capability, technical failure, switched to a competitor, temporary pause, other, and prefer not to say. Randomise the middle options and keep other last.
- Q2, optional, multi-select: “Which other factors contributed? Select up to three.”
- Q3, optional, open text: “What would have changed your decision?”
- Q4, optional checkbox: “Can we contact you in 30 days for a short follow-up?”
- 01 Main reason Required, single choice
- 02 Other factors Optional, up to three
- 03 What would have changed it Optional, open text
- 04 Follow-up Optional: contact in 30 days?
That’s the five-field template: four questions the customer answers, plus the automatically recorded context that makes the answers analysable. Paste it into your survey tool as is.
Why only one required question? Because one comparable reason per cancellation is what lets you aggregate by plan, tenure, or cohort. Secondary reasons and open text add nuance without breaking that comparability. If you let people pick three primary reasons, every cancellation counts three times and your chart stops meaning anything.
Record the offer shown and whether it was accepted in the same record, and attach the final cancellation outcome later. Preserve the raw response alongside the normalised reason and timestamp, so you can audit how a comment became a category months later. Keep the reason question before any retention offer, or you’ll measure the offer’s influence instead of the reason.
Writing reason options customers pick honestly
A generic option like too expensive wins by default when your list is vague. Customers pick the closest acceptable label, not the true one, so your categories have to come from your own cancellations, not a template you copied. For a longer list of reasons and follow-up questions, see our guide to churn survey questions.
| Reason option | Signals in your data | Survey label | Remedy to offer |
|---|---|---|---|
| Price | Downgrade attempts, discount-page visits | Cost is higher than the value I get | Lower tier or annual discount |
| Low usage | Logins and key actions falling for weeks | I stopped using it regularly | Onboarding help or a pause |
| Missing capability | Repeated support tickets for one feature | A feature I need is missing | Roadmap note and a call |
| Technical failure | Errors, failed syncs, support escalations | The product did not work reliably | Support contact before cancellation |
| Switched to competitor | Competitor named in comments | I chose another product | Exit interview question only |
| Temporary pause | No recent usage, stated timing in comments | I do not need it right now | Pause for one or two months |
| Other | Free text does not match a category | Something else | Review monthly to add a category |
| Prefer not to say | Blank or skipped primary answer | I would rather not answer | Count as unexplained churn |
Build the list in six steps
- Export first: Pull the last 90 days of cancellations and read about 50 open comments. Skipping this means you’re guessing at your customers’ vocabulary.
- Group into themes: Cluster the comments into recurring reasons. If a theme appears twice, it’s an anecdote, not a category.
- Write one category per theme: Word each option so two different people with the same situation pick the same one. Overlapping options, like price and value, split one reason across two bars.
- Add other and prefer not to say: Without them, you force misclassification. A customer with no matching option picks a wrong one just to finish.
- Randomise the middle, keep other last: The order of a list affects which option people pick, so the first position should not always go to the same reason.
- Test with five recent customers: Ask them to pick a reason while thinking aloud. Rewrite anything they hesitate over, because hesitation in testing becomes random clicking in production.
Keep the wording neutral. “What was the main reason you decided to cancel?” works. “What problem caused you to cancel?” doesn’t, because it presupposes a problem and pushes customers who stopped needing the product into a complaint they never had.
On self-serve plans, customers can cancel themselves, and the NoChurn cancel flow asks for a reason and offers an alternative that fits it. A customer who says they do not need it right now is offered a pause for a month or two, not a discount. Matching the remedy to the label only works if the label was honest in the first place.
When and where to send the exit survey
Ask for the reason twice, and the same customer may give two different answers. That is useful, because each timing tests the hypothesis under different conditions.
Moment one is inside the cancellation path, at the reason step before any retention offer appears. The account context is still attached, and the answer is fresh. The trade-off is pressure: the customer wants out, so the first pick may be the fastest acceptable label rather than the full cause.
Moment two is a reflective follow-up around the first win-back window, sent as a separate neutral message to customers who opted in. Distance changes the answer. Frustration fades, and people name slower causes, such as drifting usage or a team change, that they did not type during cancellation. Treat a changed answer as a second reading under different conditions.
- 01 In the cancel flow Before any offer. Fresh answer, but the customer wants out fast
- 02 Around day 30 A separate message to those who opted in. Slower causes come out
Keep the exit easier than the survey
The cancel button stays one click away at every step, and retention offers stay optional. The survey must never block the exit, for both ethical and commercial reasons: in a Chargebee survey of nearly 1,500 consumers reported by Customer Experience Dive, more than four in five said they were more likely to subscribe when they knew cancellation would be easy.
For win-back, NoChurn sends customers who cancel emails at 30, 60 and 90 days, written from their cancel reason, and their replies reach your team. Our guide to cancel flow best practices covers the wider flow this sits inside.
In mobile apps, the cancellation flow can run inside iOS and Android apps, but the form should be shorter there. I’d keep Q1 and drop the open-text box on small screens, since typing friction kills completion faster than question count does.
Placement rule: If skipping the survey is harder than cancelling, you’re measuring frustration, not reasons.
Protecting respondents and their answers
Most privacy trouble starts with one word: anonymous. Templates promise it casually, but anonymous, confidential, tracked-link, CRM-joined, and device-linked responses are different things, and your customers deserve to know which one you’re running.
An anonymous response can’t be linked back to a person, technically. A confidential response can be linked, but you restrict who sees it. A tracked survey link or a CRM join makes a response identifiable by design, whatever your intro text says. If you attach plan, tenure, and usage to every answer, as this form does, you’re running a confidential survey. Say so.
Where identification leaks in
Free text is the biggest leak. A comment mentioning a unique incident, a specific role, or a distinctive project identifies its author even after you strip the name. Small reporting groups leak the same way: if only three customers on one plan cancelled this month, an aggregate by plan is effectively a name.
There’s no universal minimum group size for reporting. Pick one based on how identifiable your cohorts are, and apply it consistently.
Turn each risk into a rule:
- State what’s collected: List the fields and why, on the form itself, in plain language.
- Separate the datasets: Keep operational cancellation data apart from research feedback, with different access lists.
- Restrict raw text: Managers see aggregates and themes, not individual comments.
- Set a retention period: Decide when raw responses are deleted or anonymised, and write it down.
- Aggregate only above your threshold: Suppress any cut that falls below your minimum group size.
The NoChurn cancel flow is built for click-to-cancel rules by default, but you still need to check the legal requirements that apply to your customers in each jurisdiction. A compliant flow and a compliant survey are related, not identical, obligations.
Reading survey answers against real behaviour
The answer a customer selects is the answer they were willing to give while trying to leave. That context creates bias: they’re focused on finishing the flow, so a generic option wins and the text box stays empty. Does an exit survey measure the reason, or merely the easiest answer to select? It measures the easiest answer, until you check it.
| Survey says | Behaviour shows | Likely real reason | Next action |
|---|---|---|---|
| Too expensive | Usage steady, downgrade attempted | Price fit | Test a lower tier with similar customers |
| Too expensive | Usage fell for weeks before cancelling | Low perceived value | Improve onboarding and usage, not price |
| Temporary pause | Payment failed, card expired | Payment problem | Send a payment update link and retry |
| Missing capability | Repeated tickets about one feature | Product gap | Log as a roadmap request with account count |
| Prefer not to say | Declining logins, no tickets | Unknown | Count as unexplained churn, do not guess |
Pull the behaviour record for every cancellation
For each cancelled customer, attach the usage trend before cancelling, failed payments, downgrade attempts, support contacts, tenure, and whether a discount was taken. That record is what turns the table above from opinion into classification.
Two rows deserve emphasis. Too expensive with steady usage is a real price objection, and a lower tier is a fair test. Too expensive with weeks of falling usage is a value problem wearing a price label, and discounting it just delays the same cancellation by a month. Segmenting this way is the core of churn analysis by segment, and it’s where many teams find they’ve been discounting customers who needed onboarding.
An accepted discount is not proof of retention. Keep tracking whether that customer is still active at 30, 60, and 90 days, or your save rate will flatter you.
When the 30-day follow-up contradicts the in-flow answer, don’t pick a winner and delete the loser. Record both, treat the later reflective answer as your main view, and flag the case for review. Contradiction is information: it usually means the fast answer hid the slow cause.
Count a churn as preventable only when the stated reason and the behaviour point to the same fix.
That’s the whole method. The form records what the customer said at that moment. Your job is to test it against what the account shows before that reason guides pricing, product, or onboarding decisions.
Launch your exit survey form this week
You don’t need a research programme. You need five steps in order.
- Lock the structure: Use the four questions from the template above and cut any question that doesn’t feed a decision. Keep the account record separate from the research answers from day one, because retrofitting that separation is painful.
- Build the reason list: Work from the last 90 days of cancellations, then test the wording with five recent customers. Rewrite any option they hesitate over before it ships, not after a quarter of polluted data.
- Place the trigger: Fire the form inside the cancellation path, after confirmation and before any offer, with one-click cancel visible at every step.
- Run a randomised pilot: Compare two wordings, or one-click against multi-step completion. Track response rate, completion rate, median completion time, missingness, and churn at 30, 60, and 90 days. Without the pilot, you won’t know whether a later change helped.
- Review against behaviour: Check the first results against usage and payment data, and split any category that keeps landing in other.
Pre-launch checklist
- Four questions live: Primary reason required, the rest optional.
- Escape options present: Other and prefer not to say both offered.
- Cancel works without answering: Test it yourself, on mobile, before launch.
- Storage verified: Raw responses, normalised reasons, and timestamps all saved.
- Follow-up scheduled: The 30-day message is written and triggered automatically.
- Privacy wording accurate: It matches what’s collected, not what you wish were true.
A cancellation tool can run much of this workflow. The NoChurn cancel flow asks for the cancellation reason, can show a matching offer, and keeps one-click cancel available throughout, and win-back emails at 30, 60 and 90 days are written from the reason each customer gave. It connects to billing providers such as Stripe, Chargebee, Recurly and Paddle, or to any billing through its API. Whatever tool you use, check each connected step against the sequence above.