Cancellation prevention
Six months untangling a buggy cancellation-prevention flow, until merchant complaints dropped 80% and the rest were feature requests.
- Company
- Recharge
- Role
- Frontend engineer, rewards & loyalty
- When
- 2022–2026
- Stack
- Vue, React, TypeScript
The demos here are recreations with fictional brands and fake data. The original work was done at Recharge.
Try it
Start a cancellation, pick a reason, and see the offer that matches it. Switch the shopper’s country to check prices and dates in their currency and format.
Welcome back, Jordan
Your subscription
- Coffee
- Ridgeline blend, 12 oz
- Every
- 2 weeks
- Next bag
- October 24
- Price
- $18.00
Demo controls
Reason → offer rules
- It's too expensiveTake 20% off your next 3 orders
- I have too much coffeeGet a bag every 4 weeks instead
- My next bag is coming too soonPush your next bag back a week
- I'm traveling or awaySkip your next delivery
- I'm bored of the same coffeeHave a free sampler on us
- Something elseNo offer, go to confirm
The problem
When a customer went to cancel a subscription, they landed on a page that started a cancellation-prevention flow. It asked a series of questions, and based on the answers the merchant could offer a discount, a free gift, a less frequent delivery schedule, or the option to delay or skip their next order.
The idea was sound, but the product was a mess. Merchants were reporting bugs constantly: what they built in the landing page builder didn’t always match what customers saw on the live site, dates and numbers sometimes didn’t line up, and some flows worked on the legacy customer portal but broke on the new one.
What I did
I spent almost six months on bug duty for cancellation prevention. I worked through the reports merchants sent in, tracked down the cause of each one and fixed it, cleaning up the experience as I went.
The hard part
There were three versions of the truth: the builder preview, the legacy customer portal and the new one. A flow could look right in the builder and be wrong on the live site, or work in one portal and fail in the other, so I had to hunt down every place they diverged and make them behave the same.
Result
Merchant complaints about cancellation prevention dropped by 80%. The ones that remained weren’t about bugs; they were requests for more features.