Add one hosted script
Mint a short-lived identity token on your backend, then open churnplug from your existing cancel button.
SDK ready
Cancel-flow retention for small SaaS
A lightweight Stripe retention layer for SaaS under $20k MRR. Install in 5 lines, match each cancellation reason to a useful save, and prove the recovered revenue without inflating the number.
The full loop
churnplug connects the customer moment, the Stripe action, and the evidence row—without making you stitch together five products.
Mint a short-lived identity token on your backend, then open churnplug from your existing cancel button.
SDK ready
A Shadow DOM modal captures the reason without inheriting or breaking your product’s styles.
Reason selected
Offer a bounded discount, a pause, or extra access with a personal founder follow-up.
Offer accepted
A tenant-scoped restricted key updates the subscription while webhook signatures protect the event stream.
Stripe updated
Every saved amount lands in a drillable ledger with a bounded horizon and stored methodology.
+$87 evidenced
Two leaks, one system
Active churn needs a relevant conversation. Passive churn needs timely, transactional recovery. Both should resolve into the same trustworthy ledger.
Active churn
Passive churn
Reason-aware retention
Each offer is tied to a stated problem and bounded by eligibility rules, so customers get an appropriate option and you keep control of margin.
Price is the blocker. Apply a time-bounded coupon with a per-customer redemption cap.
Timing is wrong. Pause collection and automatically resume when the customer is ready.
The product is missing something. Extend access and trigger a personal follow-up email.
Evidence, not vanity
Revenue is credited only after an explicit retention action or a paid invoice following a clicked dunning link. The amount, source, and methodology stay drillable.
Explore the live ROI ledgerSaved revenue this month
$261
Net after fee
+$182
3 months × $29 MRR
Clicked Magic Link → paid
2 months × $58 MRR
Conservative by design: some customers might have stayed anyway. churnplug stores the methodology instead of claiming perfect causation.
Small footprint, serious boundaries
Your browser never sees a Stripe secret, churnplug never renders a card form, and tenant isolation is a required CI gate.
Your next cancellation is a signal
Install the hosted SDK, run the real cancel flow, and inspect the exact ledger row it creates.