2
3 Comments

I built a churn-prevention tool, then deleted the billing code and made it free

Hey IH. I've been building CancelKit, a tiny widget that sits in front of your Stripe cancel flow: quick exit-survey + an instant save offer (discount or pause) before someone actually cancels.

Backstory: I kept losing subscribers I could've saved with a 20% discount for 2 months, but I had zero visibility into why they were leaving and no easy way to intervene. Built CancelKit to fix that for myself first.

I originally built a full billing layer on top of it. I ended up ripping it out entirely — putting cancel-reason data behind a paywall made no sense for a tool whose whole point is that almost nobody measures this. It's free now, no card, no paid tier, one line of script.

Happy to answer questions about the build (Stripe webhook ordering and idempotency were the genuinely hard parts).

We're live on Product Hunt today — would love your support: https://www.producthunt.com/products/cancelkit

on August 9, 2026
  1. 1

    The real insight here is visibility collapse. Before CancelKit, you had zero measurements - you knew someone canceled but nothing about why or whether they could've been saved. That missing measurement system meant you couldn't even build the right product.

    Making it free makes the measurement itself the product, not the intervention. The exit surveys and save offers are just the measurement interface. You're essentially saying: "You already have a churn problem. The first step isn't solving it - it's measuring what's actually happening."

    Most SaaS founders pay for billing infrastructure and then can't see what it's preventing. You inverted it - the visibility of "why do customers leave" became so valuable that monetizing the data made the product worse. That's a founder measuring correctly.

  2. 1

    The important metric here is probably not the immediate save rate, but retained revenue 60–90 days later. A 20% offer can merely delay an inevitable cancellation, and showing it too broadly can teach users to enter the cancel flow for a discount. I’d add eligibility rules (tenure, plan, previous offers), a small holdout group, and reporting by offer: accepted, still active after the discount ends, and revenue retained net of the discount. That would separate genuine incremental retention from a temporarily improved cancellation number.

  3. 1

    The strongest signal here is that removing the billing layer changed what CancelKit actually is, not just how it’s priced.

    That makes the decision to simplify the product more interesting than the free-vs-paid question itself.

Trending on Indie Hackers
I Just Discovered My Analytics Numbers Are Mostly Fake. Here Is Why. User Avatar 96 comments Co-founders suck… User Avatar 79 comments I built an AI that finds the right product for your customers User Avatar 41 comments I built a tool to find people already talking about problems your product solves User Avatar 34 comments Solo-built Pistly for months. Launching on PH this week and I still don't know if the market wants it. User Avatar 34 comments How I built a source-backed UK and Netherlands financial calculator platform User Avatar 28 comments