Two independent systems for WooCommerce — Abandoned Cart Recovery and a complete Loyalty & Membership System — configured once and run on autopilot.
Captures checkout emails in real time and runs a configurable automated reminder-email sequence to recover lost sales — entirely on autopilot via WP-Cron and WooCommerce hooks. Every setting below is a toggle or field in Settings → ACR.
Captures checkout emails as they are typed — guests on blur via AJAX, logged-in shoppers on add-to-cart — so a cart can be recovered even if checkout is never reached.
1–5 ordered reminder steps, each with its own delay (minutes / hours / days), subject, body and active flag. Space them however you like and toggle individual steps on or off.
Attach a single-use, email-restricted WooCommerce coupon to any step — percent or fixed, with its own expiry — to add urgency exactly where you want it.
Every reminder carries a signed, time-limited link that drops the shopper back into their exact cart, ready to check out. Restore-link validity is configurable.
An optional tracking pixel records opens, and the restore link records clicks — feeding open rate, click rate and recovery attribution.
Every email includes a signed one-click unsubscribe link and a List-Unsubscribe header. Opt-outs are permanent and instantly stop all future sends to that address.
Guests are only captured with an explicit consent checkbox (classic and block checkout). The consent text and timestamp are stored for audit; pre-ticking is off by default.
Skip carts below a minimum value, or carts containing specific products or categories. An abandon-timeout setting controls how long idle before a cart counts as abandoned.
Abandoned, sent, open/click rate, recovered, recovery rate, recovered revenue and unsubscribes — with an Abandoned-vs-Recovered trend chart and a recent-carts table.
Runs entirely on WP-Cron and WooCommerce hooks: schedules sequences, sends due reminders, retries failures with backoff, and cancels the sequence the moment a cart is recovered or the shopper unsubscribes.
Points earning, membership tiers, two redemption modes, points expiry, manual / bulk adjustments and customer-facing displays — a complete loyalty program configured once in Settings → LMS and run automatically.
Flat points per order, points per amount spent (per-currency rates), and price-tier brackets — all stackable and summed, calculated on the amount actually paid by default (after coupons and redeemed points).
Per-product and per-category multipliers (or disable earning entirely), plus scheduled double-point events with a custom multiplier over a date window.
Bronze, Silver, Gold and Platinum by default, ranked by lifetime points or current balance, with customer-facing colored badges. Fully editable tier list, thresholds and colors.
Hit a points target and a single-use reward coupon is generated, emailed and shown in the account. Configurable target, type, value, expiry and single-vs-multiple rules.
A flexible checkout slider lets customers spend points directly for a discount, with a conversion rate, minimum redeem amount, and a max-discount cap as a % of the cart.
A single-source-of-truth wallet backed by a full earn / redeem / expire / manual ledger. Adjust a customer by hand with a mandatory note, or bulk-adjust from a CSV.
Expire points after inactivity (full or FIFO-partial), with an advance warning email sent a configurable number of days before — so customers come back to spend them.
Points are only deducted on order completion (failed payments never consume them), and a configurable share of earned points is clawed back proportionally on partial refunds.
A “My Points” tab in WooCommerce My Account shows balance, lifetime points, tier badge, active reward coupons and paginated earning / redemption history.
Place the points-balance panel, the Mode A coupon list and the Mode B redemption widget anywhere with native Gutenberg blocks or Elementor widgets — no-code stylable.
Everything is prefixed, hookable and observable. Drive the plugin from your own code with internal action hooks, and read analytics or settings through a clean REST API.
eoc_lms_balance_updated — after any wallet change ($user_id, $balance)eoc_lms_tier_changed — on tier promotion ($user_id, $new, $old)eoc_lms_milestone_coupon_generated — Mode A coupon createdeoc_loaded — when the plugin bootsGET/POST /settings/acr — read & save ACR settingsGET/POST /settings/lms — read & save LMS settingsGET /dashboard/carts — recovery stats & seriesGET /dashboard/loyalty — loyalty stats & tiersGET /dashboard/customer?id= — one customer's ledger// React to loyalty point changes
add_action(
'eoc_lms_balance_updated',
function ( $user_id, $balance ) {
error_log( "User {$user_id}: {$balance} pts" );
},
10, 2
);// Reward a perk when a member is promoted
add_action(
'eoc_lms_tier_changed',
function ( $user_id, $new, $old ) {
// e.g. grant free shipping for 'Gold'
},
10, 3
);Free, automation-first cart recovery and loyalty for WooCommerce.
Get Started Free