Cancel Flow
The Cancel Flow API lets you capture why a customer wants to cancel, show them a targeted retention offer, and record the outcome — all through a simple three-endpoint flow.How It Works
Customer Initiates Cancellation
The customer clicks your cancel button. Your app calls the Cancel Flow API.
Accepted or Declined
The customer accepts the offer (and stays) or declines it (and cancels). You report the outcome.
Authentication
Cancel Flow endpoints use your public API key (prefixpub_). This key is safe to use in client-side code.
The public key only grants access to Cancel Flow endpoints. It cannot read customer data or modify project settings.
Rate Limits
Cancel Flow endpoints are rate-limited to 10 requests per 15 seconds per API key. If you exceed this limit, the API returns429 Too Many Requests.
Cancel Reasons
Windback supports eight standard cancellation reasons:| Reason Key | Description |
|---|---|
too_expensive | The customer finds the price too high |
missing_features | A feature the customer needs is not available |
switched_to_competitor | The customer is moving to another product |
not_using_enough | The customer does not use the product enough to justify the cost |
technical_issues | The customer is experiencing bugs or reliability problems |
bad_support | The customer is unhappy with support quality |
temporary_pause | The customer wants to pause, not permanently cancel |
other | None of the above reasons apply |
API Endpoints
Submit Cancellation Reason
Submit the customer’s chosen cancellation reason and receive a matched retention offer.offer field will be null.
Get Available Offers
Retrieve the retention offer for a specific cancel reason without submitting a cancellation.Accept an Offer
Record that the customer accepted the retention offer.SDK Usage
Configuring Retention Offers
Each cancel reason can have a retention offer mapped to it. Configure offers in the dashboard under Settings > Retention Offers, or use the Retention Offers API.Graceful Degradation
The Cancel Flow API is designed to work even when a customer’s subscription has already expired. If you call the endpoints after the subscription is no longer active:- The cancellation reason and feedback are still captured.
- A retention offer is still returned (if configured).
- Accepting the offer will flag the customer for manual follow-up by your team.
This means you can safely integrate the Cancel Flow into post-cancellation surveys and win-back pages without worrying about subscription state.