Lemon Squeezy Webhook Event Decoder

Pick a Lemon Squeezy webhook event. See what it means for churn, whether it's voluntary or involuntary, whether to email the customer, and what ChurnNote does with it automatically.

Subscription

Payment

Order

subscription_cancelled

VoluntaryChurn event
What this event means
The customer cancelled the subscription. By default in Lemon Squeezy, they keep access until the end of the current billing period (status becomes 'cancelled' but the subscription is still active until 'expired' fires).
Should you email the customer?
Send a founder-style cancellation feedback email within 24 hours. The customer just made the decision and still remembers why. Do not wait until 'expired'.
Voluntary churn or failed payment?
Scheduled voluntary churn. Customer is still paying but will stop at period end unless they reactivate.
What ChurnNote does
Captures subscription_cancelled, fires a feedback email from your founder address, and surfaces the reply grouped by reason.

Lemon Squeezy churn signals founders miss

Most teams listen for subscription_expired and treat that as the cancellation event. By then, the customer has been gone for two weeks and has fully moved on. The real moment is subscription_cancelled, which fires immediately when the customer makes the decision.

The other commonly-missed event is subscription_payment_failed. Lemon Squeezy will retry the payment automatically but doesn't send any branded follow-up from your inbox. That leaves recoverable revenue on the table.

Frequently Asked Questions

Which Lemon Squeezy events should I listen to for churn?

subscription_cancelled (the voluntary cancel moment), subscription_expired (the hard churn moment), subscription_payment_failed and subscription_payment_recovered (the involuntary churn loop), and subscription_paused/unpaused for soft churn tracking. Together they cover every meaningful churn signal Lemon Squeezy fires.

What's the difference between subscription_cancelled and subscription_expired?

subscription_cancelled fires the moment a customer requests a cancel; the subscription's status becomes 'cancelled' but they keep access until the end of the billing period. subscription_expired fires when that grace period ends and access is revoked. The right moment to ask for feedback is subscription_cancelled, not subscription_expired.

Does Lemon Squeezy retry failed payments automatically?

Yes. Lemon Squeezy retries failed subscription payments on its own schedule. If retries succeed, subscription_payment_recovered fires. If retries fail, the subscription eventually transitions to expired. The dunning emails Lemon Squeezy sends are basic and not from your inbox; tools like ChurnNote layer founder-style follow-ups on top.

How is Lemon Squeezy different from Stripe for churn tracking?

Lemon Squeezy is a merchant-of-record, which simplifies tax and compliance but also means you have less direct control over dunning emails and retry timing. The webhook events are similar in spirit to Stripe but use different names (subscription_cancelled vs customer.subscription.deleted, subscription_payment_failed vs invoice.payment_failed).

Does ChurnNote support Lemon Squeezy?

Yes. ChurnNote was built with both Stripe and Lemon Squeezy as first-class providers. Connecting a Lemon Squeezy store takes one minute and ChurnNote handles all the event mapping automatically.

How ChurnNote helps

Lemon Squeezy gives you the events. ChurnNote gives you the founder-style emails, the reason capture, and the recovery loop on top.

ChurnNote connects to Stripe or Lemon Squeezy and automatically captures cancellation reasons, recovers failed payments, and queues win-back emails. So you stop losing revenue silently.

Start recovering churn

Next step

Ready to act on subscription_payment_failed?

The Dunning Email Swipe File has plain-text templates you can drop in for each failed-payment scenario.

Stop guessing. Start asking.

ChurnNote automatically emails customers after they cancel and shows you their honest reply. No surveys. No forms.

Try ChurnNote. $12/mo

Cancel anytime. No contracts.