How it works

From the first product in a cart to a recovered order: what the plugin records, when it acts, and why it never chases a customer who already bought.

FreePro

The cart lifecycle

activeCart has items and an email
abandonedNo activity for 60 min
recovery_sentReminder email sent
recoveredShopper came back through the link
completedOrder placed and paid

Every status

StatusShown asMeaning
activeActiveThe shopper is still shopping, or left only recently.
abandonedAbandonedNo activity for longer than Abandoned After. The cart is waiting for its reminder.
recovery_sentRecovery email sentThe reminder went out.
recoveredRecoveredThe shopper came back through the recovery link: their cart was restored and their browser confirmed the visit (or they placed an order). You can also set it with Mark as recovered.
completedCompleted / Recovered purchaseThe order was placed and reached a paid status, or on-hold for offline payment. If the shopper came through a recovery link, the list shows Recovered purchase and the revenue counts as recovered.
expiredExpiredThe cart was emptied after it was abandoned or emailed, the customer bought in another order, or nothing happened for Expire Idle Carts After days (30 by default) and its recovery link has run out. Its link no longer works.

Allowed changes

A shopper who returns to an abandoned or emailed cart on their own sets it back to Active, and the clock restarts. Completed and Expired are final.

FromCan move to
activeabandoned, recovered, completed, expired
abandonedactive, recovery_sent, recovered, completed, expired
recovery_sentactive, recovered, completed, expired
recoveredcompleted, expired
completed, expired— (final)

When a cart is recorded

A cart is recorded only when it has at least one product and an email address:

On top of that, the guest's consent choice must allow it (never after "No thanks"; only after ticking the box in Checkbox mode), and no exclusion may apply. Nothing is recorded for anonymous visitors who never reach the email field.

How abandonment is detected

Every five minutes a background task looks at active carts whose last activity is older than Abandoned After (60 minutes by default, never less than 15). For each one it checks, in this order:

  1. Has this cart's own order been paid or put on hold? The cart becomes Completed.
  2. Has the same billing email placed a paid or on-hold order since this cart was created? The cart becomes Expired with the note "Customer bought in another order". The customer is never chased.
  3. Otherwise the cart becomes Abandoned.

How the reminder is sent

Right after detection, the sender picks abandoned carts that:

Up to 25 emails go out per run. Before each one, the plugin checks, in this order:

  1. Did the customer buy in another order? The cart is closed without an email.
  2. Is the address unsubscribed? The email is skipped and never retried.
  3. Did the address get a recovery email for another cart within One Email per Address Every hours (24 by default)? The email is skipped. This protects customers and your sender reputation.

Each cart gets at most one email from the Free plugin. With Pro, carts in a campaign get the campaign's sequence instead.

Recovery and revenue

When the shopper opens the link, their cart is rebuilt and they land on the checkout (see Recovery links). The cart is not marked Recovered on the click itself, because email security scanners open links too. It turns Recovered once the page the shopper lands on confirms the visit from their own browser, or when they place an order from the restored cart. You can also mark a cart as recovered yourself, for example when the customer finished the order by phone. When the resulting order is paid, or put on hold for offline payment, the cart is Completed and its order total counts as recovered revenue. If that order is later cancelled, refunded or fails, the revenue is taken off again.

The background schedule

TaskRunsWhat it does
Detect & sendEvery 5 minutesMarks quiet carts abandoned (100 per batch, up to 5 batches), then sends due emails (25 per run). With Pro it also runs campaigns and webhook deliveries.
CleanupDailyExpires open carts with no activity for Expire Idle Carts After days (30 by default) and an expired link. Deletes records older than Delete Cart Records After. Completed carts are anonymized instead, so your revenue totals stay correct.
WP-Cron only runs when someone visits your site. On quiet sites, or when DISABLE_WP_CRON is set, add a real cron job. See Troubleshooting.