IdeaPlugins · WooCommerce
Abandoned Cart Recovery for WooCommerce
Complete documentation for configuring the recovery popup, coupon offers, countdown timers, triggers, responsive behavior and built-in conversion statistics.
Version 1.2.0
WordPress 5.5+
PHP 7.2+
WooCommerce 4.0+
WooCommerce 9.4 tested
1. Overview
Abandoned Cart Recovery for WooCommerce is an on-site recovery popup for WooCommerce stores. It can present a visitor with a reminder, incentive and call-to-action before the visitor leaves or after the visitor enters a page.
The popup can contain an eyebrow label, title, subtitle, optional image, coupon code with one-click copy, countdown timer, CTA button and dismiss link. The visual appearance is controlled independently through the Appearance screen.
Important: The current version is an on-site popup solution. It does not send abandoned-cart emails, SMS messages or external marketing campaigns. The built-in statistics measure popup interactions such as impressions, coupon copies and CTA clicks.
What happens after activation?
- WooCommerce must be installed and active.
- The plugin creates its own settings and statistics tables.
- Default popup content is loaded so the popup is immediately usable.
- The popup is enabled by default and uses On Exit Intent as its default trigger.
- The popup is suppressed on WooCommerce Cart, Checkout and Order Received pages.
- Frontend CSS and JavaScript are only enqueued when the popup is eligible to be displayed.
Default configuration
| Setting | Default |
| Popup | Enabled |
| Trigger | On Exit Intent |
| Entrance delay | 4 seconds |
| Exit sensitivity | 20 px from the top |
| Frequency | Once per session |
| Devices | Desktop, Tablet and Mobile |
| Coupon | Enabled — SAVE10 |
| Countdown | Enabled — 15 minutes |
| Image | Disabled |
| Animation | Zoom In |
| Popup width | 420 px |
| Corner radius | 24 px |
2. Installation & First Setup
Requirements
- WordPress 5.5 or higher
- PHP 7.2 or higher
- WooCommerce 4.0 or higher
- WooCommerce must be installed and active.
Install from a ZIP file
- Open WordPress Admin → Plugins → Add New → Upload Plugin.
- Select the plugin ZIP file.
- Click Install Now.
- Activate the plugin.
- Open Cart Recovery from the WordPress admin menu.
First configuration checklist
- Open General and confirm the popup is enabled.
- Select the device types where the popup should appear.
- Open Popup Content and replace the default message with your store's offer.
- If using a coupon, create the matching WooCommerce coupon under WooCommerce → Marketing → Coupons.
- Configure the CTA text and optional destination URL.
- Open Appearance and match the popup to your brand.
- Open Triggers & Behavior and choose when the popup should appear.
- Save your settings and test the storefront in a private/incognito browser window.
WooCommerce dependency: If WooCommerce is missing or inactive, the plugin does not bootstrap its functionality and displays an admin notice instead of producing a fatal error.
3. Dashboard
Open Cart Recovery → Dashboard to see a quick summary of the popup and its performance.
Performance cards
| Metric | Meaning |
| Popup Shown | Total number of recorded popup impressions. |
| Coupon Copied | Total number of successful coupon-copy interactions recorded by the frontend. |
| Button Clicked | Total CTA click interactions. |
| Popup Closed | Total dismiss/close interactions, including the close button, dismiss link, overlay click and Escape key. |
| Conversion Rate | Calculated from CTA clicks plus coupon copies divided by popup impressions. |
Configuration Summary
The dashboard also shows the current popup status, trigger, coupon status/code, countdown duration and enabled device types.
Conversion formula: (CTA Clicks + Coupon Copies) ÷ Popup Shown × 100. The result is rounded to one decimal place. A popup with no impressions has a conversion rate of 0%.
4. General Settings
The General screen controls the global status, supported devices and frequency rules.
Status
Enable popup turns the recovery popup on or off site-wide. The same switch is also available in the plugin's top admin bar and dashboard.
Show on devices
Select one or more device classes:
- Desktop — viewport width above 1024 px.
- Tablet — viewport width from 561 px through 1024 px.
- Mobile — viewport width of 560 px or less.
If a device is not selected, the frontend prevents the popup from appearing on that device class.
Display Frequency
| Option | Behavior |
| Once per session | After the popup is shown, it will not be shown again during the current browser session. |
| Once per day | After being shown, the popup is suppressed for 24 hours using browser local storage. |
| Every page load | The frequency guard does not block the popup, so each eligible page load can trigger it. |
Browser storage: Frequency control uses sessionStorage and/or localStorage in the visitor's browser. If browser storage is unavailable, the script falls back to allowing the popup.
5. Popup Content
This section controls everything the visitor sees inside the recovery popup.
Text
| Field | What it controls |
| Eyebrow | Small label displayed above the main title. Example: “Your Cart is Waiting!” |
| Title | Main recovery message. The final one or two words are automatically displayed using the accent gradient. |
| Subtitle | Supporting message below the title. |
| Button text | Text displayed on the main CTA button. |
| Button link | Destination opened when the visitor clicks the CTA. If left empty, the plugin automatically uses the WooCommerce cart URL. |
| Dismiss link text | Text of the secondary “No thanks” style dismissal link. |
Image
Enable Image to display a promotional image inside the popup.
- Choose Image opens the standard WordPress Media Library.
- Remove removes the selected image.
- Top banner displays the image above the popup content.
- Side (left) places the image on the left on larger screens.
The popup automatically adds a dark readability gradient over images. On tablet-sized screens, a left-side image changes to a stacked layout. On mobile, the image becomes a top section and is limited to a 150 px display height.
Coupon Code
Enable Coupon Code to show a coupon block with one-click copy.
| Field | Purpose |
| Coupon code | The code shown to visitors. The plugin sanitizes the value and converts it to uppercase. |
| Helper text under code | Small explanatory text below the coupon code. |
| Copy button text | Label/accessible text used before copying. |
| “Copied” confirmation text | Text used after a successful copy interaction. |
Important: The plugin displays the code but does not create the WooCommerce coupon for you. Create a matching coupon under WooCommerce → Marketing → Coupons. The popup code must match the actual coupon you want customers to use.
Countdown Timer
Enable Countdown Timer to add urgency to the offer.
- Hours — 0 to 999.
- Minutes — 0 to 59.
- Seconds — 0 to 59.
- Label text — message displayed above the timer.
- Expired text — message shown after the timer reaches zero.
The current version stores the duration as separate hours, minutes and seconds. A completely zero duration is automatically corrected to a safe one-minute duration.
Visitor timer behavior: The countdown creates a deadline in sessionStorage. Once created, the same browser session continues using that stored deadline instead of restarting the countdown every time the popup is opened.
6. Appearance
Use Cart Recovery → Appearance to match the popup to your store's visual identity.
Colors
| Setting | Purpose |
| Background color | Main popup background. |
| Title color | Main title color. |
| Subtitle color | Supporting text color. |
| Accent color (start) | Start color of the gradient used by the title highlight and CTA. |
| Accent color (end) | End color of the gradient. |
| Button text color | Text/icon color used inside the CTA button. |
| Overlay color | Color of the backdrop behind the popup. |
| Overlay opacity | Controls how dark/visible the backdrop appears. |
Typography
- Title font size: 10–60 px.
- Subtitle font size: 10–40 px.
Layout & Animation
- Popup width: 280–900 px.
- Corner roundness: 0–60 px.
- Entrance animation: Zoom In, Fade In or Slide Up.
Live Style Preview
The admin panel includes a small style-preview area. The panel itself instructs you to save your changes and check the storefront for the full popup rendering.
7. Triggers & Behavior
This screen determines when the popup should be triggered.
Trigger Type
| Trigger | How it works |
| On Exit Intent | On desktop-style pointer behavior, the popup appears when the pointer leaves the page toward the top browser area. |
| On Page Enter | The popup appears automatically after the configured entrance delay. |
| Both | Enables both the entrance-delay trigger and exit-intent trigger. |
Entrance delay
The field accepts 0–120 seconds and is used only with On Page Enter or Both.
Exit sensitivity
The field accepts 1–200 px and defines how close the pointer must be to the top of the viewport for the desktop exit-intent detector. The default is 20 px.
Mobile-friendly exit fallback
Because traditional mouse exit intent is not available on touch devices, the frontend also listens for a fast upward scroll near the top of the page. If the visitor scrolls upward by more than 40 px while the page is below 120 px from the top, the popup can be triggered when the exit trigger is enabled.
Closing the popup
A visitor can dismiss the popup in four ways:
- Click the top-right close icon.
- Click the configured dismiss link.
- Click the overlay outside the popup.
- Press the Escape key while the popup is open.
All of these dismissal methods are recorded as Popup Closed events.
Store-page exclusions: The plugin never renders the recovery popup on the WooCommerce Cart, Checkout or Order Received pages. This prevents the recovery message from interfering with the pages where customers are already completing or confirming an order.
8. Statistics
The Statistics screen provides the detailed interaction view for the recovery popup.
Available metrics
- Total Impressions — number of
popup_shown events.
- Coupon Copies — number of
coupon_copied events.
- CTA Clicks — number of
button_clicked events.
- Conversion Rate — CTA clicks plus coupon copies divided by impressions.
Last 14 Days chart
The Statistics screen contains a 14-day chart showing:
- Popup Shown
- Button Clicked
- Coupon Copied
The chart is based on the event records stored by the plugin and uses UTC date grouping for the daily dataset.
Privacy and event data
Statistics are stored in the plugin's own database table. Public event requests are nonce-protected, and the recorded IP value is anonymized before storage:
- IPv4 addresses have the final octet replaced with
0.
- IPv6 addresses are reduced to the first four segments and appended with
::.
Coupon-copy events may also store the coupon code as the event metadata value.
9. Advanced
Delete all data on uninstall
This option controls what happens when the plugin is deleted from WordPress.
- Disabled: deleting the plugin does not remove its settings or statistics.
- Enabled: deleting the plugin permanently removes its settings, version/activation options and plugin statistics/cart tables.
Important: Deactivation is non-destructive. Updates are also non-destructive. Permanent cleanup is only performed during plugin deletion when this setting was explicitly enabled.
Plugin information
Safe updates
The plugin uses a non-destructive upgrade routine. Existing settings are merged with newly introduced default keys instead of being overwritten. The database tables are updated using WordPress's dbDelta() mechanism.
10. Recommended Store Setup
The following setup provides a straightforward starting configuration for most WooCommerce stores.
Step 1 — Create the real coupon
Go to WooCommerce → Marketing → Coupons and create the coupon you want to offer. For example, if the popup displays SAVE10, the WooCommerce coupon should also use SAVE10.
Step 2 — Configure the message
Use a short, clear recovery message. The default title is:
Don't Leave Your Items Behind
Replace it with copy that matches your store and offer.
Step 3 — Configure the CTA
The default CTA is Go to Cart. Leaving the link empty automatically points the button to the WooCommerce cart URL.
Step 4 — Choose a trigger
For a less intrusive setup, use On Exit Intent. For an immediate promotional message, use On Page Enter with an appropriate delay. Both combines the two mechanisms.
Step 5 — Choose frequency
Once per session is the default and prevents the popup from repeatedly interrupting the same browsing session.
Step 6 — Test in a clean browser session
Because frequency rules use browser storage, testing is easiest in a private/incognito window or after clearing the relevant site storage.
11. Troubleshooting
The popup does not appear
- Confirm the global Enable popup switch is enabled.
- Confirm your current device type is selected under General → Show on devices.
- Make sure you are not testing on Cart, Checkout or Order Received pages.
- Check the selected trigger and its delay/sensitivity.
- If frequency is set to Once per session or Once per day, test in a clean private window.
- Check that WooCommerce is active.
- Clear aggressive page/cache layers if your site is serving an old cached version.
The coupon button copies the code, but the discount does not apply
The plugin only displays and copies the code. It does not create or configure the WooCommerce coupon. Verify that the same code exists under WooCommerce → Marketing → Coupons and that the coupon's WooCommerce rules allow the intended customer/cart.
The countdown appears expired
Check the configured hours, minutes and seconds. A completely zero duration is automatically changed to one minute. Also remember that the countdown deadline is stored in browser session storage, so an existing session may continue an earlier timer.
The image layout looks different on mobile
This is intentional. Side images stack above the content on smaller screens. On mobile, the popup uses a bottom-aligned layout with a maximum height of 92vh to keep the interface usable.
My settings disappeared after an update
The plugin's update routine is designed not to overwrite existing settings. If settings appear missing, verify that you are viewing the same WordPress site/database and that the plugin option has not been modified by another migration or cleanup process.
12. FAQ
Does the plugin require WooCommerce?
Yes. The plugin checks for an active WooCommerce installation before bootstrapping its functionality.
Does it send abandoned-cart emails?
No. The current plugin is an on-site popup recovery system. It does not provide an email automation or SMS campaign system.
Can I use my own coupon code?
Yes. Enter your WooCommerce coupon code under Popup Content → Coupon Code and make sure the corresponding coupon exists in WooCommerce.
Can I remove the coupon?
Yes. Turn off the Coupon Code switch in Popup Content.
Can I remove the countdown?
Yes. Turn off the Countdown Timer switch.
Can I use a custom CTA URL?
Yes. Enter a URL in Button link. If it is empty, the plugin uses the WooCommerce cart URL automatically.
Can I show the popup only on selected device types?
Yes. Desktop, Tablet and Mobile can be enabled independently.
Will the popup show on checkout?
No. Cart, Checkout and Order Received pages are explicitly excluded from frontend rendering.
Are updates safe?
The plugin is designed for non-destructive updates. Existing settings are preserved and new default keys are merged in without replacing customized values.
What happens when I deactivate the plugin?
Deactivation does not delete plugin settings or statistics.
What happens when I delete the plugin?
Nothing is permanently removed unless Delete all data on uninstall was enabled in Advanced settings before deletion.
13. Changelog
Version 1.2.0
- Countdown Timer duration now uses separate Hours, Minutes and Seconds fields.
- Countdown duration validation prevents an all-zero timer.
- Countdown and Coupon Code remain enabled by default.
- Existing settings are preserved during updates.
Version 1.0.0
- Initial release.
- Exit-intent, entrance and combined triggers.
- Custom popup content and appearance.
- Coupon copy interaction.
- Countdown timer.
- Responsive desktop, tablet and mobile UI.
- Built-in interaction statistics.