Blog

Churn, dunning & retention — the playbook.

Practical guides on keeping subscription revenue you've already earned — failed- payment recovery, Stripe dunning, and cancel flows that save customers without dark patterns.

The best Churnkey alternatives for Stripe SaaS (2026)

An honest look at the top Churnkey alternatives for Stripe SaaS: what each tool does best, real pricing, and how to choose if you're Stripe-only.

Jun 13, 2026 · 8 min read

FTC click-to-cancel: what your cancel flow actually needs

The FTC's click-to-cancel rule was vacated in 2025 — but the same 'cancel as easily as you signed up' principle lives on in ROSCA and state auto-renewal laws. Here's what your cancel flow still needs.

Jun 11, 2026 · 6 min read

Stripe dunning best practices for 2026

Stripe's built-in retries are a floor, not a strategy. A practical guide to decline-code-aware retries, a 4-touch dunning sequence, deliverability, and the numbers to watch.

Jun 10, 2026 · 8 min read

How to reduce involuntary churn in your SaaS

Involuntary churn — failed payments, not cancellations — is the quietest leak in subscription revenue. How to find it, fix it with smart retries and dunning, and measure recovery.

Jun 9, 2026 · 7 min read

Stripe past_due vs unpaid: what each subscription status actually means

past_due means Stripe is still retrying; unpaid means it stopped. What each status means, what controls the difference, and the right recovery move for each.

Jun 8, 2026 · 6 min read

Stripe decline codes explained: what each means and whether to retry

A practical reference to Stripe decline codes — soft vs hard, what each means, where to read it, and whether to retry, send a card-update email, or stop.

Jun 6, 2026 · 5 min read

Handling the invoice.payment_failed webhook without duplicate emails or dead links

Stripe's invoice.payment_failed fires on every retry. How to dedupe events, send a fresh hosted pay link, and stop cleanly when next_payment_attempt goes null.

Jun 4, 2026 · 6 min read

Dunning email templates for Stripe: a copy-paste sequence that recovers payments

A copy-paste 4-email dunning sequence for Stripe: subject lines, body copy, and decline-reason tailoring that recovers more failed payments.

Jun 3, 2026 · 5 min read

How to design a SaaS cancellation flow that actually saves customers

A 5-screen blueprint for a SaaS cancellation flow that saves customers without dark patterns: a reason survey, reason-matched offers, a one-tap exit, win-back.

Jun 2, 2026 · 6 min read

Stripe billing portal limitations: when you need an alternative

Stripe's native customer portal is great for the basics — until you want to retain the customer who clicks cancel. The walls it hits, and when you've outgrown it.

Jun 1, 2026 · 5 min read