{"id":346255,"date":"2026-07-31T17:59:18","date_gmt":"2026-07-31T17:59:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/cartrevival-abandoned-cart-recovery-live-cart-monitor\/"},"modified":"2026-07-31T19:50:49","modified_gmt":"2026-07-31T19:50:49","slug":"cartrevival","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/cartrevival\/","author":23538913,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.9.5","stable_tag":"2.9.5","tested":"7.0.2","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"CartRevival - Abandoned Cart Recovery & Live Cart Monitor","header_author":"CartRevival","header_description":"Abandoned cart recovery for WooCommerce with a real-time live visitor and cart monitor, exit intent and early capture popups, a three-step email series, and WhatsApp reminders through your own 6rsh account.","assets_banners_color":"f4faf6","last_updated":"2026-07-31 19:50:49","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/cartrevival.com\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":31,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.9.3":{"tag":"2.9.3","author":"cartrevival","date":"2026-07-31 17:58:58"},"2.9.4":{"tag":"2.9.4","author":"cartrevival","date":"2026-07-31 18:30:54"},"2.9.5":{"tag":"2.9.5","author":"cartrevival","date":"2026-07-31 19:50:49"}},"upgrade_notice":{"2.9.5":"<p>Fixes the Recovery screen&#039;s channel row, which could show unlabelled badges and contradictory Web Push states.<\/p>","2.9.4":"<p>Listing text only \u2014 no functional changes.<\/p>","2.9.3":"<p>Fixes recovery emails that could go out half English and half Arabic. Adds an optional Arabic version of each recovery step.<\/p>","2.9.2":"<p>Important for PRO users: automatic updates for the PRO add-on never worked and are fixed here. Update PRO by hand once; after that it will update itself.<\/p>","2.9.1":"<p>Important fix: the cart-saving popup could confirm success without saving the shopper&#039;s email, and shipped with an unlabelled button when you had not written your own wording. Update both plugins.<\/p>","2.9.0":"<p>Adds strictly opt-in usage telemetry (off until you choose), fixes the &quot;Upgrade to Pro&quot; tab showing next to an installed PRO, and hardens PRO against outdated or missing free-plugin installs. Update Free and PRO together.<\/p>","2.8.7":"<p>Pairs with CartRevival PRO 2.8.7, which no longer risks a fatal error when the free plugin is outdated or missing \u2014 PRO pauses with a notice instead. Update both together.<\/p>","2.8.6":"<p>Reminders no longer go out with an unreplaced merge tag in them. Fixes a case where CartRevival and the 6rsh plugin could both message the same shopper, and one where neither did. Faster on the storefront, complete Arabic, and every admin control is now readable by a screen reader.<\/p>","2.8.5":"<p>Stops CartRevival and the 6rsh plugin both sending a WhatsApp reminder for the same cart. If you run 6rsh, update it to 1.7.1 or newer as well.<\/p>","2.8.4":"<p>Manual email and WhatsApp sending now works everywhere in the free plugin, including the Live visitor panel, and cart timelines show your full history instead of 7 days. Also hardens every database query. Requires WordPress 6.2.<\/p>","2.8.3":"<p>Every cart now has a full recovery timeline, and you can send any configured channel manually with one click.<\/p>","2.8.2":"<p>Small fix: the Upgrade to Pro screen showed retired pricing. No behaviour changes.<\/p>","2.8.1":"<p>No account, no key and no monthly cart limit \u2014 every feature in this plugin now runs on its own. Also fixes three faults that could stop recovery emails being sent, and recovery links that did not rebuild the cart. Recommended for everyone.<\/p>","2.0.0":"<p>CartRevival is now one plugin with every feature included. If you ran the separate Pro add-on it is retired automatically on update \u2014 nothing is lost. Register your site (free) to keep recovery running.<\/p>","1.5.0":"<p>Dashboards now count real shoppers only \u2014 bots are excluded from every number, with a toggle to see them. Recovery and Automation merge into one flow builder. Recommended for everyone.<\/p>","1.4.0":"<p>WhatsApp cart recovery is now free (via a free 6rsh connection), Live-tab country flags are fixed, and bot detection is much stronger. Recommended for everyone.<\/p>","1.3.4":"<p>Maintenance release, no functional change. If you also run CartRevival Pro, update Pro too \u2014 it moves licensing to cartrevival.com.<\/p>","1.3.3":"<p>Maintenance release. If you also run CartRevival Pro, update Pro too \u2014 it carries an important licensing\/security fix.<\/p>","1.3.1":"<p>Fixes a fatal error when saving settings on 1.3.0, and makes the Arabic admin work at all. Also stops bot traffic being stored as carts.<\/p>","1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3630337,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3630337,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3630337,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3630337,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.9.3","2.9.4","2.9.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3630337,"resolution":"1","location":"assets","locale":"","width":1280,"height":1360},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3630337,"resolution":"2","location":"assets","locale":"","width":1280,"height":1092},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3630337,"resolution":"3","location":"assets","locale":"","width":1280,"height":5864},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3630337,"resolution":"4","location":"assets","locale":"","width":1280,"height":5864},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3630337,"resolution":"5","location":"assets","locale":"","width":1280,"height":1434},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3630337,"resolution":"6","location":"assets","locale":"","width":828,"height":2206},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3630337,"resolution":"7","location":"assets","locale":"","width":1280,"height":1025}},"screenshots":{"1":"The Live monitor \u2014 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.","2":"The Carts list \u2014 every captured cart with its contents, contact, location and status, and bots separated from humans.","3":"The Recovery screen \u2014 a three-step email series, each step with its own delay, wording and stats, plus WhatsApp.","4":"Writing a recovery email, with personalisation tags and an optional Arabic version of the same step.","5":"The Dashboard \u2014 abandonment rate, recoverable revenue and what you actually recovered.","6":"The cart-saving popup as a shopper sees it on a phone.","7":"Settings \u2014 abandonment window, privacy controls and the opt-in usage telemetry choice."}},"plugin_section":[],"plugin_tags":[15962,11133,1002,3160,286],"plugin_category":[45],"plugin_contributors":[274075],"plugin_business_model":[],"class_list":["post-346255","plugin","type-plugin","status-publish","hentry","plugin_tags-abandoned-cart","plugin_tags-cart-recovery","plugin_tags-exit-intent","plugin_tags-whatsapp","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-cartrevival","plugin_committers-cartrevival"],"banners":{"banner":"https:\/\/ps.w.org\/cartrevival\/assets\/banner-772x250.png?rev=3630337","banner_2x":"https:\/\/ps.w.org\/cartrevival\/assets\/banner-1544x500.png?rev=3630337","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/cartrevival\/assets\/icon-128x128.png?rev=3630337","icon_2x":"https:\/\/ps.w.org\/cartrevival\/assets\/icon-256x256.png?rev=3630337","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/cartrevival\/assets\/screenshot-1.png?rev=3630337","caption":"The Live monitor \u2014 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."},{"src":"https:\/\/ps.w.org\/cartrevival\/assets\/screenshot-2.png?rev=3630337","caption":"The Carts list \u2014 every captured cart with its contents, contact, location and status, and bots separated from humans."},{"src":"https:\/\/ps.w.org\/cartrevival\/assets\/screenshot-3.png?rev=3630337","caption":"The Recovery screen \u2014 a three-step email series, each step with its own delay, wording and stats, plus WhatsApp."},{"src":"https:\/\/ps.w.org\/cartrevival\/assets\/screenshot-4.png?rev=3630337","caption":"Writing a recovery email, with personalisation tags and an optional Arabic version of the same step."},{"src":"https:\/\/ps.w.org\/cartrevival\/assets\/screenshot-5.png?rev=3630337","caption":"The Dashboard \u2014 abandonment rate, recoverable revenue and what you actually recovered."},{"src":"https:\/\/ps.w.org\/cartrevival\/assets\/screenshot-6.png?rev=3630337","caption":"The cart-saving popup as a shopper sees it on a phone."},{"src":"https:\/\/ps.w.org\/cartrevival\/assets\/screenshot-7.png?rev=3630337","caption":"Settings \u2014 abandonment window, privacy controls and the opt-in usage telemetry choice."}],"raw_content":"<!--section=description-->\n<p><strong>CartRevival is abandoned cart recovery for WooCommerce that also shows you carts as they happen.<\/strong> It shows you the cart filling up right now, and automatically wins it back if the shopper leaves.<\/p>\n\n<p>Every shopper who adds a product is captured \u2014 registered customers and anonymous guests alike \u2014 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.<\/p>\n\n<h4>Live cart tracking, free<\/h4>\n\n<p>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 \u2014 the hesitation that never shows up in any other report.<\/p>\n\n<h4>What you get for free<\/h4>\n\n<ul>\n<li><strong>Abandoned cart recovery<\/strong> for both logged-in customers and guests<\/li>\n<li><strong>Live cart tracking<\/strong> monitor with real-time visitor and cart status<\/li>\n<li><strong>Exit intent popup<\/strong> on desktop and mobile, with scroll-up velocity and back-gesture detection on touch devices<\/li>\n<li><strong>A three-step recovery email series<\/strong>, each step with its own delay, subject, heading, content, coupon field and open\/click stats<\/li>\n<li><strong>Early capture popup<\/strong> that asks for an email or phone on add-to-cart, so guest carts become recoverable<\/li>\n<li><strong>Tab notification<\/strong> that alternates the browser tab title and badges the favicon while the shopper is on another tab<\/li>\n<li><strong>One-click cart restore link<\/strong> that rebuilds variations, quantities and custom item data<\/li>\n<li><strong>Conversion funnel<\/strong>: visitors \u2192 add to cart \u2192 checkout \u2192 orders, with drop-off at each step<\/li>\n<li><strong>Reports<\/strong>: abandonment rate, recoverable revenue, recovered revenue, top abandoned products, abandonment by country<\/li>\n<li>Remember checkout input across page reloads<\/li>\n<li>CSV export including a ready-to-use recovery link per cart<\/li>\n<li>Store owner notifications, instantly or as a daily digest<\/li>\n<li>Bot defense on every capture: honeypot, user-agent blocklist, minimum time on page, optional reCAPTCHA v3<\/li>\n<li>Exclusions by email, phone and user role, plus auto-delete for old anonymous carts<\/li>\n<li>Full GDPR support: data exporter, eraser, one-click unsubscribe, IP and URL collection toggles<\/li>\n<\/ul>\n\n<h4>Built to be invisible on your storefront<\/h4>\n\n<p>Performance was the first requirement, not an afterthought.<\/p>\n\n<ul>\n<li>An always-loaded core of under 2 KB gzipped (1.9 KB measured), loaded deferred \u2014 every other feature is a tiny module that downloads only when its trigger fires<\/li>\n<li>No jQuery, no frontend CSS unless you turn on a popup<\/li>\n<li>Tracking uses <code>navigator.sendBeacon()<\/code>, so nothing ever blocks navigation<\/li>\n<li>Custom database tables with pre-aggregated daily reports \u2014 dashboards never scan raw data<\/li>\n<li>No <code>admin-ajax.php<\/code> anywhere<\/li>\n<li>Zero database writes on a page view when the visitor has an empty cart<\/li>\n<\/ul>\n\n<h4>WhatsApp cart recovery \u2014 free<\/h4>\n\n<p>WhatsApp reminders are included in the free plugin. Connect your WhatsApp number free at <a href=\"https:\/\/6rsh.com\/\">6rsh.com<\/a>, 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 \u2014 nothing to paste.<\/p>\n\n<h4>No limits on the free plugin<\/h4>\n\n<p>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.<\/p>\n\n<p>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 \u2014 nothing here is switched off or held back to make a case for it. <a href=\"https:\/\/cartrevival.com\/#pricing\">Details and pricing<\/a>.<\/p>\n\n<h3>Performance<\/h3>\n\n<p>CartRevival's storefront footprint is two-stage, and the always-loaded part is under 2 KB:<\/p>\n\n<ul>\n<li><strong>Core (always loads): 1.9 KB gzipped.<\/strong> 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.<\/li>\n<li><strong>Feature modules (load only on their trigger):<\/strong> exit intent (~1.1 KB, on a real leave gesture), field capture (~1.4 KB, on first field focus \u2014 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.<\/li>\n<li><strong>Enforced at build time:<\/strong> the release build fails if the core ever exceeds 4 KB gzipped, so the claim cannot silently rot.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>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, <strong>it makes no external requests at all<\/strong>.<\/p>\n\n<p>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.<\/p>\n\n<p><strong>1. 6rsh (WhatsApp reminder delivery) \u2014 only if you connect it<\/strong><\/p>\n\n<p>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.<\/p>\n\n<ul>\n<li>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).<\/li>\n<li>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.<\/li>\n<li>Terms of service: https:\/\/6rsh.com\/terms<\/li>\n<li>Privacy policy: https:\/\/6rsh.com\/privacy<\/li>\n<\/ul>\n\n<p><strong>2. ip-api.com (visitor country and city lookup) \u2014 off by default<\/strong><\/p>\n\n<p>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 \u2192 Settings \u2192 Compliance, that one IP address is sent to ip-api.com, operated by ip-api.com.<\/p>\n\n<ul>\n<li>What is sent: a single visitor IP address. Nothing else \u2014 no name, email, phone, cart contents or order data.<\/li>\n<li>When: at most once per IP address per day, and only when the local database returned no country.<\/li>\n<li>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 <code>cartrevival_geo_provider_url<\/code> filter, or disable it in code with the <code>cartrevival_geo_remote_enabled<\/code> filter.<\/li>\n<li>Terms of service: https:\/\/ip-api.com\/docs\/legal<\/li>\n<li>Privacy policy: https:\/\/ip-api.com\/docs\/legal<\/li>\n<\/ul>\n\n<p><strong>3. Google reCAPTCHA v3 (bot filtering on capture) \u2014 only if you configure it<\/strong><\/p>\n\n<p>If you enter reCAPTCHA v3 keys under CartRevival \u2192 Settings \u2192 Capture, captures are verified with Google's siteverify endpoint.<\/p>\n\n<ul>\n<li>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.<\/li>\n<li>When: on each cart capture, while reCAPTCHA keys are configured.<\/li>\n<li>Terms of service: https:\/\/policies.google.com\/terms<\/li>\n<li>Privacy policy: https:\/\/policies.google.com\/privacy<\/li>\n<\/ul>\n\n<p><strong>4. cartrevival.com (opt-in usage telemetry) \u2014 off until you opt in<\/strong><\/p>\n\n<p>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.<\/p>\n\n<ul>\n<li>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.<\/li>\n<li>When: at most once per day, only after you opt in. You can change or withdraw the choice at any time under CartRevival \u2192 Settings \u2192 Compliance \u2192 Usage telemetry; withdrawing stops the pings and deletes the site token so past pings cannot be linked to you.<\/li>\n<li>Terms of service: https:\/\/cartrevival.com\/terms<\/li>\n<li>Privacy policy: https:\/\/cartrevival.com\/privacy<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce first.<\/li>\n<li>Upload the <code>cartrevival<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install through Plugins \u2192 Add New.<\/li>\n<li>Activate CartRevival.<\/li>\n<li>Go to <strong>CartRevival \u2192 Settings<\/strong> to choose how long a cart sits idle before it counts as abandoned.<\/li>\n<li>Go to <strong>CartRevival \u2192 Recovery<\/strong> to write your reminder email and switch it on.<\/li>\n<\/ol>\n\n<p>Sending is off by default. Nothing is ever emailed to a shopper until you enable it.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20this%20slow%20down%20my%20store%3F\"><h3>Will this slow down my store?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"does%20it%20capture%20guest%20carts%3F\"><h3>Does it capture guest carts?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"when%20is%20a%20cart%20considered%20abandoned%3F\"><h3>When is a cart considered abandoned?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20shopper%20comes%20back%20on%20their%20own%3F\"><h3>What happens if the shopper comes back on their own?<\/h3><\/dt>\n<dd><p>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 \u2014 your recovery numbers stay honest.<\/p><\/dd>\n<dt id=\"can%20a%20customer%20be%20emailed%20twice%20by%20mistake%3F\"><h3>Can a customer be emailed twice by mistake?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20block%20cart%20and%20checkout%3F\"><h3>Does it work with the block cart and checkout?<\/h3><\/dt>\n<dd><p>Yes. Both the classic shortcode checkout and the newer block checkout are supported, including capturing details entered in block checkout fields.<\/p><\/dd>\n<dt id=\"is%20it%20compatible%20with%20high%20performance%20order%20storage%3F\"><h3>Is it compatible with High Performance Order Storage?<\/h3><\/dt>\n<dd><p>Yes. HPOS compatibility is declared, and CartRevival works with it on or off.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20mobile%3F\"><h3>Does it work on mobile?<\/h3><\/dt>\n<dd><p>Yes, including exit intent. CartRevival detects an intent to leave on touch devices through scroll-up velocity and the back gesture.<\/p><\/dd>\n<dt id=\"is%20it%20gdpr%20compliant%3F\"><h3>Is it GDPR compliant?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"does%20it%20work%20in%20arabic%2C%20or%20any%20right-to-left%20language%3F\"><h3>Does it work in Arabic, or any right-to-left language?<\/h3><\/dt>\n<dd><p>Yes, fully. The plugin's own admin screens and messages are translated, and recovery emails follow <strong>the shopper's<\/strong> 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.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20paid%20account%20or%20a%20licence%20key%20to%20use%20this%3F\"><h3>Do I need a paid account or a licence key to use this?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"will%20it%20work%20with%20my%20theme%20and%20page%20builder%3F\"><h3>Will it work with my theme and page builder?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20uninstall%3F\"><h3>What happens to my data if I uninstall?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20a%20caching%20plugin%3F\"><h3>Does it work with a caching plugin?<\/h3><\/dt>\n<dd><p>Yes. CartRevival never blocks a cached page. If a cache serves a stale security token, the script quietly fetches a fresh one and retries.<\/p><\/dd>\n<dt id=\"how%20do%20i%20send%20whatsapp%20reminders%3F\"><h3>How do I send WhatsApp reminders?<\/h3><\/dt>\n<dd><p>WhatsApp reminders are free. Connect your WhatsApp number at 6rsh.com (free), then pick an approved message template under CartRevival \u2192 Recovery \u2192 WhatsApp. If the 6rsh WooCommerce plugin is already connected on your site, CartRevival uses that connection automatically.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.9.5<\/h4>\n\n<ul>\n<li><strong>Fixed: the Recovery screen's channel row was unreadable.<\/strong> It showed four named channels followed by four badges with no channel name at all \u2014 one of them a highlighted control attached to nothing \u2014 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.<\/li>\n<li>Fixed: Web Push could show \"Off\" and \"On\" at the same time \u2014 the row was reading the old per-step setting while the site-wide switch said otherwise. There is now one answer per channel.<\/li>\n<li>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.<\/li>\n<\/ul>\n\n<h4>2.9.4<\/h4>\n\n<ul>\n<li>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.<\/li>\n<\/ul>\n\n<h4>2.9.3<\/h4>\n\n<ul>\n<li><strong>Fixed: recovery emails could arrive in two languages at once.<\/strong> 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 \u2014 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.<\/li>\n<li>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 \u2014 correctly right-to-left if it is Arabic, left-to-right if it is not.<\/li>\n<li>Arabic wording now ships for every recovery email out of the box, so nothing is ever sent half-translated.<\/li>\n<li>Product names and prices inside a sentence no longer re-order the line around them in right-to-left emails.<\/li>\n<\/ul>\n\n<h4>2.9.2<\/h4>\n\n<ul>\n<li><strong>Fixed (PRO): automatic updates never worked.<\/strong> 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 \u2014 every PRO install stayed on whatever version it was first given. PRO now appears under Dashboard \u2192 Updates like any other plugin. <strong>PRO must be updated by hand this one time<\/strong>; from this version on it updates itself.<\/li>\n<li>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.<\/li>\n<li>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 \u2014 shown underneath \u2014 was that the licence had been suspended. The heading no longer guesses a cause.<\/li>\n<\/ul>\n\n<h4>2.9.1<\/h4>\n\n<ul>\n<li><strong>Fixed (important): the cart-saving popup could say \"Thanks! We saved your cart\" when nothing had been saved.<\/strong> Several outcomes \u2014 a visitor excluded by your settings, no session cookie, a rate limit, or a cart that could not be written \u2014 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.<\/li>\n<li><strong>Fixed: the early-capture popup rendered with no heading, no explanation and an unlabelled submit button<\/strong> on any site that had not typed its own wording into Settings \u2014 the defaults were empty. Sensible default copy now ships, and no popup can ever render a button with no label.<\/li>\n<li>Web push is now switched on or off in one place \u2014 CartRevival \u2192 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.<\/li>\n<\/ul>\n\n<h4>2.9.0<\/h4>\n\n<ul>\n<li>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 \u2014 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 \u2192 Compliance. See the External Services section.<\/li>\n<li>With CartRevival PRO active, the \"Upgrade to Pro\" tab no longer appears in any licence state \u2014 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.)<\/li>\n<li>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.<\/li>\n<\/ul>\n\n<h4>2.8.7<\/h4>\n\n<ul>\n<li>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.<\/li>\n<\/ul>\n\n<h4>2.8.6<\/h4>\n\n<ul>\n<li>Fixed: a merge tag that does not exist \u2014 {first_name} instead of {customer_name}, or one pasted from another mailer \u2014 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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>Fixed: the Manual nudge editor on the Recovery screen was rendered three times \u2014 once per email step \u2014 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.<\/li>\n<li>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\u20131 database queries to a page instead of 6\u20137.<\/li>\n<li>Accessibility: every control on every admin screen now has a name a screen reader can announce \u2014 the reCAPTCHA keys, the SMS and email-integration fields, each step's delay, subject and heading, and the row checkboxes on the Carts screen.<\/li>\n<li>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.<\/li>\n<li>Fixed: none of CartRevival PRO's own text was ever translated, in any language. Its translations are now loaded properly.<\/li>\n<li>Arabic is complete: 704 strings in this plugin and 497 in PRO, including all six plural forms.<\/li>\n<li>An unrecognised tracking event is now recorded in the tracking-health log instead of being dropped without a trace.<\/li>\n<\/ul>\n\n<h4>2.8.5<\/h4>\n\n<ul>\n<li>The coexistence handshake with the 6rsh WooCommerce plugin now uses a properly prefixed option, <code>cartrevival_engine_owner<\/code>. If 6rsh is installed but older than 1.7.1 \u2014 the release that reads the new name \u2014 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.<\/li>\n<li>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.<\/li>\n<li>Renamed three extension filters to drop a \"pro\" prefix that described nothing: <code>cartrevival_pro_owns_sending<\/code> is now <code>cartrevival_sending_owner<\/code>, <code>cartrevival_pro_channel_enabled<\/code> is now <code>cartrevival_channel_enabled<\/code>, and <code>cartrevival_pro_channel_configured<\/code> is now <code>cartrevival_channel_configured<\/code>.<\/li>\n<li>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.<\/li>\n<li>The carts CSV export no longer calls filesystem functions on the output stream.<\/li>\n<\/ul>\n\n<h4>2.8.4<\/h4>\n\n<ul>\n<li>Manual sending is fully free. Sending a reminder by hand \u2014 from the Carts list, from a cart's detail row, or from the Live visitor panel \u2014 now works for email and WhatsApp with nothing installed but this plugin. The Live panel previously refused and asked you to upgrade.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>Renamed the <code>sixrsh_get_connection<\/code> filter this plugin fires to <code>cartrevival_sixrsh_get_connection<\/code>. Reading the 6rsh plugin's own connection is unaffected.<\/li>\n<li>Requires WordPress 6.2 or newer (for identifier placeholders in prepared statements).<\/li>\n<\/ul>\n\n<h4>2.8.3<\/h4>\n\n<ul>\n<li>Added: per-cart recovery history timeline. The Carts screen now tells each cart's story \u2014 every send on every channel with its real outcome and the reason when one failed, restore-link clicks, applied coupons, recovery and unsubscribes \u2014 plus what is still scheduled.<\/li>\n<li>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 \u2014 the series can never double-send the same content.<\/li>\n<li>The free plugin keeps the last 7 days of history on screen, matching its analytics window.<\/li>\n<\/ul>\n\n<h4>2.8.2<\/h4>\n\n<ul>\n<li>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.<\/li>\n<\/ul>\n\n<h4>2.8.1<\/h4>\n\n<ul>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>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 \u2014 a WordPress site with no mail transport of its own.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>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) \u2014 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.<\/li>\n<li>A build-time size gate now fails any release whose core exceeds 4 KB gzipped, so the performance claim can never quietly rot.<\/li>\n<li>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.<\/li>\n<li>The storefront footprint is stated on the plugin dashboard, where you evaluate it.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>New: your CartRevival account at cartrevival.com \u2014 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.<\/li>\n<li>New: \"Refresh plan\" button next to the usage meter \u2014 see an upgrade the moment you buy it instead of waiting for the daily check.<\/li>\n<li>Upgrade links now take you straight to checkout for your exact site, so the purchase applies to the right licence automatically.<\/li>\n<li>A paid plan that ends (cancel or failed payments) now cleanly reverts the site to the Free tier's monthly cap \u2014 capture, dashboards and data all keep working; nothing is ever deleted.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>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 \u2014 with the reason (bot user agent, excluded role, country allowlist, rate limit) \u2014 so an empty Live screen is diagnosable at a glance instead of a mystery.<\/li>\n<li>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.<\/li>\n<li>API keys and tokens (6rsh, Twilio, BulkGate) can no longer be silently wiped: saving any settings form that omits the field \u2014 or leaves it blank \u2014 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.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Big one: CartRevival is now a single plugin with every feature built in for everyone \u2014 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.<\/li>\n<li>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 \u2014 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.<\/li>\n<li>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.<\/li>\n<li>Improved: bot and scraper traffic is filtered consistently everywhere \u2014 dashboard, carts and the recovery meter \u2014 so you never pay to \"recover\" a bot.<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>New: bot-clean analytics. Every dashboard number \u2014 abandonment rate, recoverable carts and revenue, recovered carts and revenue, and the chart \u2014 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.<\/li>\n<li>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.<\/li>\n<li>New: Recovery and Automation are now one page \u2014 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.<\/li>\n<li>New: Settings are reorganised into General, Capture, Connections, Compliance and Advanced tabs, each setting with a one-line explanation.<\/li>\n<li>Improved: web push opt-in now also triggers at add-to-cart, not just on the cart page, so more shoppers can be reached \u2014 asked once per session and never re-prompted after a decline.<\/li>\n<li>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.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>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 \u2192 WhatsApp, and abandoned carts with a phone number get a WhatsApp reminder. Sends count against your 6rsh plan's quota.<\/li>\n<li>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.<\/li>\n<li>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 \u2014 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.<\/li>\n<li>Fixed: saving one settings tab could reset options belonging to another tab (each form now only writes the fields it owns).<\/li>\n<li>Improved: an installed-but-unlicensed Pro now cleanly hands reminder scheduling back to the free plugin instead of leaving the store sending nothing.<\/li>\n<\/ul>\n\n<h4>1.3.4<\/h4>\n\n<ul>\n<li>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.<\/li>\n<\/ul>\n\n<h4>1.3.3<\/h4>\n\n<ul>\n<li>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.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Fixed: saving anything on the Settings screen produced a fatal error. This affected every 1.3.0 install and is the reason to update.<\/li>\n<li>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 \u2014 every one of its 490 strings is translated, up from 212.<\/li>\n<li>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.<\/li>\n<li>New: country allowlist under Settings -&gt; 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).<\/li>\n<li>New: Tools -&gt; 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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>Improved: known commercial proxy and scraping networks are now recognised. These are the addresses behind the repeated identical \"German\" carts some stores were seeing.<\/li>\n<li>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.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>New: automatic coexistence with the 6rsh Messaging &amp; 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.<\/li>\n<li>New: deactivating CartRevival hands cart recovery back to 6rsh automatically, so your store is never left without a recovery engine.<\/li>\n<li>New: when 6rsh is connected, CartRevival's WhatsApp recovery steps send through your existing 6rsh connection automatically \u2014 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.<\/li>\n<li>CartRevival continues to work exactly as before on stores where 6rsh is not installed. There is no dependency on 6rsh.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Cart capture for registered customers and guests.<\/li>\n<li>Live visitor and cart monitor.<\/li>\n<li>Abandonment detection with per-cart scheduling.<\/li>\n<li>Recovery attribution from orders back to carts.<\/li>\n<li>Editable recovery email with tokenized cart restore links.<\/li>\n<li>Exit intent popup for desktop and mobile.<\/li>\n<li>Dashboard reports and conversion funnel.<\/li>\n<li>CSV export, GDPR exporter and eraser, bot defense.<\/li>\n<\/ul>","raw_excerpt":"Abandoned cart recovery for WooCommerce with a live cart monitor: watch carts fill in real time, then win them back by email and WhatsApp.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/346255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=346255"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/cartrevival"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=346255"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=346255"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=346255"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=346255"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=346255"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=346255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}