How to A/B test your cancel flow
How to A/B test a subscription cancel flow with pause offers, downgrades and exit surveys, and why to judge it on revenue kept after 30 and 90 days.
Updated 28 September 2026 · 6 min read
Randomly assign subscribers who start cancelling to the current flow or a new one, such as a pause offer, a downgrade or a one-time discount, and judge on revenue kept per cancel attempt at 30 and 90 days, not on how many people clicked 'stay'. A pause offer can look worse at 30 days and better at 90, because paused customers pay nothing until they come back. Always keep a clear way to finish cancelling, which California's law requires next to any save offer.
To A/B test a cancel flow, randomly assign each subscriber who starts cancelling to either the current flow or a new one, such as a pause offer, a cheaper plan or a one-time discount. Then judge the versions on revenue kept per cancel attempt, meaning the money collected from everyone who started cancelling over the next 30 and 90 days, divided by the number of people who started. Don't judge on the save rate the day it happens.
The reason is timing. A paused subscriber pays nothing until the pause ends. A subscriber who takes 50% off pays half. Someone who clicks "stay" may cancel again next month. The 30-day number shows the short-term cost of each offer, and the 90-day number shows whether it paid off. Keep a one-click way to finish cancelling in every version, both because the law in places like California requires it and because a flow that traps people produces chargebacks and complaints.
What to measure
Revenue kept per cancel attempt at 30 and 90 days is the main number:
Revenue kept per attempt = payments from everyone who started cancelling in a version, within the window, minus refunds, divided by the number who started cancelling.
Track these alongside it:
- Share who finished cancelling, paused, downgraded or stayed.
- Share of paused customers who resumed and paid.
- Revenue from downgrades, which is lower per customer but more than zero.
- Refunds, chargebacks and support complaints about cancelling.
- Share who came back within 90 days after cancelling.
Leave failed card payments out of the test. That churn is involuntary, and a cancel flow never sees it.
What to test
| Offer | Fits people who | Risk | Measure |
|---|---|---|---|
| Pause for 1 to 3 months | Aren't using it right now | Many never resume | Revenue kept at 90 days, resume rate |
| Downgrade to a cheaper plan | Say it costs too much | Lower revenue per customer | Revenue kept at 30 and 90 days |
| One-time discount | Are price sensitive | Trains people to threaten to cancel | Revenue kept after the discount ends |
| Switch to annual at a lower monthly rate | Plan to stay but want to pay less | Refund requests | Revenue kept at 90 days, refunds |
| Exit survey with routing | Everyone | Adds a step | Revenue kept, completion time |
| Summary of what they'll lose | Active users | Can feel like a guilt trip | Revenue kept, complaints |
| Offer of help or a call | Stuck on a problem | Needs staff | Revenue kept, tickets handled |
The main value of an exit survey is the answers, because they let you route people. "Too expensive" can lead to a downgrade offer, "not using it" to a pause, and "missing a feature" to a note on the roadmap or a support contact. Testing the routing against a single offer for everyone is a good second test.
A worked example
This is a made-up example. A subscription costs $50 a month and about 400 people start cancelling each month. Half see the current flow, an exit survey and then a cancel button (A). Half see a pause offer of one or two months before the cancel button (B).
| A: exit survey | B: pause offer | |
|---|---|---|
| Started cancelling | 200 | 200 |
| Stayed | 20 | 10 |
| Paused | 0 | 60 |
| Save rate on the day | 10% | 35% |
| Paying in month 1 | 16 | 9 |
| Paying in month 2 | 14 | 8 stayers + 12 resumed |
| Paying in month 3 | 12 | 8 stayers + 30 resumed |
| Revenue kept per attempt, 30 days | $4.00 | $2.25 |
| Revenue kept per attempt, 90 days | $10.50 | $16.75 |
Here is the maths. At 30 days, A collects 16 × $50 = $800, or $4.00 per attempt, and B collects 9 × $50 = $450, or $2.25. At 90 days, A collects (16 + 14 + 12) × $50 = $2,100, or $10.50 per attempt. B collects (9 + 8 + 8) × $50 from people who stayed, plus (12 + 30) × $50 from people who resumed, for $3,350, or $16.75 per attempt.
Read at 30 days, the pause offer is 44% worse. Read at 90 days, it is 60% better. The save rate of 35% vs 10% overstated it too, since half the paused customers never came back.
Is the 90-day gap real with only 200 attempts per version? Revenue per attempt here has a variance of about 1,365 in A and 1,457 in B. The standard error of the difference is the square root of (1,365 ÷ 200 + 1,457 ÷ 200), about $3.76. The gap is $6.25, which gives B about a 95% chance of being better. That is a reasonable result, but a thin one, and it took three months to get. Cancel flow tests are small by nature, so read A/B testing with low traffic before you plan one.
For a discount offer, add one more read one billing cycle after the discount ends. A 50% discount for three months looks good at 90 days by design. The question is how many people pay full price in month four.
To put a value on a win, the split test ROI calculator turns a per-attempt lift into money per month and per year.
How to run it
- Assign the version at the first cancel click, by subscriber, and keep it. Someone who comes back to cancel again should see the same flow.
- Show each offer once. A customer who already used a pause shouldn't get another one automatically in the test.
- Only offer what you will honor. The discount, pause length and downgrade price must exist in your billing system before launch. In Stripe, that means the pause and the coupon are set up and tested. See A/B testing with Stripe.
- Collect a few hundred attempts per version, then wait 90 days after the last one before you decide.
- Keep a holdout group on the old flow after you ship a winner, so you can see whether saved customers keep paying over six months.
Outtest can test a pause offer in a cancel flow and judges it on revenue from your payment tool. Any change to a cancel flow waits for the owner's approval before it goes live, even when the rest of Outtest runs on autopilot.
Rules for cancel flows
This is general information, not legal advice. Laws on cancelling subscriptions have changed several times since 2024, so check the current rules where your customers live.
- California. The automatic renewal law, as amended from July 2025, requires that a customer who signed up online can cancel online without steps that obstruct or delay it. The bill text lets a business show a discounted offer or retention benefit during cancellation only if it also shows a prominent "click to cancel" link or button at the same time.
- US federal. The FTC's 2024 "click to cancel" rule was vacated by the Eighth Circuit in July 2025, as Cooley explains. The Restore Online Shoppers' Confidence Act and state laws still apply, and the FTC restarted rulemaking in March 2026.
- UK. The subscription contracts rules in the Digital Markets, Competition and Consumers Act are due to start in January 2027 and require that customers can end a contract without unnecessary steps, according to TLT's briefing.
- App stores. Google Play's subscriptions policy requires an easy-to-use online way to cancel.
In practice, every test version should have the cancel button visible on the same screen as the offer, with no extra confirmation loops. If a version only wins by making cancelling harder, it isn't a win.
Tests to try, and what to measure
- Pause offer vs no offer. Measure revenue kept per attempt at 30 and 90 days and the resume rate.
- One-month vs three-month pause. Measure revenue kept per attempt at 90 and 120 days.
- Downgrade offer vs pause offer. Measure revenue kept per attempt at 30 and 90 days.
- Exit survey with routed offers vs one offer for everyone. Measure revenue kept per attempt at 90 days.
- A 30% vs 50% one-time discount. Measure revenue kept per attempt one billing cycle after the discount ends.
- A "what you'll lose" summary vs none. Measure revenue kept per attempt and complaints.
- A win-back email 14 days after cancelling vs none. Measure revenue from cancelled customers at 90 days.
For more on pricing experiments beyond the cancel flow, see how to A/B test your pricing and revenue per visitor.
Questions people ask
What should I measure in a cancel flow test?+
Revenue kept per cancel attempt: the payments collected from everyone who started cancelling in each version, over 30 and 90 days, divided by the number who started. The save rate on the day counts a pause or a discount as a win even if the customer never pays again.
Is it legal to show a retention offer when someone cancels?+
In many places, yes, if cancelling stays easy. California's automatic renewal law lets a business show a discount or retention offer during online cancellation only if a prominent 'click to cancel' button is shown at the same time. Other US states, the UK and the EU have their own rules. This is general information, not legal advice.
Should I offer a pause or a discount?+
It depends on why people leave. A pause suits people who aren't using the product right now. A downgrade or discount suits people who say it costs too much. A short exit survey lets you route each reason to the offer that fits and test the routing.
How long should a cancel flow test run?+
Until each version has a few hundred cancel attempts, then another 90 days so you can see who resumed, who paid full price again and who left. For a business with a few hundred cancel attempts a month, that means two to four months in total.
Read next
Let Outtest run your split tests
AI agents read your analytics and payments, find where you lose the most money, build the fix and test it. Every test is judged on revenue, not clicks. Plans from $29 a month.