Most cancellation-flow tools show you a "save rate" — the percentage of would-be cancellations you successfully retained with a discount or pause offer. It's usually the headline number on the dashboard, and it usually looks pretty good.
There's a problem with it, though: it's measuring the wrong moment.
The metric everyone measures
Here's how save rate typically gets calculated: a customer clicks cancel, sees a retention offer, accepts it — discount applied, subscription continues. The dashboard logs that as a save, right then, at the moment of acceptance.
It feels intuitive. The customer didn't cancel, so it's a win. Log it, move on.
The moment that actually matters is later
Here's the catch: accepting an offer isn't the same as being retained. A customer who takes 50% off for one month and then cancels the day the discount ends wasn't saved — they were delayed. The cancellation still happened. It just happened a month later than your dashboard thinks it did.
This matters more than it sounds like it should, because the two scenarios look identical at the moment they're logged:
- Customer A accepts a discount, stays subscribed for another two years
- Customer B accepts the same discount, cancels the day it expires
Both get counted as "1 save" the instant they click accept. Your dashboard can't yet tell them apart — and it never will, unless you go back and check.
Why this quietly inflates your numbers
If a meaningful share of "saves" are actually Customer B — delayed cancellations wearing a save's clothing — your reported save rate is overstating how well your retention offers are working. That has real consequences:
- You might keep running an offer that isn't actually working, just deferring the same churn by 30 days
- You can't tell whether a discount or a pause is the better lever, because both show identical numbers at acceptance time
- Founders and teams end up optimizing for "offer acceptance," which is a proxy metric, instead of the thing they actually care about — subscribers who are still around
The fix: check back after the offer period ends
The corrected version of this metric requires one more step: don't count a save as final until the discount or pause window has actually passed and the customer is still active.
In practice, that means:
- When an offer is accepted, log it — but as pending, not confirmed
- Store when that offer's window ends (end of discount period, end of pause)
- Once that date arrives, check the subscription status again
- If the customer's still active → confirmed save
- If they've cancelled since → deferred churn, not a save
This is sometimes called cohort tracking — you're grouping subscribers by when they accepted an offer, and following that cohort forward instead of stopping the clock the moment they said yes.
What you get from doing this
Two numbers instead of one:
- Immediate acceptance rate — how many people took the offer (useful for knowing if the offer itself is compelling)
- Confirmed save rate — how many are still around after the offer period (the number that actually reflects retained revenue)
The gap between those two numbers is informative on its own. A small gap means your offers are creating real retention. A large gap means you're mostly buying yourself 30 days and calling it a win.
The uncomfortable part
Confirmed save rate is almost always lower than immediate acceptance rate — sometimes noticeably so. It's a less flattering number to put on a dashboard, or to say out loud in an investor update. But it's the one that's actually true, and the one that tells you whether your retention strategy is working or just postponing the same losses.
This is the exact thing that made us rebuild the save-rate metric in SavesHQ — a Reddit comment pointed out that our own dashboard had this problem, and once we started tracking confirmed saves separately, the gap between the two numbers was bigger than we expected.
Explore SavesHQ Cohort Retention Tracking →If you're building retention tooling yourself, this is worth doing even before you build anything fancy — a simple cron job that rechecks subscription status 30 days after an offer, and a second counter on your dashboard, gets you most of the value.