WooCommerce Abandoned Cart Plugins Compared

WooCommerce Abandoned Cart Plugins Compared

Every WooCommerce abandoned cart plugin does the same three things: grab an email address the moment someone starts checking out, store a snapshot of the cart, then send a tokenised link that rebuilds that cart later. So the one you pick matters less than whether that first capture actually fires on your checkout, which is where most setups quietly fail. What separates the options is where the data lives, what the free tier will really send, and how the bill grows as your list does.

Below are the criteria I judged each option on, a table of versions, install counts and prices checked on 27 September 2026, the queries that tell you how much revenue is genuinely recoverable before you pay anyone, and the two infrastructure problems — page caching and mail deliverability — that stop recovery working regardless of which plugin you bought. Tested against WooCommerce 11.1.1 on WordPress 7.1.2.

An abandoned cart is not a thing WooCommerce records. Core stores orders; a cart that never became an order leaves nothing behind but a session. So every plugin here has to manufacture the record itself, and they all do it the same way: bind a JavaScript listener to the email field on the checkout page, fire a request the moment that field loses focus with a plausible address in it, and write a row containing the address plus the cart contents.

That is the fragile link. No email captured means no row, no row means no recovery email, and nothing anywhere tells you it failed. Your dashboard just shows fewer abandoned carts than you have, which looks like good news. Three things commonly break it: a page cache serving the checkout page with a stale nonce so the capture request is rejected, a custom or multi-step checkout where the email field is not where the plugin expects it, and the WooCommerce checkout block, which renders its fields differently from the old shortcode checkout.

Test capture before you compare features

Open your store in a private window, add a product, start checkout, type a real address into the email field, click into the next field, then close the tab without ordering. Within a minute the plugin’s dashboard should show that cart. If it does not, no amount of paid features helps you, and the problem is caching or checkout markup rather than the plugin.

The second structural difference is where the data ends up. A self-hosted plugin writes carts to a table in your own database and sends through wp_mail(), which means the data stays with you and the deliverability is your problem. A hosted service loads its own JavaScript, keeps carts on its infrastructure and sends from its own authenticated domain, which means better inbox rates and a monthly bill that scales with your contact list. Neither is the right answer generally. They are different trades, and the table marks which is which.

The five criteria I judged each WooCommerce abandoned cart plugin on

Stated up front so you can reweight them for a store shaped differently from the one I assumed: a US store doing 100 to 1,500 orders a month, average order value between $40 and $120, selling to consumers, no in-house developer, and an email list small enough that per-contact SaaS pricing still looks cheap today.

  1. How many emails the free tier will send, and to how many people. Not whether it has a free tier. A free plan capped at 500 sends a month is a plan that stops working in your second good month, and the cap is the number that decides whether free is a starting point or a demo.
  2. Whether you get a sequence or a single email. One reminder at one hour recovers a fraction of what three staged reminders recover. Several plugins put the first email in the free tier and the second and third behind the paywall, which is the real upgrade trigger in this category.
  3. How the price behaves as you grow. A flat annual licence and a per-contact monthly fee cross over at a predictable list size. Work out where that crossover sits for your store before you pick, because moving platforms later means rebuilding every automation.
  4. Whether coupon generation is per-shopper and expiring. A static discount code in a recovery email ends up on coupon aggregator sites within weeks and then discounts orders that were never at risk. Unique, time-limited codes are the difference between a recovery tool and a margin leak.
  5. Maintenance signals, read strictly. Tested-up-to version, time since the last release, and whether the one-star reviews cluster on anything. This code runs on your checkout page and holds customer email addresses alongside cart contents, so a stale cart plugin is a data-protection risk and not just a broken feature.

WooCommerce abandoned cart plugins compared

Versions, install counts and ratings come from WordPress.org; prices come from each vendor’s own pricing page. All checked on 27 September 2026. On a narrow screen this table stacks into one card per option rather than scrolling sideways.

OptionWhere data livesWhat you get for nothingPaid price (27 Sep 2026)Where it falls short
Cart Abandonment Recovery for WooCommerce (Brainstorm Force)Self-hosted — your database, your wp_mail()v2.1.3, 300,000+ installs, 4.8/5 across 613 reviews, tested to WP 7.1.2, PHP 7.2+, updated a month ago. Email capture at checkout, a staged sequence rather than one email, one-click cart restore links, per-shopper expiring coupon codes, a recovery analytics dashboard, and an optional consent checkbox. No send limit, because the sends are yoursA Pro tier adds product-level reporting, SMS and advanced open tracking. The WordPress.org listing does not state its price, so read it off the vendor’s own page rather than any roundup15 one-star reviews inside that 613, and the free tier’s unlimited sending is only as good as your mail setup — unlimited wp_mail() from an unauthenticated domain means unlimited spam folder. Reporting is thinner than a marketing platform’s
Abandoned Cart Lite for WooCommerce (Tyche Softwares)Self-hostedv6.8.3, 20,000+ installs, 4.1/5 across 85 reviews, tested to WP 7.0.6, PHP 7.3+, updated four weeks ago. Tracks guest and logged-in carts, templates with merge tags, recovered-order reporting, admin notifications, and exclusion rules by IP, email, domain or country — the best filtering in the free tier hereA Pro version is sold on the vendor’s site; the free listing does not state the tier price4.1 average with 11 one-star reviews out of 85 is a genuine spread, not a rounding artefact. Tested only to WordPress 7.0.6, one minor behind. The exclusion rules are its real differentiator and most stores will never need them
AutomateWoo (official WooCommerce extension)Self-hostedNothing — paid only$159/yr, or $254.40 for two years. Site count is not stated on the product page, so confirm it before buying for more than one storeAbandoned cart is one trigger among dozens in a general automation suite. Follow-ups, review requests, win-backs, subscription workflows — genuinely broad, and overkill if cart recovery is all you wantYou are paying suite money for one workflow. SMS works through your own Twilio account, so the per-message cost is extra and separately metered. No free tier at all means no way to test capture on your real checkout before paying
FunnelKit AutomationsSelf-hostedNothing on the paid lineBasic $99.50 first year for 1 site, renewing at $129. Plus $149.50 (2 sites), Professional $199.50 (3 sites), Elite $299.50 (30 sites). Renewals are $129 / $299 / $399 / $599 respectively. 14-day money-back guaranteeAbandoned cart is in the entry tier, and the wider product line also covers the checkout itself, which is the thing actually causing most of your abandonmentThe introductory pricing is the headline and the renewal is the real price — Professional goes from $199.50 to $399, a doubling at year two. SMS does not appear until that Professional tier, two steps up from the cart-recovery entry point
RetainfulHosted serviceFree plan: 500 emails a month, unlimited contact imports, and abandoned cart recovery included — the workflow is not paywalled, the volume isPro from $14/mo for 1,000 contacts, then $4/mo per additional 500 contacts. Monthly send allowance is ten times your contact countContact-based pricing charges you for addresses whether or not you email them, so an imported list inflates the bill permanently. Cart contents and customer emails leave your server, which is a privacy-policy question you have to answer publicly
OmnisendHosted serviceFree plan: 250 contacts and 500 emails a month, with cart abandonment among the pre-built workflowsStandard from $11.20/mo billed monthly for up to 500 contacts. SMS is separate prepaid credits, from around $0.007 per message for high-volume US sends on the Pro tier and aboveA 250-contact ceiling is very low for a store with any order history, so the free plan is an evaluation period rather than a tier. It is an email marketing platform first, so you are buying campaigns and segmentation you may not want

Two things worth saying plainly about that table. The vendor-published recovery percentages you will see quoted around this category — AutomateWoo’s documentation cites a 63% chance of recovering a lost sale — are marketing figures from the companies selling the tools, measured on stores that are not yours. Treat them as a reason to run the arithmetic in the next section, not as a forecast. And the free tiers split cleanly: self-hosted plugins cap features, hosted services cap volume. Which cap you hit first depends entirely on your order count.

Work out what is genuinely recoverable before you pay anyone

Most stores overestimate this badly, because the headline abandonment rate counts everyone who ever added a product and wandered off. Price comparison, browsing on a phone in a queue, someone checking shipping cost out of curiosity — none of that is recoverable by email, and none of it left an email address anyway. The population you can actually reach is narrower: shoppers who got as far as typing an address into checkout and then stopped.

Start with your own order data, because it sets the ceiling. This counts completed orders and average order value by month against the HPOS tables, which have been the default for new installs since WooCommerce 8.2. Substitute your table prefix for wp_.

# Orders and average order value, last twelve months.
wp db query "SELECT DATE_FORMAT(date_created_gmt, '%Y-%m') AS month,
       COUNT(*) AS orders,
       ROUND(AVG(total_amount), 2) AS avg_order_value
  FROM wp_wc_orders
  WHERE status = 'wc-completed'
  GROUP BY month
  ORDER BY month DESC
  LIMIT 12;"

Once a plugin has been running a fortnight, find its own table rather than guessing the name, because every vendor names it differently and the names change between major versions.

# Find the table the plugin created.
wp db query "SHOW TABLES LIKE '%abandon%';"

# Nothing back? Widen it and read the list yourself.
wp db query "SHOW TABLES LIKE '%cart%';"

Then do the arithmetic with your numbers, not a vendor’s. Say the query above gives you 300 completed orders a month at a $70 average, and after two weeks of tracking the plugin has captured 210 abandoned carts a month with an email address attached. At a 10% recovery rate that is 21 orders, about $1,470 a month. Against a $159 annual licence that is an easy yes. Now run the same shape with 30 orders a month, 20 captured carts and a $25 average: two recovered orders, $50, and any paid tier is losing you money while a free plugin is still worth installing.

The arithmetic above is a template, not a benchmark

I picked 10% to show the shape of the calculation. Your rate depends on what you sell, what you charge, and whether the abandonment was about price or about friction. Run a free plugin for one month first and measure your own recovery rate, then decide what a paid tier is worth. Every vendor on this page will happily sell you a licence before you have that number.

There is a more uncomfortable question buried in this. If a large share of your checkouts are abandoned at the payment step rather than the shipping step, the problem is the checkout, not the follow-up. Unexpected shipping cost revealed late, a required account registration, or a payment method your customers do not use will abandon carts faster than any email recovers them. Before buying a recovery tool, it is worth knowing what your gateway choice costs you and which methods you are missing — WooCommerce payment gateway fees explained for US stores has the real per-transaction numbers, and adding a method customers already trust beats emailing them about the one they refused.

Page caching is the most common reason cart capture silently stops

This is the failure I see most and it produces no error anywhere. The capture request from your checkout page carries a nonce. Nonces are tied to a time window and a user session. Serve that checkout page from a full-page cache and every visitor gets the same nonce, generated whenever the page was cached, which means it is either stale or belongs to nobody. WordPress rejects the request, the plugin never hears about the cart, and your recovery dashboard shows a comfortable-looking low number.

Four things to check in your caching layer, in this order:

  • Cart, checkout and account pages excluded from page caching entirely. Most caching plugins do this automatically when WooCommerce is active. Most is not all, and a hand-configured rule at the server or CDN level usually does not.
  • The plugin’s own capture endpoint not cached and not blocked. It is an admin-ajax or REST request. A security plugin rate-limiting anonymous REST traffic will drop it, and so will an aggressive CDN rule that caches POST responses.
  • JavaScript concatenation and deferral not breaking the listener. Combining scripts can change execution order enough that the listener binds after the shopper has already typed their address. Disable JS optimisation, retest capture, then re-enable one setting at a time.
  • Cart fragment caching not hiding the cart itself. If your mini-cart shows stale contents, your cart snapshot will too, and you will send someone a restore link for a cart that is not what they had.

These are the same exclusions that keep totals correct at checkout generally, and getting them wrong causes weirder problems than a missing recovery email — WooCommerce caching plugins: what breaks and what works covers which plugins handle store pages properly out of the box and which need the rules written by hand.

A self-hosted plugin is only as good as your mail deliverability

This is the honest case for paying a hosted service. The three self-hosted options above send through wp_mail(), which by default hands the message to PHP’s mail() and your server’s local sending. A recovery email is commercial mail to someone who is not yet a customer, containing a link and often a discount code. That is the exact profile spam filters are tuned against, and unauthenticated sending from a shared host’s IP is how it lands in a folder nobody opens.

So route it through an authenticated service before you judge the plugin. The pattern that works: an SMTP or API transactional provider with your domain authenticated by SPF, DKIM and DMARC, plus a log so you can tell the difference between “not sent” and “sent and ignored”. Without that log you cannot debug recovery at all — a zero recovery rate looks identical whether the emails bounced, queued, or arrived and failed to persuade. WooCommerce SMTP plugins compared for order emails covers which options give you that log, and WordPress emails not sending is the sequence to work through if nothing is arriving at all.

One deliverability point specific to recovery mail: send the first reminder from the same domain and sender name as your order confirmations. A store that confirms orders from [email protected] and sends recovery from a marketing subdomain is presenting as two senders, and the unfamiliar one starts from zero reputation with every mailbox provider.

If you want the sequence to run entirely on your own server rather than in a SaaS dashboard, you need a sending-and-logging layer that you control. My own Send Emails does that part — automation workflows, WooCommerce customer syncing, per-message send logs and tokenised unsubscribe links. Disclosure: I build and maintain that plugin. Judged by the same maintenance criteria I used in the table, it is the weakest option on this page by a wide margin: v2.6.1 with 30+ active installs and a single review, against 300,000 installs and 613 reviews for the Brainstorm Force plugin. Install base is evidence for code that touches customer data, and I do not have much of it yet. If you want the established route, take the free plugin at the top of the table and put a mainstream SMTP provider behind it; that is the better answer for almost every store reading this.

While you are in the mail path, check the queue. Staged reminders are scheduled jobs, usually through Action Scheduler or WP-Cron, and a broken cron means the first email goes out and the second and third never do. Nothing warns you. If your admin feels sluggish during busy periods, that is often the same backlog showing up somewhere visible — diagnosing a slow WordPress admin dashboard covers reading the scheduled-actions queue, which is where a stalled recovery sequence appears first.

A shopper who typed an email address into your checkout and did not complete an order has not subscribed to anything. Treating that address as a marketing list is where this category gets legally interesting, and it is worth thinking about before you turn on a three-email sequence with a discount in it.

The practical shape of it in the US: CAN-SPAM governs commercial email and requires accurate header and sender information, a physical postal address, a clear and working opt-out, and that you honour opt-outs promptly. It applies to messages whose primary purpose is commercial — and a message built around a discount code is commercial by any reading, whatever the plugin’s marketing calls it. Transactional messages have different treatment, but a cart reminder with a coupon is not a receipt, and it is unwise to file it as one. Several US states add their own requirements, and if any of those abandoned carts came from the EU, the UK or California, a different and stricter set of rules is in play.

Not legal advice

I build plugins, I am not a lawyer, and none of this is legal advice for your store. If you sell across state or national borders, or in a regulated category, get an actual opinion on your recovery sequence before you send it. The point here is that this is a question with a real answer, not a checkbox you can skip because the plugin did not mention it.

Four settings that cost nothing and keep you on the defensible side of this:

  • Turn on the consent checkbox. Every plugin here that offers one offers it for this reason. It reduces your captured volume and improves the quality of what is left.
  • Put a real unsubscribe link in every recovery email, and confirm it works from a real address rather than assuming the merge tag resolved.
  • Cap the sequence and stop. Three emails over 72 hours is a recovery sequence. Seven over two weeks is something a shopper will report as spam, which damages the domain your order confirmations depend on.
  • Say it in your privacy policy. If you capture and store emails from incomplete checkouts, and especially if a third-party service holds them, that belongs in the policy in plain words. Note which service, since that is the part customers ask about.

The coupon in email one is usually a mistake

Every vendor demo leads with the automatic discount code, and it does lift recovery rates. It also discounts orders that were coming back anyway, and that is the cost nobody puts in the case study. A shopper who abandoned because a toddler needed attention was going to return at lunchtime and pay full price. Send them 10% off at the fifteen-minute mark and you bought a sale you already had.

The sequence that respects your margin looks like this. First email, about an hour out, no discount — just the cart, a restore link, and a line about what is in it. Second email the next day, still no discount, but address the objection instead: shipping cost, return policy, stock running low if that is true. Third email, 48 to 72 hours out, only now a unique expiring code, and only to shoppers who opened one of the first two. The people who ignored both were never close, and discounting to them is spend without a signal.

Two rules for the code itself. Make it per-shopper and expiring, which is the one feature in this category worth paying for — a static COMEBACK10 is on aggregator sites within a month and then applies to full-price traffic forever. And set the discount against your gross margin rather than copying the number from a blog post. On a 30% margin, 15% off is half your profit on that order, so the recovery has to be genuinely incremental to make sense.

Recurring products are their own case. Discounting the first payment of a subscription to recover a cart sets an expectation about price that renews with the customer, and the tooling often applies it to every cycle rather than the first — WooCommerce subscription plugins compared covers which options let you scope a coupon to the initial payment only, which is the setting you need before you point recovery emails at subscription carts.

Is SMS recovery worth it, and what does it actually cost

SMS is the upsell in this category and the pricing is worth understanding before you get interested. In AutomateWoo it runs through your own Twilio account, so the licence does not include the messages and you are metered separately. In FunnelKit it does not appear until the Professional tier, $199.50 introductory and $399 on renewal, two steps above the tier that gives you cart recovery. Omnisend sells prepaid credits, from around $0.007 per message for high-volume US sending on Pro and above. Nobody includes it.

The economics only work above a certain order value. At $0.01 a message plus the tier upgrade, texting 200 abandoned carts a month is trivial money; the cost is that US SMS marketing carries stricter consent rules than email, needs a separately collected phone number and explicit opt-in, and a shopper who did not agree to texts reacts badly to one. On a $30 average order it is not worth the setup. On a $400 average order, a single recovered sale pays for a year of it.

If you want order-status and recovery texts running from your own install rather than a marketing suite, my SMS Manager sends through your own gateway on WooCommerce order status triggers. Disclosure: I build and maintain that plugin too. Same honest caveat as before, and stronger: v1.2.8 with fewer than 10 active installs and no reviews at all. That is not an install base, it is an early release, and I would not put it in front of a store’s customers as a first choice. AutomateWoo plus Twilio is the route with a track record, and it is the one to pick unless you have a specific reason to run your own gateway and the appetite to test it on staging first.

What to pick at your store’s size

  • Under 50 orders a month, or you have never measured this. Cart Abandonment Recovery for WooCommerce, free, and nothing else for a month. It gives you a staged sequence and expiring coupons at zero cost, and more importantly it gives you your own recovery rate. Every other decision on this page depends on that number and you do not have it yet.
  • 100 to 1,500 orders a month, recovery is working, you want more triggers. AutomateWoo at $159/yr. The flat annual price beats per-contact SaaS at this volume, it is the official extension so compatibility is rarely the problem, and you get win-backs and review requests from the same tool. Confirm the site count before you buy.
  • Your abandonment is concentrated at the payment step. Fix the checkout instead. FunnelKit’s entry tier at $99.50 covers both, which is the argument for it over AutomateWoo, but read the renewal price first — $129 at year two for Basic, and $399 if you need the Professional tier for SMS.
  • Deliverability from your host is already poor and you do not want to fix it. A hosted service, and Omnisend’s Standard at $11.20/mo for 500 contacts is the cheaper entry. Sending from their authenticated infrastructure solves the inbox problem you would otherwise solve with an SMTP provider. Watch the contact count, because that is what the bill tracks.
  • You need filtering by country, domain or IP. Abandoned Cart Lite, which is the only free tier here with real exclusion rules. Accept that it is tested one WordPress minor behind and carries a 4.1 average, and test it on staging.
  • Average order value under $30. Run the free plugin, skip every paid tier, and put the effort into shipping thresholds and checkout friction instead. At that order value the arithmetic does not support a licence, and a recovery tool will not fix a pricing problem.

Frequently asked questions

Does WooCommerce track abandoned carts without a plugin?

No. Core WooCommerce records orders, and a cart that never became an order leaves only a session that expires. There is no admin screen for abandoned carts, no stored email address, and nothing to send to. Every plugin on this page builds that record itself by capturing the email field at checkout and writing its own table. If you want the data, you have to install something that collects it, and nothing collects retroactively — the carts abandoned before you installed it are gone.

Why is my abandoned cart plugin not capturing any carts?

Check caching first, because it causes most of these. If the checkout page is being served from a full-page cache, the nonce in the capture request is stale and WordPress rejects it silently. Exclude cart, checkout and account pages from caching at every layer including your CDN, then retest. After that, check whether JavaScript concatenation is changing script order so the listener binds too late, and whether a security plugin is rate-limiting anonymous REST or admin-ajax requests. If you have switched to the WooCommerce checkout block, confirm your plugin supports it, since the field markup differs from the older shortcode checkout.

Is it legal to email someone who abandoned a cart in the US?

Stores do this routinely, and CAN-SPAM sets conditions rather than a prohibition: accurate sender and header information, a physical postal address, a working opt-out, and opt-outs honoured promptly. The complication is that a message built around a discount code is commercial email, not a transactional receipt, so do not assume the transactional exemption covers it. Individual states add requirements, and shoppers in the EU, the UK or California bring stricter regimes. Turn on the consent checkbox, keep the sequence short, include a real unsubscribe link, and disclose the practice in your privacy policy. I build plugins rather than practise law, so get an actual opinion if you sell across borders or in a regulated category.

How many recovery emails should the sequence send?

Three over about 72 hours is the shape most stores settle on: a plain reminder around the one-hour mark, an objection-handling email the next day, and a discount only in the third and only to people who opened one of the first two. One email leaves recovery on the table. Beyond three or four you are trading sales for spam complaints, and complaints damage the sending domain your order confirmations rely on, which costs more than the carts are worth.

Self-hosted plugin or a hosted service like Omnisend or Retainful?

It comes down to deliverability against cost growth and data location. A self-hosted plugin keeps cart data in your database and sends through wp_mail(), so you own the data and you own the inbox problem — solvable with an authenticated SMTP provider, but it is on you. A hosted service sends from its own reputable infrastructure and generally lands better, at a bill that grows with your contact count whether or not you email those contacts, and with customer emails and cart contents on someone else’s servers, which you have to disclose. At low volume with mail already working, self-hosted is cheaper. At high volume with poor deliverability, hosted usually wins.

Do abandoned cart plugins work with the WooCommerce checkout block and HPOS?

HPOS is rarely the issue, because these plugins store carts in their own tables rather than in order storage; check compatibility anyway under WooCommerce > Settings > Advanced > Features, which lists any active plugin flagged as incompatible. The checkout block is the real question. Email capture depends on finding the email field and binding to it, and the block checkout renders its fields differently from the shortcode checkout, so support varies and lags. Test capture on your actual checkout after any change to it, using the private-window walkthrough near the top of this page, and do not assume it survived a WooCommerce major update.

The short version

Install the free plugin at the top of the table, confirm capture works with the private-window test, and run it for a month before you consider spending anything. That month gives you your own recovery rate, which is the only number that makes the licence decision for you, and the vendor-published percentages will not.

Then fix the two things that break recovery regardless of tool: exclude your store pages from every caching layer, and route mail through an authenticated provider with a send log. Do those and a free plugin outperforms a paid one on a badly configured store. Skip them and the $159 licence buys you emails nobody receives.

Leave a Reply to This Post