You can use Cancellation Flows, part of Paddle Retain, to build custom curated off-boarding experiences that are designed to prevent customers from churning.
Cancellation Flows presents customers with a simple survey that suggests dynamic salvage attempts, like pausing a subscription or switching plans, as well as gathering useful insights around why they want to cancel. As a last resort, you can offer customers a discount to incentivize them to stick around.
How it works
Paddle Retain combines world-class subscription expertise with algorithms that use billions of data points to automatically reduce churn. Paddle Billing is fully integrated with Retain, meaning it automatically handles dunning and retention for you.
Cancellation Flows are a part of Paddle Retain, helping you save customers from canceling and gathering cancellation insights. They ask customers why they're canceling, as well as what they found valuable about your app, then presents curated salvage attempts.
If you use Paddle Billing, Cancellation Flows automatically takes action on the related subscription for you. Cancellation Flows are built-in to the customer portal, or you can build your own workflow in your frontend using Paddle.js.
Before you begin
Paddle Retain works with live data for your billing platform. This means you can't integrate or test with sandbox accounts.
- Set up Paddle Retain
If you haven't already, connect Paddle Retain to your billing platform and set up Paddle Retain. - Make sure you've installed Paddle.js
Paddle.js must be installed and verified as installed on a public page on your site. Follow the instructions during setup, click Edit under Paddle.js is not installed, or click Install under Paddle.js is not installed in web app.
Set up Cancellation Flows
Go to Retain
If you set up Retain for Paddle Billing, you can access and configure Cancellation Flows in the Paddle Billing dashboard.
- Go to Paddle > Retain in your dashboard.
- Click Cancellation Flows .
- If setting up for the first time, click Get started . If you’ve already configured Cancellation Flows, click Edit .
Add branding
Any changes you make aren't saved until you reach the end of the setup flow. This includes when you edit an existing configuration.
Branding lets you customize the look and feel of Cancellation Flows, so they fit the style of your app. You can change the font family, and colors for text and components.
- Click the field under Brand color and use the color picker to select the color for selected states and progress bars.
- Choose the font family for the text from the dropdown under Font.
- Click the field under Text color and use the color picker to set the color for text.
- Click the field under Selected text color and use the color picker to set the color for text in selected states.
- View a preview of the first screen of the flow with your style selections on the right-hand side.
- Click Continue to continue to the next step.
Add responses for cancellation reasons
On the first screen of the flow, a customer is asked why they're canceling. You can add up to 5 responses to this question that are displayed as options the customer can select.
- Enter the text for each response under the Response fields.
- Click Add response to add a new response field.
- To remove a response, click the icon next to it.
- Check the preview of the first screen of the flow with your added responses on the right-hand side.
- Click Continue to move to the next step.
Add responses for cancellation insights
On the second screen of the flow, a customer is asked what they think your app or company is doing well. You can add up to 5 responses to this question that are displayed as options the customer can select.
These response options are also used in the next step to offer a salvage attempt to the customer.
- Enter the text for each response in the Response fields.
- Click Add response to add another response field.
- To remove a response, click the icon next to it.
- Preview the second screen of the flow with your added responses on the right-hand side.
- Click Continue to move to the next step.
Map responses to salvage attempts
On the third screen of the flow, a customer is offered an alternative option to canceling based on their responses to the previous question.
For each response, you can choose which salvage attempt to offer. There are five types:
| Type | Description |
|---|---|
| Contact support via email | Encourage customers to email your support team. |
| Book a meeting with support | Encourage customers to schedule a meeting with your team using Calendly. |
| Pause plan | Encourage customers to pause their subscription, so they can come back in the future. |
| Plan switch | Encourage customers to switch to a different product or price, retaining them with an offer that's more suited or affordable. |
| No attempt | Don't offer any salvage attempts. Customers are directed to the next step. |
Contact support via email
- Select the response you want to offer this salvage attempt for from the dropdown boxes titled When a customer selects.
- Select Contact support via email from the dropdown under Offer.
- Customize another response's salvage attempt, or click Continue to progress to the next step.
Book a meeting with support
- Select the response you want to offer this salvage attempt for from the dropdown boxes titled When a customer selects.
- Select Book a meeting with support from the dropdown under Offer.
- Enter the text for the copy that precedes "can we chat a bit more about this?" under Header copy.
- Customize another response's salvage attempt, or click Continue to progress to the next step.
Pause plan
The number of months to pause the subscription for is automatically set to the number of months remaining on the subscription.
- Select the response you want to offer this salvage attempt for from the dropdown boxes titled When a customer selects.
- Select Pause plan from the dropdown under Offer.
- Enter the text for the copy that precedes "how about pausing your subscription for [x] months?" under Header copy.
- Customize another response's salvage attempt, or click Continue to progress to the next step.
Plan switch
- Select the response you want to offer this salvage attempt for from the dropdown boxes titled When a customer selects.
- Select Plan switch from the dropdown under Offer.
- Enter the text for the copy that precedes "how about switching to [x]?" under Header copy.
- Customize another response's salvage attempt, or click Continue to progress to the next step.
No attempt
- Select the response you want to offer this salvage attempt for from the dropdown boxes titled When a customer selects.
- Select No attempt from the dropdown under Offer.
- Customize another response's salvage attempt, or click Continue to progress to the next step.
Configure salvage attempts
Once you've mapped responses to salvage attempts, you must configure the salvage attempts you selected.
You can't customize salvage attempts on a per-response basis. Your configuration applies to all responses that offer the same salvage attempt.
Contact support via email
- Click on the Contact support via email dropdown box.
- Enter the email address to direct customers to under Email for customer cancellation updates.
- Customize another salvage attempt, or click Continue to progress to the next step.
Book a meeting with support
- Click on the Book a meeting with support dropdown box.
- Copy your Calendly scheduling link on the Calendly platform.
- Enter your Calendly scheduling link under Calendly link.
- Customize another salvage attempt, or click Continue to progress to the next step.
Pause plan
- Click on the Pause plan dropdown box.
- Select the unit of time to pause the subscription for from the dropdown under For.
- Enter the number of time units to pause the subscription for in the field under For.
- Customize another salvage attempt, or click Continue to progress to the next step.
Plan switch
- Click on the Plan switch dropdown box.
- Select the plan that customers would be switched from using the dropdown under If customer is on.
- Select the plan that customers are offered to switch to using the dropdown under Offer.
- Enter any additional details you want to display with the offer under Information to display.
- Click Add product to set up another plan switch pairing.
- Click the icon next to the Salvage plan dropdown box to remove an existing pairing.
- Customize another salvage attempt, or click Continue to progress to the next step.
Customize the final discount offer
Discounts let you reduce the amount a customer pays on subsequent transactions for their subscription. You can optionally offer a one-time, percentage-based discount to encourage customers who reject the salvage attempts to stay.
You can add up to 32 discounts to offer. Customers are offered the discount that matches the billing period of the subscription they are attempting to cancel. If there isn't a discount with a matching billing period, no discount is offered.
If you choose to not offer a discount, or no discount can be offered, the customer is sent directly to the final page after they reject the salvage attempts.
You can also set the percentage amount to discount by, and the number of billing periods the discount applies for.
Offer a final discount
- Toggle Offer a discount on to enable the final discount offer.
- Select the billing period the discount and subscription must match for the discount to be offered from the dropdown under Billing period.
- If you selected Every number of days, months, or years, select the time unit from the dropdown and enter the number of time units.
- Enter the percentage amount to discount by in the field under Percentage off.
- Enter the number of billing periods the discount applies for in the field under Discount length.
- Click New discount to add a new discount to match against.
- Click to remove an existing discount.
- Click Continue to progress to the next step.
Turn off the final discount offer
- Toggle Offer a discount off to disable the final discount offer.
- Click Continue to finish the flow setup and save your changes.
Customize the final feedback page
If the customer rejects the discount, or if no discount was offered, the customer is sent to the final feedback page to give any final feedback before confirming their cancellation. You can customize the copy on this page to encourage customers to provide feedback and fit your brand.
- Enter the text for the page's header copy under Header copy.
- Enter the text for the copy following the header under Body copy.
- Click Continue to finish the flow setup and save your changes.
- Grab a copy of the Paddle Retain Cancellation Flows configuration template and fill it in. If you use Stripe, grab a copy of the Paddle Retain Cancellation Flows configuration for Stripe template and fill it in instead.
- Send it to us at sellers@paddle.com.
Preview Cancellation Flows
Once Cancellation Flows are set up, you can preview the flow customers see when they try to cancel a subscription. The flow is interactive, so you can view each page and check how it behaves.
- Go to Paddle > Retain > Cancellation Flows.
- Click the button in the Cancellation flow card.
- Click to preview the flow.
Integrate Cancellation Flows into your frontend
If you handle cancellations using the customer portal, you don't need to do anything. The customer portal automatically launches Cancellation Flows when customers try to cancel a subscription.
If you've built your own cancellation logic outside the customer portal, you need to:
- Call the
Paddle.Retain.initCancellationFlow()method when a customer tries to cancel a subscription on your website or app, passing the Paddle ID of the subscription entity that the customer wants to cancel. - Attach a callback to build workflows around the result.
- Retain automatically handles pausing, applying a discount, switching plans, or canceling the related subscription in Paddle Billing. When those events occur in Paddle, handle provisioning in your app as normal.
Example
<!-- Cancellation button --><button onclick="cancelSubscription();">Cancel my subscription</button>
<script type="text/javascript"> function cancelSubscription() { Paddle.Retain.initCancellationFlow({ subscriptionId: 'sub_01h8bqcrwp0vjd1p3bv20y7323' }); }</script>- Update the cancellation logic in your web app to call the
profitwellmethod, passinginit_cancellation_flowand an object containing the ID of the subscription in your billing platform that you want to cancel. - Use the
.then()method to attach a callback to the result, then build logic to handle the result. You should cancel a subscription when the customer chooses to cancel or when the cancellation flow encounters an error. - Retain automatically handles pausing, applying a discount, or switching plans in your billing platform. Handle provisioning in your app as normal.
Retain doesn't cancel subscriptions in your billing platform, unless you're using Paddle Billing. You must build logic to handle this. You should run this logic when a cancellation flow encounters an error, too.
Example
<!-- Cancellation button --><button onclick="cancelSubscription();">Cancel my subscription</button>
<script type="text/javascript"> function cancelSubscription() {
// Any pre-cancellation logic here
// Start cancellation flow profitwell('init_cancellation_flow', { subscription_id: 'sub_1OFyRG2eZvKYlo2CQZLEmvPK' }) .then((result) => { if (result.status === 'retained' || result.status === 'aborted') {
// Logic to run when a customer accepts a salvage attempt, salvage offer, // or closes the cancellation flow modal. console.log("Customer retained!");
} else {
// Logic to run when a customer chooses to cancel or when an error occurs. console.log("Customer proceeded with cancellation, or an error occurred.");
} }); };</script>Simulate Cancellation Flows
Once you've set up Cancellation Flows, you can simulate one to check how it looks to customers.
- Go to a page where you've installed Paddle.js for Retain.
- Open your browser console.
- Enter
Paddle.Retain.demo({feature: 'cancellationFlow'}).
- Go to a page where you've installed the ProfitWell.js snippets.
- Open your browser console.
- Enter
profitwell('cq_demo', 'cancellation_flow').
Subscribe to notification emails
You can subscribe to receive notification emails based on the outcome of a cancellation flow for monitoring and reporting purposes. You choose which emails you'd like to receive by toggling the available options.
- Abort Cancellation
Notify when a customer starts to cancel but is successfully retained and doesn't go through with it. - Cancellation
Notify when a customer completes a cancellation despite going through the flow. - Pause Plan
Notify when a customer accepts a pause offer instead of cancelling. - Switch Plan
Notify when a customer accepts a plan switch as an alternative to cancelling. - Salvage Offer
Notify when a customer accepts a discount or other salvage offer.
- Go to Paddle > Retain > Cancellation Flows.
- In the Notification email settings section, click Edit .
- Enter the email address where you want to receive notifications under Notification email.
- Toggle the notification options that you'd like to receive emails for.
- Click Save to save your changes.
Subscribe to receive reports
You can subscribe to receive a weekly CSV report of Cancellation Flows activity. The report is an activity log with one row for every time a cancellation flow is initialized. Use it to analyze cancellation patterns, measure your save rate, and identify which salvage attempts are most effective.
Certain fields in the report map to those in the return object of Paddle.Retain.initCancellationFlow().
ctm_.pendingThe cancellation flow was initialized but hasn't completed yet.abortedThe customer exited the flow without completing it.retainedThe customer accepted a salvage attempt or discount offer and didn't cancel.chose_to_cancelThe customer completed the flow and chose to cancel.
cancelReason by Paddle.Retain.initCancellationFlow().satisfactionInsight by Paddle.Retain.initCancellationFlow().contact_support_email_notificationCustomer was prompted to send a message to your support team.contact_support_meeting_schedulerCustomer was prompted to schedule a meeting using Calendly.pause_subscriptionCustomer was prompted to pause their subscription.plan_switchCustomer was prompted to switch to another plan.
contact_support_email_notificationCustomer sent a message to your support team.contact_support_meeting_schedulerCustomer scheduled a meeting using Calendly.pause_subscriptionCustomer paused their subscription.plan_switchCustomer switched to another plan.
acceptedThe customer accepted the salvage attempt.rejectedThe customer rejected the salvage attempt.no_attemptNo salvage attempt was offered.
succeededThe salvage attempt prevented the customer from canceling.failedThe salvage attempt did not prevent the customer from canceling.
acceptedThe customer accepted the discount offer.rejectedThe customer rejected the discount offer.
sub_.pri_.1 if true, 0 if false.- Go to Paddle > Retain > Cancellation Flows.
- Click Edit in the Weekly report email section.
- Enter the email address you want to receive the report at.
- Add more email addresses by clicking Add email .
- Click Save .