Stripe cancellation email tool
Automatically email customers after they cancel in Stripe.
ChurnNote watches your Stripe account for cancellations and sends a personal plain-text email from your address — within minutes, every time. The customer replies, you learn why they left, and ChurnNote queues a win-back when there's a real reason to reach back out.
Quick answer
Stripe does not send cancellation emails to customers by default. To automatically email a customer after they cancel their Stripe subscription, you can either listen to the customer.subscription.deleted webhook and build the sending pipeline yourself, or use ChurnNote ($12/mo) which handles the webhook, the email send, the reply capture, and the win-back follow-up natively.
How ChurnNote sends post-cancel emails
Five steps from cancellation to win-back. All automatic except the ones you choose to control.
- 1
Stripe webhook fires
When the customer cancels (Customer Portal, Checkout, your own UI, or your dashboard), Stripe fires customer.subscription.deleted. ChurnNote receives it within seconds.
- 2
Personal exit email queued
ChurnNote drafts a plain-text email using your sender name, the customer's first name, their tenure, and your tone preference. No HTML, no branding, no [via churnnote.com] header.
- 3
Email sent from your domain
The email arrives in the customer's inbox like a normal note from the founder. Reply-to is your address. They reply, you read it.
- 4
Reply captured and grouped
ChurnNote ingests the reply, groups the reason (pricing, missing feature, switched tool, timing, bad experience, other), and shows it on the customer's timeline alongside their LTV.
- 5
Win-back queued when there's something to say
When you record a change — a fix, a new plan, a shipped feature, an offer — ChurnNote drafts a follow-up email to exactly the customers whose reasons match. You review and send.
Two ways to email Stripe cancellations
You can build this yourself or use ChurnNote. Here's the honest comparison.
Option 1
Build it with Stripe webhooks
Register a webhook for customer.subscription.deleted in your Stripe dashboard, write a handler, plug in a sender like Resend or SES, write the template, store replies, and build a reasons taxonomy by hand.
Skeleton
// /api/webhooks/stripe
const event = stripe.webhooks.constructEvent(
body, sig, process.env.STRIPE_WEBHOOK_SECRET,
)
if (event.type === 'customer.subscription.deleted') {
const sub = event.data.object
const customer = await stripe.customers.retrieve(sub.customer)
await sendExitEmail({
to: customer.email,
from: 'you@yourdomain.com',
subject: 'quick question',
body: writeBody(customer),
})
}You still need: reply ingestion, threading, reason grouping, LTV joins, win-back queue, dunning, deliverability.
Option 2
Use ChurnNote
Connect Stripe with one API key. ChurnNote handles the webhook, the email send, the reply capture, the reason grouping, the win-back queue, and the failed payment recovery — all in one place.
- ✓Stripe + Lemon Squeezy supported
- ✓Plain-text emails from your domain
- ✓AI-grouped cancellation reasons
- ✓Win-back queue with founder review
- ✓Dunning included
- ✓$12/mo flat
What the email actually looks like
Plain text. From your address. No template branding. Customers reply because it doesn't feel like marketing.
From: alex@acmeapp.com
To: sarah@customer.com
Subject: quick question
FAQ
Can Stripe automatically email customers when they cancel?▼
How does ChurnNote detect a Stripe cancellation?▼
Does the email come from my domain or ChurnNote?▼
Can I customize the email content?▼
What happens when a customer replies?▼
Does this work with Stripe Checkout, Billing, or both?▼
Does this work with Lemon Squeezy too?▼
How much does it cost?▼
Connect Stripe in 60 seconds.
One API key, plain-text exit emails from your domain, replies in your inbox, win-backs queued for review. $12/mo flat.
Get started