> For the complete documentation index, see [llms.txt](https://developer.paddle.com/llms.txt).

# Set up Paddle Retain

Set up Paddle Retain to start automatically reducing churn and increasing customer lifetime value. Get started in minutes with Paddle Billing, or integrate with other billing platforms.

---

[Paddle Retain](https://developer.paddle.com/concepts/retain/overview.md) combines world-class subscription expertise with algorithms that use billions of datapoints to automatically reduce churn. Paddle Billing is fully integrated with Retain, meaning it automatically handles dunning and retention for you.

Set up in minutes with Paddle Billing, or integrate with other billing platforms.

## Connect to your billing platform

{% callout type="info" %}
Paddle Retain works with live data for your billing platform. This means you can't integrate or test with sandbox accounts.
{% /callout %}

<!-- vale off -->

{% tabs sync="retain-platform" %}
{% tab-item title="Paddle Billing" %}

If you use Paddle Billing, you can [set up Paddle Retain](#set-up-paddle-retain) to take care of payment recovery for you.

{% instruction-steps %}
Paddle Billing automatically [integrates with Paddle Retain](https://developer.paddle.com/paddlejs/include-paddlejs#manual-initialize-paddlejs-retain.md) without additional configuration required.

Any team member with the admin, technical, or subscription KPIs roles in Paddle Billing can access Retain.

Once you've completed setup, you can configure advanced [payment recovery features](https://developer.paddle.com/build/retain/configure-payment-recovery-dunning.md), [cancellation flows](https://developer.paddle.com/build/retain/configure-cancellation-flows-surveys.md), and [term optimization features](https://developer.paddle.com/build/retain/configure-term-optimization-automatic-upgrades.md).

{% /dashboard-instructions %}

{% callout type="note" %}
Retain [integrates with Paddle.js](https://developer.paddle.com/paddlejs/include-paddlejs#manual-initialize-paddlejs-retain.md), so you don't need to include any additional scripts if you use Paddle Billing.
{% /callout %}

{% /tab-item %}
{% tab-item title="Braintree" %}

### For US customers

1. [Set up Paddle Retain](#initial-setup), if you haven't already.
2. As part of the setup process, choose **Connect to Braintree**. Alternatively, go to [**ProfitWell > Settings > Integrations**](https://www2.profitwell.com/app/account/integrations) and click **Braintree**.
3. Click **Settings**, then click **Allow access**.
4. Follow the instructions to log in to your Braintree account and authorize ProfitWell to read your data. You must be an admin user in Braintree to do this.
5. That's it! Wait for your data to ingest. This may take a few hours.

### For non-US customers

The technology that lets us integrate with Braintree by signing in isn't available outside the United States. You can integrate by creating a read-only user with API access instead.

1. [Set up Paddle Retain](#initial-setup), if you haven't already.
2. Open Braintree, then go to **Settings > Team**, then click **New user**.
3. Create a new role called "ProfitWell Read Only" with rights to:

   |                         |                                                 |
   |-------------------------|-------------------------------------------------|
   | **Transactions**        | Download Transactions with Masked Payment Data  |
   | **Customer management** | Download Vault Records with Masked Payment Data |
   | **Recurring billing**   | Download Subscription Records                   |
   | **Recurring billing**   | View Subscription Plans                         |

   Click **Save** when you're done.

4. Still in Braintree, go to **Settings > Manage users**, then click **Add single user**.
5. Create a new user with API access, the "ProfitWell Read Only" role you just created, and access to your merchant account. Click **Save** when you're done.
6. Log out of Braintree, then log in again using the account you just created.
7. Go to **Settings > API**, then click **Generate new API key**.
8. Email [sellers@paddle.com](mailto:sellers@paddle.com?subject=RETAIN%20Payment%20recovery) with the public key, private key, and merchant ID for the API you just created. We'll take care of the rest.

{% /tab-item %}
{% tab-item title="Chargebee" %}

1. [Set up Paddle Retain](#initial-setup), if you haven't already.
2. As part of the setup process, choose **Connect to Chargebee**. Alternatively, go to [**ProfitWell > Settings > Integrations**](https://www2.profitwell.com/app/account/integrations) and click **Chargebee**.
3. Click **Settings** to open the settings screen, then paste your Chargebee site name. This is the first part of your Chargebee URL. For example, if you log in to Chargebee at `yourproduct.chargebee.com` then `yourproduct` is your site name.
4. Open Chargebee in a new tab, go to **Settings > Configure Chargebee > API Keys and Webhooks**, then click on the **API keys** tab. Create a new read only API key with all access, then copy your key.
5. Hop back over to ProfitWell, then paste your read only API key into your Chargebee settings screen.
6. Click **Save** and you're done!
7. Wait for your data to ingest. This may take a few hours.

{% /tab-item %}
{% tab-item title="Chargify (Maxio)" %}

1. [Set up Paddle Retain](#initial-setup), if you haven't already.
2. As part of the setup process, choose **Connect to Chargify**. Alternatively, go to [**ProfitWell > Settings > Integrations**](https://www2.profitwell.com/app/account/integrations) and click **Chargify**.
3. Click **Settings** to open the settings screen, then paste your Chargify site name. This is the first part of your Chargify URL. For example, if you log in to Chargify at `yourproduct.chargify.com` then `yourproduct` is your site name.
4. Open Chargify in a new tab, go to **Config > Integrations > API Keys**. Create a new API key and copy it.
5. Hop back over to ProfitWell, then paste your API key into your Chargify settings screen.
6. Click **Save** and you're done!
7. Wait for your data to ingest. This may take a few hours.

{% /tab-item %}

{% tab-item title="Recharge" %}

1. [Set up Paddle Retain](#initial-setup), if you haven't already.
2. As part of the setup process, choose **Connect to ReCharge**. Alternatively, go to [**ProfitWell > Settings > Integrations**](https://www2.profitwell.com/app/account/integrations) and click **ReCharge**.
3. Open ReCharge in a new tab, go to **Apps > API tokens**. Create a new API key with write access for all the options, then copy it.
4. Hop back over to ProfitWell, click **Settings** on the ReCharge screen, then paste your API key.
5. Click **Save** and you're done!
6. Wait for your data to ingest. This may take a few hours.

{% /tab-item %}
{% tab-item title="Recurly" %}

1. [Set up Paddle Retain](#initial-setup), if you haven't already.
2. As part of the setup process, choose **Connect to Recurly**. Alternatively, go to [**ProfitWell > Settings > Integrations**](https://www2.profitwell.com/app/account/integrations) and click **Recurly**.
3. Click **Settings** to open the settings screen, then paste your Recurly site name. This is the first part of your Recurly URL. For example, if you log in to Recurly at `yourproduct.recurly.com` then `yourproduct` is your site name.
4. Open Recurly in a new tab, go to **Developers > API Credentials**. Click the **Add private API key** button, then create an API key with full access and copy it.
5. Hop back over to ProfitWell, then paste your API key into your Recurly settings screen.
6. Click **Save** and you're done!
7. Wait for your data to ingest. This may take a few hours.

{% /tab-item %}
{% tab-item title="Stripe Billing" %}

1. [Set up Paddle Retain](#initial-setup), if you haven't already.
2. As part of the setup process, choose **Connect to Stripe**. Alternatively, go to [**ProfitWell > Settings > Integrations**](https://www2.profitwell.com/app/account/integrations) and click **Stripe**.
3. Click **Settings**, then click **Allow access**.
4. Follow the instructions to log in to your Stripe account and authorize ProfitWell to read your data. You must be an admin user in Stripe to do this.
5. That's it! Wait for your data to ingest. This may take a few hours.

{% /tab-item %}
{% tab-item title="Zuora" %}

1. [Set up Paddle Retain](#initial-setup), if you haven't already.
2. Open Zuora, go to **Administration > Manage user roles**, then click **Add new role**
3. Create a new role called "API user" with API write access only. Leave the UI access box unchecked. Click **Save** when you're done.
4. Still in Zuora, go to **Administration > Manage users**, then click **Add single user**.
5. Create a new user with a work email and login name of `product+company_name@profitwell.com`, where `company_name` is your company name with spaces or symbols replaced with an underscore. Set the role to the new API user role you just created, then click **Save** when you're done.
6. Email [sellers@paddle.com](mailto:sellers@paddle.com?subject=RETAIN%20Payment%20recovery) with your API user account name in Zuora. We'll take care of the rest.

{% /tab-item %}
{% /tabs %}

<!-- vale on -->

## Complete setup steps

### Go to Retain

{% instruction-steps %}
You can access the setup flow for Retain in the Paddle dashboard.

1. Go to **Paddle > Retain**.
2. Click {% mock-button %}Get started
{% /instruction-steps %}

{% /dashboard-instructions %}

### Set up emails

{% instruction-steps %}
Emails sent from Paddle Retain are designed to look like they come from you or someone on your team.

1. Enter the name of the sender and the email to send from.
2. Enter a name and title for the signature.
3. Click {% mock-button %}Continue
{% /instruction-steps %}

{% /dashboard-instructions %}

### Verify your Retain emails

{% instruction-steps %}
Retain uses Postmark to securely send emails to customers on your behalf. Verify your email sender by following the link provided in the email.

1. Open your inbox and look for the email from Postmark.
2. Click {% mock-button %}Confirm Sender Signature in the email to verify.

{% /instruction-steps %}

{% /dashboard-instructions %}

{% callout type="info" %}
If you have issues with verification, you can **Resend** the email or **Use a different email address**.
{% /callout %}

### Install JavaScript snippets

{% instruction-steps %}
The Retain snippets power in-app payment recovery notifications and engagement tracking.

1. Follow the instructions to [install Paddle.js](https://developer.paddle.com/paddlejs/include-paddlejs#manual-initialize-paddlejs-retain.md).
2. Not technical? Email the instructions to your engineering team under **Need help from your engineering team?**
3. Under **Check Paddle.js installation**, enter the URL of the page where you installed Paddle.js and click {% mock-button %}Check
4. You're done. Click Continue to Retain to see all settings.
{% /instruction-steps %}

{% /dashboard-instructions %}

{% callout type="info" %}
If you have issues when checking, make sure the page is publicly accessible and doesn't have any form of redirect. We recommend a homepage or landing page to start.
{% /callout %}

### Configure optional settings

{% instruction-steps %}

1. Make sure emails from Retain reach customers by clicking {% mock-button %}Verify on **DKIM and Return-Path DNS records** to set up email authentication methods.
2. Upload a logo for emails and notifications by clicking Edit on **Custom logo upload**.
3. Turn on localized outreach messages for multiple regions by toggling on **Localized outreach**.
{% /instruction-steps %}

{% /dashboard-instructions %}

## Configure Paddle Retain interventions

Now you've finished setup, configure and turn on:

{% card-group cols=3 %}

{% card title="Payment Recovery" url="/build/retain/configure-payment-recovery-dunning" %}
Fully automated dunning, powered by algorithms that use billions of datapoints to reduce churn.
{% /card %}

{% card title="Cancellation Flows" url="/build/retain/configure-cancellation-flows-surveys" %}
Personalized offboarding workflows designed to deflect cancellations and gather valuable product insights.
{% /card %}

{% card title="Term Optimization" url="/build/retain/configure-term-optimization-automatic-upgrades" %}
Seamless one-click upgrades for customers identified as ready to move to a longer-term plan.
{% /card %}

{% /card-group %}