50% OFF 50% off everything - plugins & add-ons. Limited-time offer. Ends in 0d 0h 0m 0s Shop now

Overview

Recover lost sales automatically, for free.

Recovero - Cart Recovery for WooCommerce captures every cart in real time, including guests, and sends automated recovery emails that bring shoppers back to finish their order. It is a free plugin on WordPress.org, with nothing limited or locked.

It works the moment it is activated. A three step email series and five ready to use templates are installed for you, so there is nothing to configure before your first cart is saved.

What's new in 1.3.0 (October 17, 2026)

  • One click unsubscribe. Every recovery email carries List-Unsubscribe headers, as Gmail and Yahoo require, and the unsubscribe link opens a confirmation page so mail scanners cannot unsubscribe anyone.
  • A do not email list. Opt outs are kept as a one way hash of the address, so they survive the data retention sweep and the privacy eraser, and you can add or remove addresses under Settings, Privacy.
  • Emails in the shopper's language. Add a translation to any template, and shoppers whose cart was saved in that language receive it with its own subject, while campaigns can be limited to chosen languages.
  • Product and category exclusions. Choose products and categories under Settings, Capture, and carts that hold them are skipped.
  • Safer sending. Overlapping queue runs can no longer send the same email twice, emptied carts are no longer chased, and pausing a campaign holds its queued emails until it is active again.
  • A smarter recovery link. It now adds the saved items to the shopper's current cart with their add on and bundle details and their own coupons, never refills a cart that was already bought, and stops restoring a cart 30 days after its last activity unless you change that.
  • Settings that now work. "Stop sending once a cart is recovered" and "Track recovery link clicks" now do what they say, and settings that did nothing were removed.
  • Revenue per currency. Reports show revenue and abandoned value one line per currency instead of adding different currencies together.

Works the moment you activate it

Activation creates the tables, installs five mobile friendly starter templates and a default recovery series, then starts capturing carts straight away. The series sends a friendly reminder one hour after a cart is abandoned, a follow up at 12 hours and a "still interested" email at 48 hours. Every step can be edited, removed or extended.

Captures every cart, including guests

  • Real time capture. Carts are saved as shoppers add items, for guests and logged in customers alike.
  • Live email capture. A guest's email is captured the moment it is typed at checkout, before the order is placed, on both the classic and the block based checkout. The capture script loads on the checkout only, and the block checkout is also captured on the server.
  • You decide what counts as abandoned. Set how many minutes of inactivity mark a cart as abandoned (30 by default) and a minimum cart total worth capturing.
  • Exclusions. Skip carts from chosen user roles, specific email addresses or whole domains such as @yourstore.com, and carts that hold excluded products or categories, so staff and test carts never receive recovery emails. Queued emails to an excluded address are cancelled.
  • Emptied carts are left alone. When a shopper empties their cart, the saved copy is emptied and its pending reminders are cancelled.
  • One cart per shopper. Carts with the same email from another browser or device are merged into the newest one, and signing in keeps the guest cart.
  • Shopper location. The country is recorded from the geolocation database WooCommerce keeps on your server and shown in a Location column.

Unlimited campaigns and email steps

  • Every step your way. Give each step its own delay in minutes, hours or days, its own template and its own subject line.
  • Target by cart value and language. Set a minimum and maximum cart value per campaign, the shopper languages it covers, and a priority, so high value carts get their own treatment.
  • Stops when the shopper buys. By default a sequence stops once the cart is recovered, and a cart only counts as purchased once its order is paid.
  • Safe to edit while live. Adding a step to a running campaign also reaches carts that are already recovering, and changing a delay moves the emails already queued. Pausing a campaign holds its queued emails until it is active again.

A visual email builder

Build emails from blocks: heading, text, button, image, divider, spacer, cart items and social links, with a live preview beside the block you are editing. Prefer your own markup? Switch to HTML mode at any time.

  • Five starter templates: Friendly reminder, You left something behind, Still interested, Cart saved and Premium dark, plus unlimited templates of your own. The starters make no claims on your behalf, such as reviews, ratings, or shipping and returns promises.
  • Translations: add a translation to any template, and shoppers get the version for the language their cart was saved in, with its own subject
  • Merge tags use double braces: {{customer_first_name}}, {{customer_name}}, {{customer_email}}, {{customer_company}}, {{store_name}}, {{store_url}}, {{cart_items}}, {{cart_total}}, {{cart_subtotal}}, {{cart_item_count}}, {{recovery_url}}, {{recovery_button}}, {{unsubscribe_url}} and {{current_year}}
  • Test sends, so you can check exactly what a shopper receives
  • Your branding: from name, from email, reply to address, logo and footer text

Stock aware cart restore

The recovery link adds the saved items back to the shopper's current cart, with their add on and bundle details and their own coupons, and takes them to checkout, or to the cart if you prefer. Stock is checked at that moment: sold out items are skipped, quantities are reduced to what is available, and the shopper is told what changed, so they are never sent back to a broken checkout. A cart that was already bought is not refilled, and links stop restoring a cart 30 days after its last activity (set 0 under Settings, General to keep them working).

Reliable background sending

All sending runs on WooCommerce Action Scheduler in claimed batches rather than on page loads, with retries for failed sends and a warning if the queue stalls. Each email is claimed before it is sent and the claim is checked again right before sending, so overlapping runs cannot send it twice. Emails go through wp_mail, so they use whatever mail configuration your site already has, including any SMTP plugin.

Dashboard and reports

  • Live dashboard with real time counters and a sending health panel
  • Reports on recovery rate, recovered revenue, open and click rates and an engagement funnel, across 7, 30 or 90 days
  • Revenue per currency, so amounts in different currencies are never added together
  • Per campaign performance and your most abandoned and most recovered products
  • Abandoned cart list with status filters, a captured date range, search, sortable columns, bulk actions and CSV export of the filtered list
  • A detailed cart view with the items, contact details, linked order, the reason an email was not sent and a full activity timeline

Privacy tools

  • An optional consent checkbox at checkout, switched on for new stores in the EU, the EEA, the UK and Switzerland. Unticking it withdraws consent given earlier.
  • One click unsubscribe headers and an unsubscribe link that cannot be switched off, covering the shopper's whole email address
  • A do not email list kept as a one way hash, so an opt out is never lost
  • Data retention and anonymisation after the number of days you choose (60 by default), including carts that became orders, whose totals are kept
  • Integration with the WordPress personal data export and erase tools, with the emails sent and the activity log included in the export
  • IP addresses stored as a keyed hash unless you choose to keep them
  • No external services: all cart data, email content and statistics stay in your own WordPress database

Works with what you already run

  • High Performance Order Storage
  • The block based cart and checkout
  • WPML and Polylang, so each shopper gets the template translation for their own language
  • Full page caching, because no session or cookie is forced on an anonymous visitor
  • Settings import and export, so a tuned configuration moves between stores

For developers

Actions include ppl_acrw_loaded, ppl_acrw_cart_captured, ppl_acrw_cart_abandoned, ppl_acrw_cart_emptied, ppl_acrw_sequence_scheduled, ppl_acrw_cart_recovered and ppl_acrw_unsubscribed. Filters include ppl_acrw_default_settings, ppl_acrw_starter_templates, ppl_acrw_merge_tags, ppl_acrw_should_send, ppl_acrw_queue_batch_size, ppl_acrw_recovery_url, ppl_acrw_unsubscribe_url, ppl_acrw_rendered_email and ppl_acrw_email_excluded. The full reference is on the built in Documentation screen.

FAQ

Is anything in this plugin limited or locked?
No. Everything included is fully functional with no caps, trials or licence checks. Pro is a separate plugin that adds further features; it does not unlock anything in this one.

Will it slow my store down?
No. Nothing runs on requests that do not need it, no session or cookie is forced on an anonymous visitor, and all sending happens in the background.

What happens to my data if I move to Pro?
Nothing is lost. Both editions use the same tables and settings, so every cart, campaign, template and setting carries straight over. While Pro is active this plugin stays idle and shows a notice so you can deactivate it yourself, and recovery emails are never sent twice.

Recovero Pro

Recovero Pro is a separate, paid plugin that adds:

  • Recovery coupons locked to the shopper's email and set per step (amount, expiry, minimum spend, product limits), with a coupon block in the email builder, two extra discount templates and a five step default series
  • SMS and WhatsApp steps through your own Twilio account, only for shoppers who opt in at checkout
  • Audience rules: products or categories in the cart, new or returning customers, earlier paid orders, role or guest, and country
  • An exit intent popup with device and operating system targeting, frequency capping and an optional discount
  • Session replay of what happened on the storefront before a cart was abandoned, with every input masked and payment fields never recorded
  • Email throttling per queue run, per hour and per cart, and a daily send window
  • Outgoing webhooks for Zapier, Make and CRMs, with optional HMAC signing, background retries, a delivery log and a test button

Requirements

  • WordPress 6.2 or newer, tested up to 7.1
  • WooCommerce 8.0 or newer, tested up to 11.2.1
  • PHP 7.4 or newer

Changelog

Every release, newest first, with the date it came out.

Version 1.3.0 (October 17, 2026)

  • New: template translations. Add a translation to any template; shoppers whose cart was saved in that language receive it, with its own subject. Campaigns can be limited to chosen languages.
  • New: one click unsubscribe. Every recovery email has List-Unsubscribe and List-Unsubscribe-Post headers, as Gmail and Yahoo require. The unsubscribe link opens a confirmation page instead of acting on its own, so mail scanners cannot unsubscribe anyone, and it can no longer be switched off.
  • New: a do not email list. Opt outs are kept as a one way hash of the address, so they survive the data retention sweep and the privacy eraser. Add or remove addresses under Settings, Privacy.
  • New: product and category exclusions on Settings, Capture.
  • New: recovery links stop restoring a cart 30 days after its last activity (Settings, General). Set 0 to keep them working.
  • Fix: two queue runs that overlapped could send the same email twice.
  • Fix: a shopper who emptied their cart was still sent the whole reminder series. The saved copy is now emptied and its reminders cancelled.
  • Fix: pausing a campaign or setting it to draft now stops the emails it had already queued; they are held and sent when the campaign is active again. Deleting a campaign ends them.
  • Fix: subject lines showed HTML entities, for example D'Angelo or & in a store name.
  • Fix: reports added amounts in different currencies together. Revenue and abandoned value are now shown per currency, and cart value conditions compare in the store currency.
  • Fix: "Stop sending once a cart is recovered" (global and per campaign) and "Track recovery link clicks" did nothing. Both now work.
  • Fix: the starter templates contained an invented "Verified customer" review, ratings, "thousands of shoppers", and free shipping and 30 day returns promises. They now make no claim on the store's behalf; untouched starters are updated automatically.
  • Fix: a recovery link replaced the shopper's newer cart, dropped add on and bundle data, did not re-apply the shopper's own coupons, and refilled the cart of someone who had already bought. All four are fixed.
  • Fix: an inactive or deleted template was still sent, or silently swapped for another one. The step is now skipped with the reason on the cart screen, and a template a step uses cannot be deleted.
  • Fix: after 30 wrong links from one address, valid recovery links stopped working for every shopper behind that address.
  • Fix: the capture script loaded on every page and could take an email typed into a newsletter or contact form. It now loads on the checkout only, and the block checkout is also captured on the server through the Store API.
  • Fix: unticking the consent box at checkout now withdraws consent given earlier.
  • Fix: test emails reported "sent" when sending failed, and Send now reported "no pending email" when the email was cancelled. Both now say what happened and why.
  • Fix: the View order link on the carts list now opens the right screen with High Performance Order Storage.
  • Fix: deactivating left the batch job scheduled.
  • Improved: carts that became an order are now anonymized after the retention period too (totals are kept), the privacy export includes the emails sent and the activity log, and the suggested privacy policy text covers tracking and location.
  • Improved: new stores in the EU, the EEA, the UK and Switzerland start with Require marketing consent switched on.
  • Improved: only one campaign can be the default, and the default campaign setting follows the campaign editor.
  • Improved: settings that did nothing were removed, including the switch that could hide the unsubscribe link.
  • Improved: bulk Mark as abandoned says when some carts were skipped, and the cart screen shows the reason an email was not sent.
  • Improved: the product name in notices, the privacy tools and the docs is now Recovero.

Version 1.2.1 (October 16, 2026)

  • Fix: the "Send next email now" button on a single cart screen no longer fails with "The link you followed has expired."

Version 1.2.0 (October 15, 2026)

  • New: date range filter on the Abandoned Carts screen (Captured from / to). Export CSV now exports exactly the carts the list shows, following the status, search and date range you picked.
  • Improvement: unsubscribing now applies to the shopper's email address, so no cart from the same address is emailed again, not only the cart whose link was clicked.
  • Improvement: Require marketing consent now works end to end. A consent box (with your consent text) is added to the classic and block checkout, no contact details are captured until it is ticked, and recovery emails are only sent to carts that recorded consent. It stays off unless you switch it on.
  • Improvement: the personal data export now includes every stored field (email, name, company, phone, browser, consent, cart items) and also finds carts saved under the customer's account. Erasing also clears the company, cancels queued reminders and covers account carts.
  • Fix: the data retention sweep now also clears the company, and no longer picks the same already anonymized carts every day, so older carts are reached.
  • Security hardening: request limits on the public capture endpoint and on recovery, unsubscribe and tracking links; country lookup uses the local WooCommerce database only and never an online geolocation service; spreadsheet safe CSV export; settings import accepts only a small JSON file; admin screens no longer print inline scripts or click handlers.
  • Uninstall (when you chose to delete data) now also removes the plugin's leftover options, temporary values, scheduled jobs and per user notice state.
  • Change: when the Pro edition is active this plugin stays idle and shows a notice on the Plugins screen so you can deactivate it yourself.
  • Tested with WordPress 7.1.3 and WooCommerce 11.2.1.
Show earlier versions (1.0.0 to 1.1.1)

Version 1.1.1 (October 1, 2026)

  • Fix: a cart is now marked purchased only when its order is paid (or put on hold for a bank transfer or cheque). Before, it was marked the moment the order was created, so an order left at Pending payment showed as a purchase and the shopper was never sent a recovery email.
  • Fix: an order that fails, is cancelled or refunded now reopens its cart, also for purchased carts, not only recovered ones.
  • Fix: one shopper no longer ends up with several carts. Carts with the same email from another browser or device are merged into the newest one, signing in keeps the guest cart, and a recovery link opened on another device continues the original cart.
  • Fix: when a shopper pays, every other open cart with the same email or account is closed, so no reminders go out about a cart from another browser.
  • Fix: reminders are paused for an hour while an order waits for payment, and are never sent once the shopper has paid for an order.
  • New: Merged filter on the Carts screen. Merged duplicates are kept for reference and left out of All and the abandoned totals.
  • New: the cart screen shows the order with its current status, and says when it is still waiting for payment.
  • After updating, existing carts are put straight in the background: carts marked purchased whose order was never paid are reopened (without sending emails), duplicates are merged, and open carts of shoppers who have since paid are closed.

Version 1.1.0 (September 22, 2026)

  • New: Choose user roles to exclude from cart tracking, under Settings, Capture, Exclusions.
  • New: Exclude email addresses and whole domains from tracking. Matching carts are not captured, and queued recovery emails to an excluded address are cancelled.
  • Links moved to propluginslab.io.
  • Added Pro upgrade banner on plugin screens. It shows only on the Cart Recovery screens and can be dismissed for 30 days.
  • Tested with WordPress 7.1.1 and WooCommerce 11.1.1.

Version 1.0.2 (August 21, 2026)

  • Improvement: The minimum PHP version is now 7.4, so the plugin installs on more hosts. Every file has been checked for compatibility across 7.4 and later.
  • Improvement: Tested with WordPress 7.1 and WooCommerce 11.0.1.
  • Fix: The Documentation screen no longer lists a Webhooks section, which is not part of this edition.
  • Fix: Cart CSV export now sets its escaping explicitly, so a field containing a backslash exports the same way on every supported PHP version.
  • Fix: The currency symbol shown in the admin now decodes the same way on PHP 8.1 and later, where the default changed.

Version 1.0.1 (August 17, 2026)

  • New: Optional IP address storage for captured carts. It is off by default and can be switched on under Settings, Privacy.
  • New: The shopper country is recorded automatically and shown in a Location column on the Abandoned Carts screen, and on each individual cart.
  • Improvement: Adding a step to a campaign that is already running now schedules that step for carts still working through the sequence, timed from when each cart was abandoned.
  • Fix: Email open tracking no longer counts an image prefetch by a mail provider as an open.

Version 1.0.0 (August 12, 2026)

  • Initial release.

Details

At a glance

Last updated
October 19, 2026
Type
Free plugin

Support

Questions go straight to the developers who wrote the code.