Title: CartRevival &#8211; Abandoned Cart Recovery &amp; Live Cart Monitor
Author: cartrevival
Published: <strong>July 31, 2026</strong>
Last modified: July 31, 2026

---

Search plugins

![](https://ps.w.org/cartrevival/assets/banner-772x250.png?rev=3630337)

![](https://ps.w.org/cartrevival/assets/icon-256x256.png?rev=3630337)

# CartRevival – Abandoned Cart Recovery & Live Cart Monitor

 By [cartrevival](https://profiles.wordpress.org/cartrevival/)

[Download](https://downloads.wordpress.org/plugin/cartrevival.2.9.5.zip)

 * [Details](https://wordpress.org/plugins/cartrevival/#description)
 * [Reviews](https://wordpress.org/plugins/cartrevival/#reviews)
 *  [Installation](https://wordpress.org/plugins/cartrevival/#installation)
 * [Development](https://wordpress.org/plugins/cartrevival/#developers)

 [Support](https://wordpress.org/support/plugin/cartrevival/)

## Description

**CartRevival is abandoned cart recovery for WooCommerce that also shows you carts
as they happen.** It shows you the cart filling up right now, and automatically 
wins it back if the shopper leaves.

Every shopper who adds a product is captured — registered customers and anonymous
guests alike — along with their cart contents, location and device. If they go quiet,
CartRevival marks the cart abandoned and sends a cart abandonment email that rebuilds
their exact cart in one click.

#### Live cart tracking, free

The Live tab is a real-time view of your store. Watch visitors arrive, browse, add
products and reach checkout, with cart values updating the instant something changes.
See what people added and then removed — the hesitation that never shows up in any
other report.

#### What you get for free

 * **Abandoned cart recovery** for both logged-in customers and guests
 * **Live cart tracking** monitor with real-time visitor and cart status
 * **Exit intent popup** on desktop and mobile, with scroll-up velocity and back-
   gesture detection on touch devices
 * **A three-step recovery email series**, each step with its own delay, subject,
   heading, content, coupon field and open/click stats
 * **Early capture popup** that asks for an email or phone on add-to-cart, so guest
   carts become recoverable
 * **Tab notification** that alternates the browser tab title and badges the favicon
   while the shopper is on another tab
 * **One-click cart restore link** that rebuilds variations, quantities and custom
   item data
 * **Conversion funnel**: visitors  add to cart  checkout  orders, with drop-off
   at each step
 * **Reports**: abandonment rate, recoverable revenue, recovered revenue, top abandoned
   products, abandonment by country
 * Remember checkout input across page reloads
 * CSV export including a ready-to-use recovery link per cart
 * Store owner notifications, instantly or as a daily digest
 * Bot defense on every capture: honeypot, user-agent blocklist, minimum time on
   page, optional reCAPTCHA v3
 * Exclusions by email, phone and user role, plus auto-delete for old anonymous 
   carts
 * Full GDPR support: data exporter, eraser, one-click unsubscribe, IP and URL collection
   toggles

#### Built to be invisible on your storefront

Performance was the first requirement, not an afterthought.

 * An always-loaded core of under 2 KB gzipped (1.9 KB measured), loaded deferred—
   every other feature is a tiny module that downloads only when its trigger fires
 * No jQuery, no frontend CSS unless you turn on a popup
 * Tracking uses `navigator.sendBeacon()`, so nothing ever blocks navigation
 * Custom database tables with pre-aggregated daily reports — dashboards never scan
   raw data
 * No `admin-ajax.php` anywhere
 * Zero database writes on a page view when the visitor has an empty cart

#### WhatsApp cart recovery — free

WhatsApp reminders are included in the free plugin. Connect your WhatsApp number
free at [6rsh.com](https://6rsh.com/), and CartRevival sends an approved-template
reminder for every abandoned cart with a phone number. If you already run the 6rsh
WooCommerce plugin, CartRevival reuses your existing connection automatically — 
nothing to paste.

#### No limits on the free plugin

There is no cart quota, no registration and no account. Everything described above
works on every store, on every cart, forever, and this plugin never contacts a licensing
server to decide what you may do.

A separate paid add-on, CartRevival PRO, adds channels and automation on top: SMS
through Twilio or BulkGate, web push, a unified multi-channel sequence builder, 
automatically generated single-use coupons, AI message suggestions, email-marketing
sync, and the full visitor analytics history. It is an optional extra — nothing 
here is switched off or held back to make a case for it. [Details and pricing](https://cartrevival.com/#pricing).

### Performance

CartRevival’s storefront footprint is two-stage, and the always-loaded part is under
2 KB:

 * **Core (always loads): 1.9 KB gzipped.** The tracking beacon and a tiny module
   loader. Deferred, sendBeacon transport, no CSS, zero render-blocking, zero database
   writes on an empty-cart page view.
 * **Feature modules (load only on their trigger):** exit intent (~1.1 KB, on a 
   real leave gesture), field capture (~1.4 KB, on first field focus — or on checkout),
   early-capture popup (~1.0 KB, on add-to-cart), push opt-in + service worker (
   ~0.6 KB, on add-to-cart with push enabled), tab notification (~0.8 KB, first 
   time the tab is hidden). A visitor who never triggers a feature never downloads
   it.
 * **Enforced at build time:** the release build fails if the core ever exceeds 
   4 KB gzipped, so the claim cannot silently rot.

### External services

This plugin works entirely on your own server by default. It does not phone home,
and it has no licence check, no registration and no usage metering: with a fresh
install and default settings, **it makes no external requests at all**.

Three optional integrations can send data off your site. Each is off until you switch
it on, and each is listed here with exactly what leaves your server.

**1. 6rsh (WhatsApp reminder delivery) — only if you connect it**

To send WhatsApp reminders the plugin needs a WhatsApp Business sender, which it
reaches through 6rsh, operated by 6rsh.com. It is used only when you save a 6rsh
API key (or already run the 6rsh WooCommerce plugin on the same site) and switch
the WhatsApp channel on.

 * What is sent: your API key, the shopper’s phone number, the approved template
   name, and the template variables you mapped (typically the shopper’s first name,
   your store name, the cart total and the recovery link).
 * When: at the moment a WhatsApp reminder is sent for an abandoned cart, and when
   the plugin fetches your list of approved templates so you can pick one.
 * Terms of service: https://6rsh.com/terms
 * Privacy policy: https://6rsh.com/privacy

**2. ip-api.com (visitor country and city lookup) — off by default**

Location for the carts list and live monitor normally comes from WooCommerce’s own
MaxMind database, which is a file on your server; nothing is transmitted for that.
If that database cannot place an address, and only if you tick “Look up a visitor’s
country and city with an external service” under CartRevival  Settings  Compliance,
that one IP address is sent to ip-api.com, operated by ip-api.com.

 * What is sent: a single visitor IP address. Nothing else — no name, email, phone,
   cart contents or order data.
 * When: at most once per IP address per day, and only when the local database returned
   no country.
 * Note: the free ip-api.com endpoint accepts plain HTTP only, so this request is
   not encrypted in transit. This is why the setting is off by default. You can 
   point it at a provider of your choice with the `cartrevival_geo_provider_url`
   filter, or disable it in code with the `cartrevival_geo_remote_enabled` filter.
 * Terms of service: https://ip-api.com/docs/legal
 * Privacy policy: https://ip-api.com/docs/legal

**3. Google reCAPTCHA v3 (bot filtering on capture) — only if you configure it**

If you enter reCAPTCHA v3 keys under CartRevival  Settings  Capture, captures are
verified with Google’s siteverify endpoint.

 * What is sent: your reCAPTCHA secret key, the reCAPTCHA token from the visitor’s
   browser, and the visitor’s IP address, to https://www.google.com/recaptcha/api/
   siteverify.
 * When: on each cart capture, while reCAPTCHA keys are configured.
 * Terms of service: https://policies.google.com/terms
 * Privacy policy: https://policies.google.com/privacy

**4. cartrevival.com (opt-in usage telemetry) — off until you opt in**

CartRevival can send a small daily ping to cartrevival.com, operated by us, so we
know which plugin, WordPress and PHP versions are in use. This is strictly opt-in:
nothing is ever sent until you choose an option on the one-time notice shown on 
CartRevival’s own admin screens, and choosing “No thanks” is remembered and never
re-asked.

 * What is sent: the CartRevival version, WordPress version and PHP version, plus
   either a random site token (if you chose “Share anonymously”) or your site’s 
   domain (only if you chose “Share with my domain”). Never any customer, cart, 
   order or personal data.
 * When: at most once per day, only after you opt in. You can change or withdraw
   the choice at any time under CartRevival  Settings  Compliance  Usage telemetry;
   withdrawing stops the pings and deletes the site token so past pings cannot be
   linked to you.
 * Terms of service: https://cartrevival.com/terms
 * Privacy policy: https://cartrevival.com/privacy

## Screenshots

[⌊The Live monitor — every shopper on your store right now, with their cart value
updating as it changes. This is the view no other recovery plugin gives you.⌉⌊The
Live monitor — every shopper on your store right now, with their cart value updating
as it changes. This is the view no other recovery plugin gives you.⌉[

The Live monitor — every shopper on your store right now, with their cart value 
updating as it changes. This is the view no other recovery plugin gives you.

[⌊The Carts list — every captured cart with its contents, contact, location and 
status, and bots separated from humans.⌉⌊The Carts list — every captured cart with
its contents, contact, location and status, and bots separated from humans.⌉[

The Carts list — every captured cart with its contents, contact, location and status,
and bots separated from humans.

[⌊The Recovery screen — a three-step email series, each step with its own delay,
wording and stats, plus WhatsApp.⌉⌊The Recovery screen — a three-step email series,
each step with its own delay, wording and stats, plus WhatsApp.⌉[

The Recovery screen — a three-step email series, each step with its own delay, wording
and stats, plus WhatsApp.

[⌊Writing a recovery email, with personalisation tags and an optional Arabic version
of the same step.⌉⌊Writing a recovery email, with personalisation tags and an optional
Arabic version of the same step.⌉[

Writing a recovery email, with personalisation tags and an optional Arabic version
of the same step.

[⌊The Dashboard — abandonment rate, recoverable revenue and what you actually recovered.⌉⌊
The Dashboard — abandonment rate, recoverable revenue and what you actually recovered
.⌉[

The Dashboard — abandonment rate, recoverable revenue and what you actually recovered.

[⌊The cart-saving popup as a shopper sees it on a phone.⌉⌊The cart-saving popup 
as a shopper sees it on a phone.⌉[

The cart-saving popup as a shopper sees it on a phone.

[⌊Settings — abandonment window, privacy controls and the opt-in usage telemetry
choice.⌉⌊Settings — abandonment window, privacy controls and the opt-in usage telemetry
choice.⌉[

Settings — abandonment window, privacy controls and the opt-in usage telemetry choice.

## Installation

 1. Install and activate WooCommerce first.
 2. Upload the `cartrevival` folder to `/wp-content/plugins/`, or install through Plugins
    Add New.
 3. Activate CartRevival.
 4. Go to **CartRevival  Settings** to choose how long a cart sits idle before it counts
    as abandoned.
 5. Go to **CartRevival  Recovery** to write your reminder email and switch it on.

Sending is off by default. Nothing is ever emailed to a shopper until you enable
it.

## FAQ

### Will this slow down my store?

No. The always-loaded core is under 2 KB gzipped (1.9 KB measured), deferred and
never render-blocking. Exit intent, field capture, push opt-in and tab alerts live
in separate small modules that download only at the moment their trigger fires. 
Tracking beacons are fire-and-forget, so the browser never waits on them, and a 
page view with an empty cart performs no database writes at all. A build-time size
gate fails any release whose core exceeds 4 KB, so this number cannot quietly rot.

### Does it capture guest carts?

Yes. Anonymous shoppers are tracked from their first add-to-cart using a first-party
cookie and WooCommerce’s own session. As soon as they type an email or phone number
at checkout, that cart becomes recoverable.

### When is a cart considered abandoned?

After a period of inactivity you choose, from 15 to 240 minutes, defaulting to 60.
Activity means a page view, a cart change or typing at checkout. Each cart schedules
its own check, so nothing scans your database on a timer.

### What happens if the shopper comes back on their own?

CartRevival matches the order back to the cart by session, cookie, customer account,
email or phone, cancels any pending reminders, and records the revenue. A cart that
converts without a reminder is never counted as recovered — your recovery numbers
stay honest.

### Can a customer be emailed twice by mistake?

No. Every reminder reserves a unique slot in the send log before it is scheduled,
and the send job claims that slot atomically. Two workers racing on the same cart
cannot both send.

### Does it work with the block cart and checkout?

Yes. Both the classic shortcode checkout and the newer block checkout are supported,
including capturing details entered in block checkout fields.

### Is it compatible with High Performance Order Storage?

Yes. HPOS compatibility is declared, and CartRevival works with it on or off.

### Does it work on mobile?

Yes, including exit intent. CartRevival detects an intent to leave on touch devices
through scroll-up velocity and the back gesture.

### Is it GDPR compliant?

CartRevival registers with WordPress’s personal data exporter and eraser, includes
a one-click unsubscribe link in every message, and lets you disable IP address and
page URL collection entirely. Phone numbers can require explicit consent. Nothing
is deleted on uninstall unless you opt in.

### Does it work in Arabic, or any right-to-left language?

Yes, fully. The plugin’s own admin screens and messages are translated, and recovery
emails follow **the shopper’s** language, not your site’s: someone browsing in Arabic
gets an entirely Arabic email, right-to-left, including the button and the footer.
You can also write your own Arabic version of each recovery step. An email is never
sent half in one language and half in another.

### Do I need a paid account or a licence key to use this?

No. The free plugin has no cart quota, no registration, no account and no licence
check. It never contacts a licensing server to decide what you are allowed to do.
The optional PRO add-on is sold separately and is not required for anything described
here.

### Will it work with my theme and page builder?

Yes. The capture popups ship their own self-contained styles, and the plugin adds
nothing to your theme’s templates. Both the classic shortcode checkout and the WooCommerce
block checkout are supported.

### What happens to my data if I uninstall?

Nothing is deleted unless you tick the box for it under Settings. Delete the plugin
with that box unticked and your carts and history stay in the database; tick it 
first and everything the plugin created is removed cleanly on uninstall.

### Does it work with a caching plugin?

Yes. CartRevival never blocks a cached page. If a cache serves a stale security 
token, the script quietly fetches a fresh one and retries.

### How do I send WhatsApp reminders?

WhatsApp reminders are free. Connect your WhatsApp number at 6rsh.com (free), then
pick an approved message template under CartRevival  Recovery  WhatsApp. If the 
6rsh WooCommerce plugin is already connected on your site, CartRevival uses that
connection automatically.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“CartRevival – Abandoned Cart Recovery & Live Cart Monitor” is open source software.
The following people have contributed to this plugin.

Contributors

 *   [ cartrevival ](https://profiles.wordpress.org/cartrevival/)

[Translate “CartRevival – Abandoned Cart Recovery & Live Cart Monitor” into your language.](https://translate.wordpress.org/projects/wp-plugins/cartrevival)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/cartrevival/), check
out the [SVN repository](https://plugins.svn.wordpress.org/cartrevival/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/cartrevival/) by
[RSS](https://plugins.trac.wordpress.org/log/cartrevival/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.9.5

 * **Fixed: the Recovery screen’s channel row was unreadable.** It showed four named
   channels followed by four badges with no channel name at all — one of them a 
   highlighted control attached to nothing — so there was no way to tell what was
   on and what was off. Every badge now belongs to a named channel, and a channel
   that needs setting up says so and links to the screen that does it.
 * Fixed: Web Push could show “Off” and “On” at the same time — the row was reading
   the old per-step setting while the site-wide switch said otherwise. There is 
   now one answer per channel.
 * The Web Push screen is called “Web Push” everywhere (the tab used to say just“
   Push”), and the sidebar now lists screens in the same order as the tabs above
   them.

#### 2.9.4

 * Housekeeping: shortened the plugin’s one-line description so the WordPress.org
   listing shows it in full instead of cutting it short. No functional changes.

#### 2.9.3

 * **Fixed: recovery emails could arrive in two languages at once.** An email could
   carry English wording, an Arabic button and footer, and right-to-left alignment
   all at the same time. Each part was being decided separately — your wording as
   you typed it, the plugin’s own words in whatever language the site was set to,
   and the direction from the site rather than the shopper. Every message is now
   written entirely in one language, with the matching direction, chosen from the
   language the shopper was using when they left their cart.
 * New: each recovery step can have an Arabic version of its subject, heading and
   body. Shoppers who were browsing in Arabic get it; everyone else gets your usual
   wording. Fill in only one language and every shopper gets that one — correctly
   right-to-left if it is Arabic, left-to-right if it is not.
 * Arabic wording now ships for every recovery email out of the box, so nothing 
   is ever sent half-translated.
 * Product names and prices inside a sentence no longer re-order the line around
   them in right-to-left emails.

#### 2.9.2

 * **Fixed (PRO): automatic updates never worked.** CartRevival PRO’s update checker
   was present but was never switched on, so WordPress was never told a newer PRO
   existed and no site was ever offered one — every PRO install stayed on whatever
   version it was first given. PRO now appears under Dashboard  Updates like any
   other plugin. **PRO must be updated by hand this one time**; from this version
   on it updates itself.
 * Fixed (PRO): activating a licence now refreshes the update check immediately,
   instead of leaving a site that checked while unlicensed being told “no update”
   for up to six hours.
 * Fixed (PRO): a suspended licence was announced as “Not valid for this domain”,
   sending merchants to check DNS and site URLs when the real reason — shown underneath—
   was that the licence had been suspended. The heading no longer guesses a cause.

#### 2.9.1

 * **Fixed (important): the cart-saving popup could say “Thanks! We saved your cart”
   when nothing had been saved.** Several outcomes — a visitor excluded by your 
   settings, no session cookie, a rate limit, or a cart that could not be written—
   all answered the storefront in a way it read as success, so the shopper was thanked,
   the popup never asked again, and you got no contact. The popup now confirms the
   address is actually on the cart record before showing success; anything else 
   shows a plain “please try again” and the reason is recorded in the drop log so
   you can see it happening. The same fix applies to the exit-intent popup.
 * **Fixed: the early-capture popup rendered with no heading, no explanation and
   an unlabelled submit button** on any site that had not typed its own wording 
   into Settings — the defaults were empty. Sensible default copy now ships, and
   no popup can ever render a button with no label.
 * Web push is now switched on or off in one place — CartRevival  Web Push. With
   it off, nothing push-related runs: no service worker, no permission prompt, and
   a recovery step that uses push says so plainly instead of failing quietly. The
   per-step push toggles stay where they are and explain themselves when the channel
   is off.

#### 2.9.0

 * New: opt-in usage telemetry. A one-time notice on CartRevival’s own screens asks
   whether the plugin may send a daily ping (plugin, WordPress and PHP versions 
   only — never customer, cart or order data), anonymously or with your domain. 
   Nothing is sent unless you opt in, “No thanks” is remembered forever, and the
   choice can be changed or withdrawn any time under Settings  Compliance. See the
   External Services section.
 * With CartRevival PRO active, the “Upgrade to Pro” tab no longer appears in any
   licence state — PRO installs see a License tab instead. (Previously an unlicensed
   or lapsed PRO install was still shown “Upgrade to Pro” for a plugin it already
   had.)
 * Hardening carried over from the unreleased 2.8.7: PRO verifies a compatible version
   of this plugin is active before starting; an outdated, missing or partial install
   pauses PRO with a notice instead of a fatal error.

#### 2.8.7

 * Hardening: CartRevival PRO now verifies that a compatible version of this plugin
   is active before starting any of its features. An outdated, missing or partially
   installed free plugin means PRO pauses itself and shows an admin notice instead
   of causing a fatal error on the site. The free plugin’s own behaviour is unchanged.

#### 2.8.6

 * Fixed: a merge tag that does not exist — {first_name} instead of {customer_name},
   or one pasted from another mailer — was delivered to the shopper verbatim, so
   a reminder could arrive reading “Hi {first_name},”. Unknown tags are now removed
   before sending, and saving a template that contains one tells you which tag it
   was and what you probably meant.
 * Fixed: with the 6rsh plugin’s “use my own cart engine” override switched on, 
   both plugins sent a WhatsApp reminder for the same cart. CartRevival now stands
   down when that override is set, and releases its claim on the shared engine key
   instead of leaving a stale one behind.
 * Fixed: if the two plugins ever disagreed about who owned the recovery engine,
   both could stand down and no WhatsApp reminder went out at all, silently. They
   now read the shared key the same way.
 * Fixed: the Manual nudge editor on the Recovery screen was rendered three times—
   once per email step — producing three copies of the same fields with the same
   IDs. Whichever copy came last won on save, so an edit made in the first one could
   be silently discarded. It is now rendered once.
 * Faster on the storefront. Two “make sure the scheduled job still exists” checks
   ran on every front-end page view, each a pair of joins across the Action Scheduler
   tables, and the licence grant was read with its own query on every request. On
   a 10,000-cart store the plugin now adds 0–1 database queries to a page instead
   of 6–7.
 * Accessibility: every control on every admin screen now has a name a screen reader
   can announce — the reCAPTCHA keys, the SMS and email-integration fields, each
   step’s delay, subject and heading, and the row checkboxes on the Carts screen.
 * Fixed: the web push composer ran off the side of the screen on a phone, and the
   country list did the same on a tablet. Wide tables now scroll inside their own
   box instead of scrolling the whole page.
 * Fixed: none of CartRevival PRO’s own text was ever translated, in any language.
   Its translations are now loaded properly.
 * Arabic is complete: 704 strings in this plugin and 497 in PRO, including all 
   six plural forms.
 * An unrecognised tracking event is now recorded in the tracking-health log instead
   of being dropped without a trace.

#### 2.8.5

 * The coexistence handshake with the 6rsh WooCommerce plugin now uses a properly
   prefixed option, `cartrevival_engine_owner`. If 6rsh is installed but older than
   1.7.1 — the release that reads the new name — this plugin stands down from WhatsApp
   entirely and leaves the channel to 6rsh, so no shopper is ever messaged twice.
   Update 6rsh to 1.7.1 or newer to get WhatsApp back on this side.
 * Fixed: nothing had ever acted on that handshake. With 6rsh installed and running
   its own cart engine, both plugins could queue a WhatsApp reminder for the same
   cart. Only one does now.
 * Renamed three extension filters to drop a “pro” prefix that described nothing:`
   cartrevival_pro_owns_sending` is now `cartrevival_sending_owner`, `cartrevival_pro_channel_enabled`
   is now `cartrevival_channel_enabled`, and `cartrevival_pro_channel_configured`
   is now `cartrevival_channel_configured`.
 * Every remaining database statement now passes a plain string literal to the query
   builder, so the SQL can be read and checked exactly as written.
 * The carts CSV export no longer calls filesystem functions on the output stream.

#### 2.8.4

 * Manual sending is fully free. Sending a reminder by hand — from the Carts list,
   from a cart’s detail row, or from the Live visitor panel — now works for email
   and WhatsApp with nothing installed but this plugin. The Live panel previously
   refused and asked you to upgrade.
 * The full recovery history is on screen. The Carts timeline showed only the last
   7 days; it now shows everything the plugin has stored for that cart.
 * SMS and web push are no longer shown at all unless a plugin that can send them
   is installed. There are no greyed-out buttons and no “PRO” chips on any control.
 * The Upgrade to Pro comparison was rewritten against the actual code. Early capture
   before checkout, recovered-order attribution and manual sending are free and 
   are now listed as free; two rows describing features this plugin already ships
   were removed, as was one describing a feature that does not exist.
 * Hardened every database call. Table and column names are now bound as identifiers
   rather than written into the SQL text, and the two upsert statements build their
   column list from a fixed schema map.
 * Renamed the `sixrsh_get_connection` filter this plugin fires to `cartrevival_sixrsh_get_connection`.
   Reading the 6rsh plugin’s own connection is unaffected.
 * Requires WordPress 6.2 or newer (for identifier placeholders in prepared statements).

#### 2.8.3

 * Added: per-cart recovery history timeline. The Carts screen now tells each cart’s
   story — every send on every channel with its real outcome and the reason when
   one failed, restore-link clicks, applied coupons, recovery and unsubscribes —
   plus what is still scheduled.
 * Added: manual one-click sending per channel, straight from the Carts list. Buttons
   only light up when they can actually send (contact captured, channel connected,
   cart still abandoned), a small preview confirms before anything goes out, and
   a manual send counts as the automation step it used — the series can never double-
   send the same content.
 * The free plugin keeps the last 7 days of history on screen, matching its analytics
   window.

#### 2.8.2

 * Fixed: outdated pricing shown on Upgrade to Pro screen. The page offered a retired
   yearly plan; the real offer is $6 per month or $99.99 once for lifetime, both
   one site per licence, and each plan now has its own checkout button.

#### 2.8.1

 * CartRevival is now free and complete on its own. The monthly cart quota, the 
   account registration step and the licence key are all gone from this plugin: 
   capture, the live monitor, the 3-step email series and WhatsApp reminders run
   with no account and no limit.
 * Fixed: recovery links in emails did not rebuild the cart. Link rewriting read
   already-escaped HTML, so the tracking redirect sent browsers a broken address
   and the restore token never arrived. Links already sitting in inboxes recover
   correctly too.
 * Fixed: reminder emails could stop being sent entirely. A daily maintenance task
   re-triggered itself until PHP ran out of memory, which killed any reminder that
   happened to be queued behind it in the same batch.
 * Fixed: a reminder interrupted mid-send stayed marked “sending” forever, and every
   later retry silently did nothing. Interrupted sends are now detected and returned
   to the queue.
 * Fixed: installing the Pro add-on without activating it could stop channels the
   free plugin was sending on its own. Pro now takes over a channel only when it
   is licensed and that channel is set up; otherwise the free plugin keeps sending
   exactly as before.
 * Fixed: when mail could not be sent, the Recovery screen said nothing. It now 
   states the outcome of the last attempt in plain words, with the mail server’s
   own reason when there is one, and points to the usual cause — a WordPress site
   with no mail transport of its own.
 * Fixed: exit intent and contact capture read the first email field on the page
   even when it was an empty login or newsletter box, missing the field the shopper
   actually typed into.
 * Web push settings had two homes and could disagree. Keys, contact address, opt-
   in prompt, composer, subscribers and delivery log now live on the Push tab only.
 * Storefront footprint reduced to a two-stage load: the always-present core is 
   1.9 KB gzipped, and exit intent, field capture, the early-capture popup, push
   opt-in and tab alerts each download only when their trigger fires.

#### 2.2.0

 * Storefront footprint re-engineered to a two-stage load: the always-loaded core
   is now 1.9 KB gzipped (was ~5.4 KB across two files) — just the tracking beacon
   and a tiny loader. Exit intent, field capture, the early-capture popup, push 
   opt-in and tab alerts each moved into their own small module that downloads only
   at the moment its trigger fires; popup CSS now arrives with its module instead
   of on every page.
 * A build-time size gate now fails any release whose core exceeds 4 KB gzipped,
   so the performance claim can never quietly rot.
 * Fixed: sitewide contact capture stopped at the first email field on the page 
   even when it was an empty login/newsletter box, silently missing the field the
   shopper actually typed into. It now reads the first filled field.
 * The storefront footprint is stated on the plugin dashboard, where you evaluate
   it.

#### 2.1.0

 * New: your CartRevival account at cartrevival.com — sign in with a one-time email
   link to see every linked site, its plan and monthly usage, manage billing (Stripe
   portal) and switch plans.
 * New: “Refresh plan” button next to the usage meter — see an upgrade the moment
   you buy it instead of waiting for the daily check.
 * Upgrade links now take you straight to checkout for your exact site, so the purchase
   applies to the right licence automatically.
 * A paid plan that ends (cancel or failed payments) now cleanly reverts the site
   to the Free tier’s monthly cap — capture, dashboards and data all keep working;
   nothing is ever deleted.

#### 2.0.1

 * New “Tracking health” panel on the Live tab: it shows when the last visitor beacon
   reached your server and lists every visitor, beacon or cart the plugin deliberately
   filtered — with the reason (bot user agent, excluded role, country allowlist,
   rate limit) — so an empty Live screen is diagnosable at a glance instead of a
   mystery.
 * Push subscribers now always get a country: the subscribe call resolves it from
   the visitor’s own request through the same proxy-aware IP and geo pipeline carts
   use, instead of relying on a live session row. Existing subscribers without a
   country heal automatically on their next ping, and a known country is never overwritten
   with an empty one.
 * API keys and tokens (6rsh, Twilio, BulkGate) can no longer be silently wiped:
   saving any settings form that omits the field — or leaves it blank — keeps the
   stored credential, and removal is now an explicit checkbox. The 6rsh field also
   shows exactly where your connection comes from: a masked key on file, or the 
   co-installed 6rsh plugin’s connection.

#### 2.0.0

 * Big one: CartRevival is now a single plugin with every feature built in for everyone—
   multi-step recovery across email, WhatsApp, SMS and web push, single-use coupons,
   early capture, tab notifications, revenue attribution and smart send-time. There
   is no separate Pro add-on any more; if you had it, it is switched off automatically
   on update and you can delete it. Nothing is lost and your sequences keep running.
 * New pricing model: capture, the live monitor, dashboards and every channel are
   unlimited on every tier, forever. What’s metered is how many carts you enter 
   into recovery automation each calendar month — Free 30, Starter 1,000, Growth
   5,000, Scale unlimited. Register your site (free, one click, no card) to switch
   recovery on; a usage meter and a monthly reset date are shown right on the dashboard.
 * New: carts blocked by your monthly limit are still captured and shown, badged
   clearly, with a running total of the recovery you left on the table so you can
   decide if a higher tier pays for itself.
 * Improved: bot and scraper traffic is filtered consistently everywhere — dashboard,
   carts and the recovery meter — so you never pay to “recover” a bot.

#### 1.5.0

 * New: bot-clean analytics. Every dashboard number — abandonment rate, recoverable
   carts and revenue, recovered carts and revenue, and the chart — now describes
   real human shoppers only. Server-side scraper hits that never run JavaScript 
   are excluded by definition, and the abandonment rate is a true cohort ratio that
   can no longer read above 100%. A subtle “Excluding N bot sessions” toggle lets
   you see the raw picture on demand; nothing is ever deleted.
 * New: the Carts list defaults to humans only, with Humans / Bots / All filter 
   pills (each with counts). Bot rows stay one click away, each carrying a score
   badge and the reason it was flagged. CSV export follows the active filter.
 * New: Recovery and Automation are now one page — a channel-organised flow builder
   with a live sequence timeline, one-click prebuilt flows (Gentle 3-step Email,
   WhatsApp-first GCC, Aggressive full-channel), and a guided empty state. Email
   and free WhatsApp are configured here; SMS, web push and tab notification appear
   as clear upgrades.
 * New: Settings are reorganised into General, Capture, Connections, Compliance 
   and Advanced tabs, each setting with a one-line explanation.
 * Improved: web push opt-in now also triggers at add-to-cart, not just on the cart
   page, so more shoppers can be reached — asked once per session and never re-prompted
   after a decline.
 * Fixed: the rich text editor could come up unusable inside a tab that was hidden
   when the page loaded (a long-standing upgrade-only bug). Editors are now repainted
   the moment their tab is shown, and their content is always saved.

#### 1.4.0

 * New: WhatsApp cart recovery is now FREE. Connect your WhatsApp number free at
   6rsh.com (or reuse the 6rsh plugin’s existing connection), pick an approved template
   under Recovery  WhatsApp, and abandoned carts with a phone number get a WhatsApp
   reminder. Sends count against your 6rsh plan’s quota.
 * Fixed: visitors on the Live tab with no country flag. Geolocation now falls back
   to a bounded IP lookup when WooCommerce’s MaxMind database is not installed, 
   and a visitor geo cannot place shows an explicit “Unknown” globe instead of a
   silent blank.
 * Improved: bot detection. The browser’s own automation tell (navigator.webdriver,
   headless fingerprints) is now a scored signal, datacentre/proxy classification
   comes from the geo provider instead of a static list alone, and infrastructure
   traffic weighs heavier — so scrapers that execute JavaScript no longer pass as
   human. Bots are still labelled, never blocked from browsing, and are excluded
   from KPIs and cart capture as before.
 * Fixed: saving one settings tab could reset options belonging to another tab (
   each form now only writes the fields it owns).
 * Improved: an installed-but-unlicensed Pro now cleanly hands reminder scheduling
   back to the free plugin instead of leaving the store sending nothing.

#### 1.3.4

 * Maintenance release keeping the free plugin in step with CartRevival Pro 1.3.4,
   which moves the licensing service to its permanent home at cartrevival.com. The
   free plugin does not use the licensing service and is unchanged in behaviour;
   this build only refreshes the bundled translation template.

#### 1.3.3

 * Maintenance release accompanying the CartRevival Pro security and WhatsApp-template
   updates. The free plugin captures carts and sends its recovery email exactly 
   as before; this build only refreshes the bundled translation template and keeps
   the version in step with Pro.

#### 1.3.1

 * Fixed: saving anything on the Settings screen produced a fatal error. This affected
   every 1.3.0 install and is the reason to update.
 * Fixed: the bundled Arabic translation never loaded, so the plugin stayed in English
   on Arabic sites no matter what. The Arabic admin is now complete — every one 
   of its 490 strings is translated, up from 212.
 * New: “Exclude bots from capture” (on by default). Crawlers, headless browsers
   and scraping tools are refused outright; anything else needs two independent 
   signals before it is turned away, so a real shopper on a company VPN is still
   captured. Nothing already stored is ever affected.
 * New: country allowlist under Settings -> Capture. Choose one or more countries
   and carts from anywhere else are never stored, with a separate choice for what
   to do when a visitor’s country cannot be determined (capture by default, so real
   shoppers are not lost).
 * New: Tools -> Clean up bot carts, which counts the automation-created carts already
   in your database and removes them on request. Carts with an email address, phone
   number, account or order are never touched.
 * New: an Upgrade to Pro tab with a full Free-versus-Pro comparison, so the differences
   are visible in one place instead of scattered across the screens.
 * Improved: visitor IP detection behind a proxy. The header order is now CF-Connecting-
   IP, then the first public address in X-Forwarded-For, then X-Real-IP, then REMOTE_ADDR–
   which is what makes the country column correct on Cloudflare and reverse-proxy
   hosting.
 * Improved: geolocation results are cached per address for 24 hours, and the remote
   lookup is bounded to two seconds with a single retry, so a slow geo provider 
   can never slow down a shopper’s page.
 * Improved: known commercial proxy and scraping networks are now recognised. These
   are the addresses behind the repeated identical “German” carts some stores were
   seeing.
 * Improved: contrast on the Upgrade tab and the accented tab label now meets WCAG
   AA in both the light admin and the dark Live screen.

#### 1.3.0

 * New: automatic coexistence with the 6rsh Messaging & Notifications plugin. When
   both plugins are active, CartRevival takes over cart recovery and 6rsh automatically
   pauses its own cart reminders, so a shopper is never messaged twice about the
   same cart. 6rsh order notifications, follow-ups and its chat widget keep working
   normally.
 * New: deactivating CartRevival hands cart recovery back to 6rsh automatically,
   so your store is never left without a recovery engine.
 * New: when 6rsh is connected, CartRevival’s WhatsApp recovery steps send through
   your existing 6rsh connection automatically — no need to paste the same API key
   twice. WhatsApp sends count against your 6rsh plan; email steps continue to use
   CartRevival’s own sender.
 * CartRevival continues to work exactly as before on stores where 6rsh is not installed.
   There is no dependency on 6rsh.

#### 1.0.0

 * Initial release.
 * Cart capture for registered customers and guests.
 * Live visitor and cart monitor.
 * Abandonment detection with per-cart scheduling.
 * Recovery attribution from orders back to carts.
 * Editable recovery email with tokenized cart restore links.
 * Exit intent popup for desktop and mobile.
 * Dashboard reports and conversion funnel.
 * CSV export, GDPR exporter and eraser, bot defense.

## Meta

 *  Version **2.9.5**
 *  Last updated **55 minutes ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.0.2**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [abandoned cart](https://wordpress.org/plugins/tags/abandoned-cart/)[cart recovery](https://wordpress.org/plugins/tags/cart-recovery/)
   [exit-intent](https://wordpress.org/plugins/tags/exit-intent/)[whatsapp](https://wordpress.org/plugins/tags/whatsapp/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/cartrevival/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/cartrevival/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/cartrevival/reviews/)

## Contributors

 *   [ cartrevival ](https://profiles.wordpress.org/cartrevival/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/cartrevival/)