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. 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. 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. 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. 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. 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
Start ChurnNote — $12/mo

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

Hey Sarah, I saw you cancelled Acme — totally fair, things change. You were with us almost 4 months so I'm just curious what shifted. Mind sharing what made you look elsewhere? Alex

FAQ

Can Stripe automatically email customers when they cancel?
Stripe itself does not send a cancellation email by default. You can configure receipts, but those are billing notices, not exit emails. To automatically email customers after they cancel, you need to either build it yourself by listening to the customer.subscription.deleted webhook or use a tool like ChurnNote that handles the webhook, sending, reply capture, and reason grouping for you.
How does ChurnNote detect a Stripe cancellation?
When you connect Stripe, ChurnNote registers a webhook on your account that listens for customer.subscription.deleted events. As soon as Stripe fires the event, ChurnNote queues a personal plain-text email from your address — no polling, no delay.
Does the email come from my domain or ChurnNote?
From your domain. ChurnNote sends plain-text email from your sender address — no ChurnNote branding, no [via churnnote.com] header. The customer sees a normal email from the founder.
Can I customize the email content?
Yes. ChurnNote personalizes each email using your sender name, company, product context, customer tenure, and tone preference (friendly, direct, or casual). You can preview and edit the template anytime.
What happens when a customer replies?
Replies land directly in your normal inbox — you have a real conversation with the customer. ChurnNote also ingests the reply, groups the reason (pricing, missing feature, switched tool, timing, bad experience, other), and stores it on the customer's timeline. When you ship the fix that addresses their reason, ChurnNote queues a win-back follow-up for your review.
Does this work with Stripe Checkout, Billing, or both?
Both. ChurnNote subscribes to subscription-level webhook events, so any Stripe subscription cancellation is detected — whether the customer started on Checkout, Stripe Billing, or the Customer Portal.
Does this work with Lemon Squeezy too?
Yes. ChurnNote works the same way with Lemon Squeezy — connect with an API key, ChurnNote subscribes to cancellation webhooks, sends the exit email, captures the reply.
How much does it cost?
$12/month flat (or $99/year). No MRR-based scaling, no per-event fees, no percentage of recovered revenue. Recovering one $49/mo customer pays for the tool for years.

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