> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Abandoned Cart Recovery

> Automatically detect incomplete or failed checkouts and send targeted email sequences to bring customers back to complete their purchase.

<Info>
  Abandoned Cart Recovery (ACR) detects incomplete or failed checkouts and sends automated email sequences to bring customers back. Combine with optional discount incentives to maximize recovery rates.
</Info>

## What Is Abandoned Cart Recovery?

ACR automatically identifies customers who started but didn't complete a checkout — whether the payment failed or they left before paying — and sends a sequence of recovery emails to bring them back.

* **Failed payments**: Customer attempted payment but it was declined or errored
* **Incomplete checkouts**: Customer visited checkout but never attempted payment

## How ACR Works

<Steps>
  <Step title="Detection">
    We scan for payments that are 60+ minutes old and haven't succeeded. This includes failed payments and checkouts where the customer never attempted payment.
  </Step>

  <Step title="Classification">
    Each abandoned checkout is classified by reason:

    * **Payment Failed**: The customer attempted payment but it failed
    * **Checkout Incomplete**: The customer visited checkout but never attempted payment
  </Step>

  <Step title="Email Sequence">
    Based on the classification, the system sends up to 3 recovery emails at configured intervals. Each email contains a unique recovery link.
  </Step>

  <Step title="Recovery">
    When the customer clicks the recovery link, they are taken to a recovery page showing their original cart. They can complete payment with a fresh checkout session.
  </Step>
</Steps>

## Status Lifecycle

Each abandoned checkout progresses through these states:

| Status       | Description                                                               |
| ------------ | ------------------------------------------------------------------------- |
| `abandoned`  | Checkout detected as abandoned, no emails sent yet                        |
| `recovering` | At least one recovery email has been sent                                 |
| `recovered`  | Customer completed payment via the recovery link                          |
| `exhausted`  | All emails sent with no recovery, or a newer checkout superseded this one |
| `opted_out`  | Customer unsubscribed from recovery emails                                |

## Configuring ACR

Enable and configure ACR from **Settings** in your dashboard.

<Frame caption="Abandoned Cart Recovery settings in the dashboard">
  <img src="https://mintcdn.com/dodopayments/tvJ2MmXYymW0IZ3R/images/recovery/acr-settings.png?fit=max&auto=format&n=tvJ2MmXYymW0IZ3R&q=85&s=564184c25e7ec3e98f1ec07264ebba5d" alt="ACR settings page showing enable toggle, discount configuration, and email sequence editor" style={{ maxHeight: '500px', width: 'auto' }} width="2838" height="1386" data-path="images/recovery/acr-settings.png" />
</Frame>

### Global Settings

| Setting                 | Description                                                                | Default |
| ----------------------- | -------------------------------------------------------------------------- | ------- |
| **Enabled**             | Master toggle for ACR                                                      | Off     |
| **Discount Enabled**    | Auto-generate a discount code for recovery emails                          | Off     |
| **Discount Percentage** | Percentage discount that will be applied to the checkout for this customer | 0       |
| **Discount Valid Days** | How many days the auto-generated discount code remains valid               | 5       |

### Email Sequences

ACR supports two email sequences — **Payment Failed** and **Checkout Incomplete** — each with up to 3 configurable emails.

<Frame caption="ACR email sequence configuration">
  <img src="https://mintcdn.com/dodopayments/tvJ2MmXYymW0IZ3R/images/recovery/acr-email-config.png?fit=max&auto=format&n=tvJ2MmXYymW0IZ3R&q=85&s=3f2bd0fbdf6b2b6bfe898c17bf2693a4" alt="Email sequence editor showing subject, body, timing, and enable toggle for each email in the sequence" style={{ maxHeight: '500px', width: 'auto' }} width="1138" height="1670" data-path="images/recovery/acr-email-config.png" />
</Frame>

| Setting      | Description                                              |
| ------------ | -------------------------------------------------------- |
| **Enabled**  | Toggle individual emails on or off without deleting them |
| **Delay**    | How long after abandonment detection to send this email  |
| **Subject**  | Email subject line with variable placeholders            |
| **Body**     | HTML email body with variable placeholders               |
| **Reply-To** | Email address for customer replies                       |

**Default email timing:**

| Email # | Default Delay |
| ------- | ------------- |
| 1       | 1 hour        |
| 2       | 24 hours      |
| 3       | 72 hours      |

### Example Recovery Emails

ACR sends different emails depending on the abandonment reason. Below are examples of each type as seen by the customer.

<Tabs>
  <Tab title="Payment Failed">
    <Frame caption="Recovery email sent when a payment attempt fails">
      <img src="https://mintcdn.com/dodopayments/tvJ2MmXYymW0IZ3R/images/recovery/acr-failed-email.png?fit=max&auto=format&n=tvJ2MmXYymW0IZ3R&q=85&s=a8da91be6212c9fdd2b373572e3c1912" alt="Recovery email for a failed payment showing store name, message about payment failure, order summary with product details, discount, and a Resume Checkout button" style={{ maxHeight: '500px', width: 'auto' }} width="1070" height="1502" data-path="images/recovery/acr-failed-email.png" />
    </Frame>
  </Tab>

  <Tab title="Checkout Incomplete">
    <Frame caption="Recovery email sent when a customer leaves without attempting payment">
      <img src="https://mintcdn.com/dodopayments/tvJ2MmXYymW0IZ3R/images/recovery/acr-abandoned-email.png?fit=max&auto=format&n=tvJ2MmXYymW0IZ3R&q=85&s=05adcd350e1ceefa7854c86a37c862b9" alt="Recovery email for an incomplete checkout showing store name, message about saved cart, order summary with product details, discount, and a Resume Checkout button" style={{ maxHeight: '500px', width: 'auto' }} width="1070" height="1502" data-path="images/recovery/acr-abandoned-email.png" />
    </Frame>
  </Tab>
</Tabs>

## Recovery Discounts

When discount is enabled, ACR automatically generates a unique, single-use discount code for each abandoned checkout. The discount:

* Is restricted to the product(s) from the original checkout
* Has a configurable expiration period
* Is limited to one redemption
* Is hidden from your dashboard discount list (internal use only)

<Tip>
  Start with a modest discount (5-10%) to test conversion impact before increasing. Even a small incentive can significantly improve recovery rates.
</Tip>

## Customer Recovery Experience

When a customer clicks the recovery link in an email, they're taken back to
their original checkout session. The page displays the product they left
behind, along with a discount code if one has been configured.

## Analytics

Track the performance of ACR from the **Analytics** section of your dashboard.

<Frame caption="Recovery analytics dashboard showing ACR and dunning metrics">
  <img src="https://mintcdn.com/dodopayments/B3-0kuKcZDP1TiJD/images/recovery/recovery-analytics.png?fit=max&auto=format&n=B3-0kuKcZDP1TiJD&q=85&s=d3bf0c7474818bc4584b75654423e14c" alt="Recovery analytics dashboard showing abandoned checkout counts, recovery rates, recovered revenue, average time to recover, and breakdowns by product and email" style={{ maxHeight: '500px', width: 'auto' }} width="2548" height="2190" data-path="images/recovery/recovery-analytics.png" />
</Frame>

| Metric                  | Description                                                 |
| ----------------------- | ----------------------------------------------------------- |
| **Abandoned Checkouts** | Total number of detected abandoned checkouts                |
| **Recovery Rate**       | Percentage of abandoned checkouts that were recovered       |
| **Recovered Revenue**   | Total revenue recovered through ACR                         |
| **Avg. Recovery Time**  | Average time from abandonment to recovery                   |
| **Recovery by Email**   | Breakdown of which email in the sequence drove the recovery |
| **Recovery by Product** | Which products have the highest recovery rates              |

## Webhook Events

| Event                          | Description                                                    |
| ------------------------------ | -------------------------------------------------------------- |
| `abandoned_checkout.detected`  | An abandoned checkout has been detected and recovery has begun |
| `abandoned_checkout.recovered` | A customer completed payment through the recovery flow         |

<Card title="Recovery Webhook Payloads" icon="code" href="/developer-resources/webhooks/intents/recovery">
  View the full webhook payload schemas for ACR events.
</Card>

## Edge Cases

| Scenario                                       | Behavior                                                                       |
| ---------------------------------------------- | ------------------------------------------------------------------------------ |
| Customer completes purchase before next email  | Recovery is detected at send time; checkout is marked as recovered if eligible |
| Customer starts a new checkout                 | Old abandoned checkout is marked as `exhausted`                                |
| Customer clicks "Pay" after already recovering | Recovery page shows a confirmation that payment was already completed          |
| Customer unsubscribes                          | Abandoned Checkout is marked as `opted_out`; no further emails are sent        |

## Best Practices

* **Start with defaults**: The default email timing and subjects are optimized for common recovery patterns. Customize after you have baseline data.
* **Personalize emails**: Use template variables to make emails feel personal and relevant to the customer.
* **Monitor analytics**: Track recovery rates by email to identify which messages drive the most conversions. Disable underperforming emails.
* **Use discounts strategically**: Start small (5-10%) to protect margins while testing conversion impact.
* **Keep emails concise**: Recovery emails should be short and action-oriented. A clear call-to-action drives better results than lengthy explanations.

<Info>
  ACR is designed to work automatically once enabled. Start with the default settings, monitor your analytics, and iterate based on performance data.
</Info>

## Related

<CardGroup cols={2}>
  <Card title="Recovery Webhooks" icon="webhook" href="/developer-resources/webhooks/intents/recovery">
    React to `abandoned_checkout.detected` and `abandoned_checkout.recovered` events.
  </Card>

  <Card title="Subscription Dunning" icon="rotate" href="/features/recovery/subscription-dunning">
    Recover lapsed subscriptions with automated dunning emails.
  </Card>

  <Card title="Customer Portal" icon="id-card" href="/features/customer-portal">
    Customers complete recovery actions through the customer portal.
  </Card>

  <Card title="Discounts" icon="percent" href="/features/discount-codes">
    ACR can auto-generate discount codes to incentivize recovery.
  </Card>
</CardGroup>
