This document explains how to use cancellation flow event callbacks to understand customer decisions during the cancellation process. This information is crucial for updating your user interface, tracking analytics, and taking appropriate actions based on customer behavior.
How it Works
The initCancellationFlow() method initiates the cancellation flow for a customer. Once the customer completes or exits this flow, a Promise resolves, providing a result object that tells you what the customer decided.

Understanding the Outcomes
The result object will contain a status field, indicating one of four possible outcomes:
status: 'retained' ✅ (Customer Stayed)
Meaning: Customer decided to keep their subscription, often after accepting a retention offer.
Action: Show a thank you message, track as "Cancellation Avoided" in analytics. Subscription remains active.
status: 'chose_to_cancel' ❌ (Customer Cancelled)
Meaning: Customer completed the flow and confirmed intent to cancel.
Action: Redirect to a goodbye page or show a confirmation message. Track cancellation reason and feedback. Subscription will be cancelled.
Additional Data: result.cancelReason, result.additionalFeedback, result.salvageOfferResult.
status: 'aborted' 🚪 (Customer Exited)
Meaning: Customer closed the modal without completing the flow.
Action: Typically, no immediate action is needed. Subscription remains active. Track as "Cancellation Flow Abandoned."
status: 'error' ⚠️ (Something Went Wrong)
Meaning: An issue occurred (e.g., invalid subscription ID, network error, feature not enabled).
Action: Display a friendly error message and suggest contacting support. Log the error. Subscription remains unchanged.
Best Practices
DO: Handle all four status cases, provide clear customer feedback, track cancellation reasons, update UI based on result, and handle errors gracefully.
DON'T: Manually cancel subscriptions (if auto-cancel is enabled), assume flow succeeded, ignore error statuses, or block customers if flow fails.
Quick Reference
Status | Meaning | Subscription Status | What To Do |
retained | Customer stayed | Active (possibly modified) | Celebrate! Show thank you message |
chose_to_cancel | Customer cancelled | Will be cancelled | Show confirmation, redirect |
aborted | Closed modal | Unchanged | Do nothing |
error | Flow couldn't start | Unchanged | Show error, offer support |
For more detailed information, refer to the Paddle.js documentation.