Stop losing customers at the cancel button.

Churntide intercepts cancellations with a 10-second survey and the right save offer — discount, pause, downgrade or a human — so you keep the customers you'd otherwise lose.

Try the live demo →

Free for 14 days, then from $49/mo. No credit card, no sales call.

A typical Churntide deployment

30–40% of cancellations saved5-minute install$0 revenue share
Cancel Flows

Survey the reason, show the right save offer.

Payment Recovery

Dunning emails that win back failed invoices.

Win-back

Re-activate cancelled subscribers automatically.

Feedback AI

Turn survey answers into a roadmap.

Most SaaS lose 5–7% of customers every month — and never ask why

A plain "Cancel" button is the most expensive button in your app. One click, zero feedback, and a customer you spent $300 acquiring walks out for a problem you could have fixed with a 20% coupon or a 2-month pause.

🖱️

Customer clicks Cancel

No friction, no questions

🤷

You never learn why

Zero feedback captured

📉

MRR quietly bleeds out

$300 CAC walks out the door

The whole setup is one snippet

No SDK, no data pipeline. Churntide sits on top of the billing you already have.

  1. 1

    Drop in the snippet

    One script tag and one line on your cancel button. Or skip code entirely and link to your hosted cancel page.

  2. 2

    Your customer sees a reason to stay

    A 10-second survey, then the right offer for their reason — targeted by plan and MRR, A/B tested if you want.

  3. 3

    You see everything

    Save rate, MRR saved, why people leave, and every session. Connect Stripe and Churntide even applies the offer itself.

billing-page.html
<!-- 1. load the widget -->
<script src="https://churntide.com/churntide.js" defer></script>

<!-- 2. open it from your cancel button -->
<button data-churntide="hf_xxxxxxxx"
        data-churntide-email="jane@acme.com"
        data-churntide-plan="Pro">
  Cancel subscription
</button>

Everything you need to stop churn at the door

  • A 10-second reason survey, then the right offer for that reason: discount, pause, downgrade, free extension, or a human. Built-in 'are you sure?' step and a 'never mind' escape hatch. Brand it with your colour and logo.
  • Don't blast a discount at everyone. Map each cancel reason to the offer that fixes it, set a fallback for the rest, and toggle offers on/off without a deploy. Every offer shown, accepted or declined is tracked.
  • Save rate, MRR saved vs lost, sessions per day, and a reason breakdown with per-reason save rates. Every session has the customer, reason, free-text feedback, offer shown and outcome. Export to CSV.
  • One script tag and Churntide.open(). Or a hosted link. Or the REST API for your own UI. Churntide reports the outcome (callback + webhook) and your code applies it — so it works with Stripe, Paddle, Chargebee, Lemon Squeezy, or your own billing. No OAuth, no access to your payments account.
  • Involuntary churn is half of churn. Forward your Stripe events (or call the API) and Churntide runs a dunning sequence on your schedule — branded emails with a tracked 'update card' link that opens a Stripe billing-portal session. See open, recovered and lost revenue at a glance.
  • Connect a restricted Stripe key and Churntide applies accepted offers itself — coupon, pause, free extension, downgrade — and flags cancellations at period end. Email cancelled customers a reactivation offer N days later. Split-test two offers for the same reason and see which one wins.
  • Free-text survey answers pile up fast. One click and Claude reads every answer from the period, groups them into themes with counts and verbatim examples, and gives you a prioritised list of things to fix plus save-offer ideas tailored to your actual reasons.
1Too expensive → 30% off for 3 months
2Not using it → Pause for 2 months
3Missing features → Talk to the team
4Anything else → 30 extra days free

Pricing

Flat monthly pricing. No "% of recovered revenue".

Churnkey starts at $250/mo and goes to "contact sales". Churntide starts at $49 and every plan is self-serve. One saved customer usually pays for the month.

Starter

For indie SaaS & early-stage teams

$99

$49

USD

/ month

  • 1 cancel flow
  • Up to 250 cancel sessions / mo
  • Reason survey + save offers
  • Hosted cancel page & embed widget
  • Save-rate dashboard & CSV export
  • Slack & email notifications
  • Email support

14-day free trial. Cancel anytime.

MOST POPULAR

Growth

For SaaS doing $10k–$100k MRR

$250

$149

USD

/ month

  • Unlimited cancel flows
  • Up to 2,500 cancel sessions / mo
  • Offer targeting by reason, plan & MRR
  • Failed payment recovery (dunning emails)
  • Stripe auto-apply (coupon / pause / downgrade)
  • Win-back emails
  • Customer timelines, webhooks & REST API
  • Priority support

14-day free trial. Cancel anytime.

Scale

For $100k+ MRR & multi-product teams

$399

USD

/ month

  • Everything in Growth
  • Unlimited cancel sessions
  • A/B test offers
  • Feedback AI (Claude-powered insights)
  • Remove Churntide branding
  • Slack-connect support & onboarding

14-day free trial. Cancel anytime.

Need white-label, SSO or a DPA? Talk to us — still no "contact sales" pricing.

FAQ

Frequently Asked Questions

  • Same core idea — a cancel flow with surveys, offers and analytics — at a fraction of the price and without the sales call. Churnkey starts at $250/mo and hides its bigger plans behind "contact us"; Churntide starts at $49/mo and every plan is self-serve.

    We also don't connect to your Stripe account. Churntide tells you what the customer chose and your code applies it, which means it works with any billing provider and takes about 20 lines to integrate.

  • Yes. Churntide is billing-agnostic by design. When a customer accepts an offer or confirms a cancel, you get a callback in the browser (onSaved / onCanceled) and a webhook on your server. You then apply the coupon, pause, downgrade or cancellation in whatever system you use.

  • About 5 minutes. Create a flow (it comes pre-loaded with the 7 most common cancel reasons and 3 starter offers), paste one script tag, and call Churntide.open() from your cancel button. Prefer no JavaScript? Use the hosted link or the data-churntide attribute.

  • One customer opening a flow once — regardless of outcome. Saved, cancelled and abandoned sessions all count. We'll never cut a customer off mid-flow if you go over; we'll just email you.

  • Brand colour, logo, every headline and body text, the reasons, the offers, whether to show a final "are you sure?" step, and whether customers can skip the survey. Need more? Use the REST API and build your own UI on top of our logic + analytics.

  • Yes. Forward your Stripe webhook events to Churntide (or call the API when an invoice fails) and we run a dunning sequence on your schedule — branded emails with a tracked "update card" link. Connect a restricted Stripe key and that link opens a billing-portal session for the customer automatically. You see open, recovered and lost revenue on the Recovery page.

  • Not the way we build them. The flow takes under 30 seconds, "No thanks, cancel" is always one click away, we never show more than one offer, and cancelling always works. Save flows that trap people convert once and churn twice — fair ones bring customers back. That philosophy also keeps you on the right side of click-to-cancel regulations.

  • We store only what you send us (identifiers, plan, survey answers) and use it solely to run your flows and emails — never sold, never used for ads. Billing keys are AES-256 encrypted at rest. You can export or delete everything at any time. Details in our privacy policy.

  • 14 days, no credit card. And yes — if you cancel, you'll go through a Churntide cancel flow.

Your next cancellation is probably happening today.

Install Churntide before it does. Five minutes, no credit card, and a live demo you can click through right now.

See the demo ↗