Saving the users who still see the value
Our cancel flow was a one-way door: 72% of people who entered it left. I rebuilt it to ask why, check the answer against how they actually used the app, and route each person to an offer that fits. Completion dropped to 54%.
At a glance
72% of users who entered the cancel flow completed it. There was little effort to understand why they were leaving, or to keep them.
Not everyone leaving disliked the product. Some weren't using it enough, some found it too expensive, some just wanted a break.
Ask for the reason, check it against real usage, then route: a limited-time discount, an extra free month, or a pause.
Cancellation completion went from 72% to 54%, about 25% fewer cancellations among users entering the flow.
The cancel button was a one-way door.
Churn was one of my KRAs, and the cancellation flow is where churn becomes final. It's the last screen a paying user sees before they stop paying.
The old flow didn't try. Once someone entered it, they usually finished: 72% of people who opened it went on to cancel. We weren't learning why, and we weren't offering a reason to stay.
We treated every cancellation as the same cancellation.
No question asked
The flow made little effort to find out why. Someone who wanted a month off went through the same flow as someone who was done with us.
Nothing to offer
Leaving was effectively the only option, even for people who still liked the product.
Nothing learned
Every cancellation was a lost lesson. The reasons weren't reaching the roadmap.
Most people leaving didn't dislike the product.
I started with the cancellation reasons and user feedback we already had. Three groups stood out, and only one of them was really about money.
“I'm not using it enough”
They hadn't fit it into their routine yet. That's a habit problem, not a verdict on the product.
“It's too expensive”
Sometimes true. Sometimes it really meant "not worth it to me", which is a value problem again.
“I need a break”
A busy stretch, time away. They meant to come back. Cancelling was just the only button we offered.
“I like it. I'm just not using it enough to justify paying right now.”
Ask why, then make an offer that fits the why.
The new flow asks for the reason first, then shows an offer that matches it. Price-sensitive users get a limited-time discount. Low-usage users get an extra free month to rediscover the value. People who want a break can pause instead of cancelling.
We tested the messaging, the offer timing and the incentive structure to see what actually worked. Every reason also fed back into the roadmap.
Before you go, what's the main reason?
Your answer decides what we show next, and what we build next.
Stay for less
Keep premium at a reduced price for a limited time.
You're staying
Nice. Your plan and progress are right where you left them.
Pick a reason on the phone. The flow looks up the matching offer.
Plus a usage check — before a discount goes out, the stated reason is checked against real behaviour. See Fig. 02.
What should a user who says “too expensive” get?
Value problem
…
“I need a break” routes straight to a pause.
“I treated the reason picker as a routing signal, not research.”
I measured the one moment the flow can change.
- Definition
- % of users entering the cancellation journey who went on to complete cancellation.
- Denominator
- Every user who entered the cancellation flow, whatever reason they picked.
- Numerator
- Those who completed cancellation, after seeing (and declining) any offer.
- Comparison
- The old flow vs the redesigned, reason-routed flow.
Why this metric, not overall churnOverall churn includes people who never open the flow. Completion rate isolates the users the flow can actually reach: people already looking for the exit. And the relative read matters: 72% → 54% is 18 points, and 18 ÷ 72 ≈ 25% fewer cancellations.
About a quarter of at-risk cancellations, recovered.
Of every 100 users who open the cancel flow…
A save flow can easily turn into a trap. I designed against that.
Not saving at all costs
The goal was never to stop cancellations at any price. It was to make sure people who still saw value had a reason to stay. If someone is done with us, they should be able to leave.
Discounts only for price problems
"Too expensive" from someone who barely opened the app in a month is a value problem. A discount there wastes margin, so the flow treats it as a value problem instead.
Wrong answers cost nothing extra
If a low-usage user picks "too expensive" at random, they decline a discount they don't want and churn anyway. A wrong reason means a failed save, not extra spend. The picker never needed to be a perfect survey.
A cancel flow is the last conversation you get with a user. Route on what they say, decide on what they do, and send every reason to the roadmap.