Guide
Track Cancellation Outcomes: Event Model for Voluntary Cancel
You cannot improve a cancel flow you do not instrument. A minimal event model ties each voluntary session to a final outcome (canceled, saved via offer, or abandoned) and enough context to segment by plan — without shipping email addresses or card data to analytics tools.
Save rate definitions: cancellation save rate. Hub: cancellation flow analytics.
Last updated October 23, 2026
Session lifecycle events
| Event | When |
|---|---|
| flow_started | Customer opens cancel entry point |
| reason_selected | Picker or validated free text submitted |
| offer_shown | Retention offer rendered (type + id) |
| offer_accepted / offer_declined | Customer action on offer step |
| flow_completed | Terminal state: canceled or still subscribed |
Properties to attach
- Anonymous session or subscription id — not email in third-party analytics
- Plan, interval, and MRR or price id at session time
- Flow variant or segment id when using multiple experiences
- Reason code aligned with your reporting taxonomy
Reconcile with Stripe
Webhook events confirm subscription status after the flow. Pair in-app events with subscription cancellation webhooks so “saved” in UI matches Stripe’s subscription object.
Privacy and scope
- Voluntary cancel only — do not merge failed-payment funnels into save rate
- Do not log full survey essays in product analytics; store in your app database
Outcome logging built in
ChurnIntel records voluntary sessions, reasons, and offer results for export.