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

# Abandoned Cart Recovery

> Send WhatsApp reminders to customers who started checkout but didn't finish paying.

## What is this?

**Abandoned cart recovery** sends up to three WhatsApp reminders to customers who started to buy but didn't finish. Each reminder can include a link to come back and complete the order.

Just before each reminder is sent, the platform checks with your store whether the order was already paid. If it was, that reminder is skipped, so a customer who has paid never gets nagged.

It works with [Shopify](/workspace/integrations/shopify) and [WooCommerce](/workspace/integrations/woocommerce).

\[SCREENSHOT: abandoned-cart-tab — A connected store's Abandoned cart tab with reminder timing and template pickers]

## What can I do here?

* Send up to **3 reminders**, each with its own template and delay
* Wait from **5 minutes to 30 days** between reminders
* Use variables that are filled in for you: customer name, the link to come back, order total, and currency
* Add a button to a reminder (for example *Check offer*) that replies with your offer code
* Turn recovery on or off any time

## How to use it

<Steps>
  <Step title="Open the store">
    Go to **Integrations**, open Shopify or WooCommerce, and click your connected store.
  </Step>

  <Step title="Open the Abandoned cart tab">
    Read the short description, then choose your reminders.
  </Step>

  <Step title="Set the first reminder">
    Choose how long to wait (**First reminder after**, in minutes, hours, or days) and pick a **template**. If you have no templates yet, create one first.
  </Step>

  <Step title="Add more reminders">
    Click **Add reminder** and set **Then after** — the wait counted from the previous reminder. You can add up to three in total, and remove one with **Remove reminder**.
  </Step>

  <Step title="Reply to buttons (if your template has them)">
    A template with quick-reply buttons needs a reply for each button — for example your offer code — sent when the customer taps it. You can't save until each button has a reply.
  </Step>

  <Step title="Turn it on">
    Click **Turn on**. You'll see "Abandoned cart recovery is on."
  </Step>
</Steps>

Use **Open reminder flow** to see the flow in the automation builder. To change templates or timing later, edit the flow there.

### Turn it off

Click **Turn off** on the same tab. Reminders that were waiting to be sent are cancelled.

## How it works in each store

|                              | Shopify                                                | WooCommerce                                                                                          |
| ---------------------------- | ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------- |
| **What counts as abandoned** | A checkout still open after your wait                  | An order left at **Pending payment** or **Failed** — the customer pressed Place order but didn't pay |
| **What's needed**            | A phone number and a link to come back on the checkout | The order's pay link                                                                                 |
| **Reminder stops when**      | The order is placed, or the checkout is completed      | The order moves to any other status                                                                  |
| **Requires**                 | A one-click (OAuth) connection                         | Nothing extra                                                                                        |

* **Template variables** are pre-filled as: 1 = customer name, 2 = link to come back, 3 = total, 4 = currency. You can change them in the flow.
* **COD orders** in WooCommerce aren't included — they use [COD Confirmation](/workspace/integrations/cod-confirmation).

## The "Still unpaid?" check

Each reminder in the flow is preceded by a **Still unpaid?** step. It asks your store whether the order was already paid, right before sending:

| Result                     | What happens             |
| -------------------------- | ------------------------ |
| **Still unpaid**           | The reminder is sent     |
| **Already paid or closed** | That reminder is skipped |

If the store can't be reached, the reminder is still sent, so the check is never worse than having none. This step is added for you — you don't need to place it yourself.

## Troubleshooting / Technical Notes

* **Nobody gets reminders.** Check recovery is turned on, the store is **Connected**, and a template is chosen for every reminder. Carts without a phone number can't be reminded.
* **Reminders go out after the customer paid.** The store couldn't confirm the payment in time. Keep the first wait long enough for a normal checkout to finish.
* **WooCommerce orders are cancelled before the reminder.** WooCommerce cancels unpaid orders after its **Hold stock (minutes)** setting (60 by default). Keep your first reminder shorter than that.
* **Shopify isn't sending abandoned-cart messages.** Confirm the store was connected with one-click, and reconnect if you see a notice about permissions.
* **You can't save a reminder.** A template with buttons needs a reply for each button.

## Related docs

* [Shopify](/workspace/integrations/shopify)
* [WooCommerce](/workspace/integrations/woocommerce)
* [COD Confirmation](/workspace/integrations/cod-confirmation)
* [Sequences](/workspace/automation/steps/sequences)
* [Templates](/workspace/whatsapp/templates)
