
Most shoppers who fill a cart never reach the “thank you” page. This plugin records those carts, waits a configurable amount of time, and then emails the shopper a single link that puts every product straight back into their cart.
How it works
- A shopper adds products to the cart. Logged-in customers are recorded immediately; guests are recorded as soon as they type an email address at checkout (classic checkout and Checkout Blocks are both supported).
- After the configured period of inactivity (60 minutes by default) a background scan marks the cart as abandoned.
- A reminder email goes out after the delay you choose, carrying a personal recovery link.
- Clicking the link restores the cart and pre-fills the checkout with the address already known. The cart becomes recovered automatically once an order is placed by that customer.
Features
- Cart capture for logged-in customers and for guests who entered an email at checkout
- Configurable inactivity window before a cart counts as abandoned
- A reminder email with a fully editable subject and body
- Placeholders:
{customer_name},{cart_items},{recovery_link},{store_name} - One-time recovery links with a configurable lifetime (7 days by default) — only a SHA-256 hash of the token is ever stored
- Cart statuses: active abandoned recovered / lost, with automatic recovery detection when an order arrives
- Admin cart list with a status filter, email search and four statistic tiles: carts abandoned, carts recovered, revenue recovered and recovery rate
- Anti-spam guard: the same address is not emailed more often than once every N days
- Automatic data retention cleanup and integration with the WordPress personal data exporter and eraser
- HPOS (custom order tables) compatible, works with the block-based checkout
Everything runs on your own server. Reminders are sent through your site’s own wp_mail(), and the captured carts are stored in your own database — the plugin does not contact any external service.
Requirements
- WooCommerce 7.0 or newer
- PHP 7.4+
- Working WP-Cron (or a real system cron calling
wp-cron.php)
The plugin interface is fully translated into Ukrainian. / Інтерфейс плагіна повністю перекладено українською.
External services
This plugin does not connect to any external service. It makes no outbound HTTP requests of any kind: cart capture, the abandonment scan, the reminder email (sent through your site’s own wp_mail()) and the recovery link all run entirely on your own server, and no data ever leaves your site.
Privacy
This plugin stores personal data of shoppers who did not complete an order, because a reminder cannot be sent without it.
What is stored: the email address, the customer name (when known), the WordPress user id for logged-in customers, a snapshot of the cart contents (product name, quantity, price), the cart total and currency, the cart status, and how many reminders were sent and when. Recovery tokens are stored only as a SHA-256 hash, never in plain text.
When it is stored: for logged-in customers, as soon as they have items in the cart; for guests, only once they have typed an email address at checkout. Anonymous browsing is never recorded.
Where it is stored: in the {prefix}catcode_abandoned_carts table in your own WordPress database. Nothing is sent to CatCode or to any other third party — the plugin makes no outbound requests at all.
How long it is kept: rows are deleted automatically by a daily job once they are older than the retention period set on the settings page (90 days by default; set it to 0 to keep the data indefinitely, which is not recommended). Uninstalling the plugin drops the table entirely.
Data subject requests: the plugin registers a WordPress personal data exporter and eraser, so a shopper’s carts are included in the standard Tools Export Personal Data and Tools Erase Personal Data flows, keyed by email address. The plugin also contributes suggested wording to the site privacy policy screen (Settings Privacy Policy guide).