Ecommerce Abandoned Cart Recovery icon
Website/eCommerce

Ecommerce Abandoned Cart Recovery

Recover lost sales with automated abandoned cart email reminders, analytics dashboard & customer segmentation.

Odoo 17Odoo 18Odoo 19

Abandoned Cart Recovery

Automated Email Reminders & Cart Recovery for Odoo 17 eCommerce

FREE & Open Source Odoo 17.0+ LGPL-3 License Guest Cart Recovery
Install Free — Abandoned Cart Recovery

Free lifetime updates & bug fixes · LGPL-3 License

What's Included

Everything you need to recover lost sales from abandoned carts

What You Get Details
Automatic Abandonment Detection JavaScript heartbeat tracks cart activity; configurable inactivity threshold (default: 60 min)
Email Recovery Sequences Up to 3 escalating HTML emails: friendly nudge, gentle follow-up, final urgent notice
Guest Cart Recovery Captures email during checkout so even non-logged-in shoppers can be recovered
Secure Recovery Links UUID4 token-based cart restoration with configurable expiry (default: 72 hours)
Multi-Website Support Each website tracked independently with correct base URL resolution
Analytics Dashboard Pivot and graph views for recovery rate, revenue recovered, email performance
Professional Email Templates Responsive HTML emails with Jinja rendering and partner language detection
Admin Dashboard Manage all abandoned carts from a single tree/form interface with search filters
Bulk Actions Send reminders or resolve multiple carts at once from the list view
Rate Limiting IP-based rate limiting on heartbeat (40 req/min) and email capture (5 req/5 min)
Mobile Responsive All frontend components, emails, and recovery pages work on any device
Clean Uninstall All data, tables, and config parameters properly cleaned on module removal

Overview

Recover up to 70% of abandoned carts automatically

Smart detection via a 30-second heartbeat system. When a customer leaves the cart page without purchasing, the module detects inactivity and automatically marks the cart as abandoned after a configurable threshold.

Escalating email sequences bring customers back. Up to 3 professional HTML emails with increasing urgency, each containing a secure one-click link back to their cart.

Guest cart recovery captures the customer's email during checkout — even if they never log in. No sale is lost just because a customer didn't create an account.

Full analytics with pivot tables and graphs. Track recovery rates, revenue recovered, email performance, and trends over time to optimize your strategy.

3
Cron Jobs
3
Email Templates
12
Settings
100%
Free

Key Features

Everything you need for cart recovery on your Odoo store

Automated Email Recovery

Up to 3 escalating reminder emails sent automatically. Polite, firm, then urgent — each with a professional responsive design.

Secure Recovery Links

UUID4 token-based cart restoration links with configurable expiry. One-click return to cart — no login required.

Guest Cart Recovery

Captures email during checkout so even guest shoppers can be recovered. Non-intrusive widget that fires on blur.

Analytics Dashboard

Pivot and graph views for recovery rate, revenue recovered, email performance. Track trends by week or month.

Multi-Website Support

Works correctly in multi-website environments. Each website tracked independently with correct URL resolution.

Bulk Actions

Send reminders or resolve multiple abandoned carts at once from the list view. Save time on manual operations.

Rate Limiting

IP-based rate limiting on heartbeat (40 req/min) and email capture (5 req/5 min). Built-in protection against abuse.

Mobile Responsive

All frontend components, email templates, and recovery pages work perfectly on any device or screen size.

12 Configurable Settings

Threshold, delays, max emails, intervals, expiry, guest recovery, link validity, 3 email templates — all adjustable from Settings.

See It In Action

Screenshots from the Odoo backend

Admin Dashboard — Abandoned Cart List

Odoo backend showing the abandoned cart list view with status badges, cart amounts, recovery email counts, and click tracking

The main Abandoned Carts list view shows every tracked cart with status badges, cart value, item count, number of emails sent, and whether the recovery link was clicked. Color-coded decorations highlight abandoned, email-sent, recovered, and expired carts at a glance. Bulk actions let you send reminders or resolve multiple carts at once.

Professional Email Templates

Three professional HTML email templates: friendly reminder in purple, gentle follow-up in green, and urgent final notice in red

Three responsive HTML email templates with escalating urgency: a purple friendly nudge, a green gentle follow-up, and a red final notice. Each email includes the cart total and a prominent one-click recovery button. Templates use Jinja rendering for dynamic content and support partner language detection.

Settings Panel

Odoo Settings panel showing Abandoned Cart Recovery configuration: enable toggle, abandonment threshold, email delay, max emails, interval, expiry, guest recovery, link validity

All configuration lives in Website > Configuration > Settings under the Abandoned Cart Recovery section. Toggle the module on/off, set the abandonment threshold, configure email delays and intervals, enable guest recovery, and set recovery link validity — all from one clean settings panel.

Analytics Dashboard

Pivot and graph views showing abandoned cart analysis: cart amounts by state, recovery trends by month, email performance metrics

The Cart Analytics dashboard provides pivot tables and graphs to analyze abandonment trends, recovery rates, and revenue recovered. Filter by state, group by customer or website, and track performance over weekly or monthly intervals to optimize your recovery strategy.

Why Install Abandoned Cart Recovery?

See what you get vs. Odoo out of the box

Feature Odoo Default Abandoned Cart Recovery
Abandoned cart detection No detection at all Automatic via 30s heartbeat
Recovery emails Not available Up to 3 escalating emails
Guest cart recovery Not available Email capture at checkout
Recovery links Not available Secure token-based, time-limited
Analytics dashboard Not available Pivot + graph views
Email templates Not available 3 responsive HTML templates
Multi-website support N/A Per-website tracking
Bulk actions Not available Send reminders / resolve in bulk
Rate limiting N/A IP-based on all endpoints
Auto-converted detection Not tracked Auto-marks when order confirmed
Price Free (no feature) Free (LGPL-3)

Technical Specifications

Built with Odoo best practices

Dependencies:

  • base
  • web
  • website
  • website_sale
  • product
  • sale
  • mail

Compatibility:

  • Odoo 17.0 Community Edition
  • Odoo 17.0 Enterprise Edition
  • Bootstrap 5 compatible
  • Works with all standard themes

Automation:

  • Scan & mark abandoned carts — every 15 min
  • Send recovery emails — every 30 min
  • Check recovered carts — every 1 hour

API Endpoints:

  • /cart/current_order — Session cart lookup (JSON-RPC)
  • /cart/activity — Heartbeat (JSON-RPC, 40 req/min)
  • /cart/capture_email — Guest email capture (5 req/5 min)
  • /cart/recover/<token> — One-click cart recovery
  • /cart/unsubscribe/<token> — One-click email opt-out

File Structure:

ecommerce_abandoned_cart/
├── controllers/
│   └── main.py               # 5 JSON/HTTP endpoints
├── data/
│   ├── cron_data.xml          # 3 automated crons
│   ├── default_config.xml     # 12 default settings
│   └── mail_template_data.xml # 3 email templates
├── models/
│   ├── abandoned_cart.py      # Core model
│   ├── res_config_settings.py # Settings panel
│   └── sale_order.py          # Cart activity + conversion
├── security/
│   ├── abandoned_cart_security.xml  # Groups & rules
│   └── ir.model.access.csv    # ACL permissions
├── static/
│   ├── description/
│   │   ├── icon.png
│   │   ├── index.html
│   │   ├── admin_dashboard.png
│   │   ├── email_templates.png
│   │   ├── settings_page.png
│   │   └── analytics_dashboard.png
│   └── src/
│       ├── css/
│       │   └── abandoned_cart.css
│       └── js/
│           ├── cart_activity_tracker.js
│           └── email_capture.js
├── views/
│   ├── abandoned_cart_views.xml  # Tree/form/search
│   ├── dashboard_views.xml       # Pivot/graph
│   ├── recovery_page_template.xml
│   ── res_config_settings_view.xml
├── wizards/
│   ├── abandoned_cart_bulk_action_wizard.py
│   └── abandoned_cart_bulk_action_wizard_views.xml
├── __init__.py
├── __manifest__.py
├── hooks.py                      # Clean uninstall
├── LICENSE
└── README.md

Perfect For

Ideal for these business types

  • Online Retailers — Recover lost sales from shoppers who leave items in their cart
  • B2B Stores — High-value carts deserve follow-up to close the sale
  • Fashion & Apparel — Win back shoppers comparing prices across stores
  • Electronics — Recover considered purchases with urgent final reminders
  • Subscription Products — Recover near-complete signups before they lapse
  • Multi-Website Stores — Track abandonment independently per website
  • High-Traffic Stores — Even a 5% recovery rate can mean significant revenue
  • Any Odoo eCommerce — If you use website_sale, this module adds immediate value

Quick Configuration

Get started in minutes

  1. Install Abandoned Cart Recovery from the Apps menu
  2. Go to Website > Configuration > Settings and find the Abandoned Cart section
  3. Enable the module and configure the abandonment threshold (default: 60 minutes)
  4. The heartbeat, email crons, and recovery links are all active immediately
Zero configuration needed: Install the module and it starts tracking carts immediately. The default settings (60 min threshold, 3 emails, 24h interval) work well for most stores. Fine-tune later as you learn your customers' behavior.

How It Works

From cart abandonment to recovered sale in 4 steps

Step 1 — Customer adds items to cart

A JavaScript widget sends a heartbeat every 30 seconds while the customer is on the cart page. The cart value and item count are tracked automatically.

Step 2 — Customer leaves without purchasing

When the heartbeat stops and the inactivity threshold is exceeded (default: 60 minutes), the cart is automatically marked as abandoned.

Step 3 — Recovery email is sent

A professional HTML email with a direct link back to their cart is sent automatically. Up to 3 reminders at increasing urgency if the customer doesn't return.

Step 4 — Customer clicks and completes purchase

The one-click recovery link takes them back to their cart. When the order is confirmed, the cart is automatically marked as converted. Revenue recovered!

Email Delivery — How & When Emails Actually Go Out

Everything you need to know about delivery timing and troubleshooting

Emails are queued, not sent instantly

Like every email in Odoo (invoices, order confirmations, notifications), recovery reminders are queued through Odoo's standard mail system. The module creates a mail.mail record in the outgoing queue instead of connecting to your SMTP server directly. This keeps the automation crons fast and never blocks them on a slow mail server.

Who delivers the queue?

Odoo's built-in scheduled action "Mail: Email Queue Manager" (Settings > Technical > Scheduled Actions) picks up queued emails and sends them. Its default interval in Odoo 17 is once per hour — so a queued recovery email can wait up to ~60 minutes before it is actually delivered, depending on when it was queued relative to the last run.

"Emails Sent" counts when queued, not delivered

On a cart, Emails Sent and Last Email Sent On are recorded the moment the email is created in the queue — not when it leaves your server. If a customer says "I never received the email", check the actual delivery state, not the cart counter.

Checklist when an email doesn't arrive

  • Is an outgoing mail server configured (Settings > General > Discuss > Outgoing Mail Servers) with valid credentials?
  • Check the recipient's Inbox and Spam — mail from datacenter IPs is often filtered.
  • Inspect the queue: Settings > Technical > Email > Outgoing Mail. State outgoing = still waiting; exception = delivery failed (the reason is stored on the record).
  • Click Send on the queued message (or run the "Mail: Email Queue Manager" cron) to force delivery now.
  • For faster delivery, lower the interval of "Mail: Email Queue Manager" (e.g. to every 5 minutes) — recovery emails then leave within minutes of being queued.

Frequently Asked Questions

Common questions about Abandoned Cart Recovery

How does the abandoned cart detection work?

A JavaScript heartbeat sends a signal every 30 seconds while the customer is on the cart page. When the heartbeat stops and the configurable inactivity threshold is exceeded, the cart is automatically marked as abandoned and recovery emails begin.

Can I recover guest carts without login?

Yes. The module captures the customer's email address during checkout via a non-intrusive widget. Even if the customer never creates an account, you can still send recovery emails.

How many recovery emails are sent?

Up to 3 escalating reminders: a friendly nudge, a gentle follow-up, and a final urgent notice. The number of emails, delay before the first email, and interval between emails are all configurable.

Does it work with multi-website setups?

Yes. Each website is tracked independently. Recovery links use the correct website base URL, and the analytics dashboard shows per-website breakdowns.

I enabled Auto-Send but no email arrives. Why?

The module queues recovery emails through Odoo's standard mail system. Odoo's built-in "Mail: Email Queue Manager" cron delivers them, and by default it runs once per hour. If nothing arrives, verify an outgoing mail server is configured, check the recipient's spam folder, and look at Settings > Technical > Email > Outgoing Mail for failed (exception) messages. See the Email Delivery section above.

Is this module really free?

Yes. Abandoned Cart Recovery is 100% free and open source under the LGPL-3 license. Free lifetime updates, no hidden fees, no per-user charges.

Complete Your Conversion Toolkit

These modules work alongside Abandoned Cart Recovery to maximize revenue at every stage of the customer journey

E-Commerce Suite All-in-One

10+ features in one bundle: Quick View, Wishlist, Comparison, Bundles, Stock Alerts, Reviews, Recently Viewed & more.

$160 (Save $94+)

View Suite

Wishlist & Favorites

Save favorites, price drop alerts, back-in-stock notifications, wishlist sharing, and analytics. Drives repeat visits and reduces cart abandonment.

$69

View Module

Back in Stock Alerts

Automated email notifications when out-of-stock products are restocked. Captures customer emails and recovers lost sales from unavailable items.

$35

View Module

Quick View Modal

Fast product preview without leaving the shop page. Boosts conversion rates.

$30

View

Product Bundles & Kits

Combo deals and smart bundles to increase average order value.

$40

View

Product Comparison

Side-by-side comparison for up to 4 products. Helps customers decide faster.

$35

View

Reviews & Ratings

Verified customer reviews with 5-star ratings, filters, and AJAX pagination.

$35

View

Recently Viewed

Browsing history carousel that helps customers rediscover products.

$10

View

B2B Pricing Suite

Tiered pricing, MOQ, quantity steps & volume discounts for wholesale.

$79

View

Smart Dunning

Payment reminders & collection suite. Escalating dunning emails with automation.

€99

View

Announcement Bar

Promo banners, sticky header announcements, and countdown timers.

€49

View

Support

For technical support or feature requests, contact [email protected]

Abandoned Cart Recovery v17.0.2.0.0 | Developed by Hexalian LLC

License: LGPL-3. This software is provided "as is", without warranty of any kind.

Compare all Odoo eCommerce modules in our 2026 roundup or browse the full eCommerce collection.

Before You Buy

  • Confirm your Odoo version: v17, v18, v19.
  • Review module scope carefully to validate your exact use case.
  • Plan installation on staging first, then deploy to production.
  • Need help evaluating fit? Email [email protected].
Free
One-time purchase · Instant download

Secure checkout · No account required

Download link sent to your email after payment. Lost your link?

Powered by Stripe

What You Get
Complete module source code, instant email delivery, and version coverage for Odoo 17, Odoo 18, Odoo 19. No subscription lock-in.
  • 100% source code included
  • Lifetime access to download
  • Odoo 17 & 18 & 19 supported
  • Email delivery (72h link)
  • Sold as-is under OPL1 — all sales final

Production-grade Odoo modules with full source code.

Changelog — Odoo 19
v19.0.1.0.1

More in Website/eCommerce

B2B Quick Order & Bulk Order Form | CSV Upload, Clipboard Paste, Saved Lists
B2B Quick Order & Bulk Order Form | CSV Upload, Clipboard Paste, Saved Lists
From $59.99

Spreadsheet-Style Quick Order Page for B2B | CSV Upload | Paste from Excel | Saved Order Lists | SKU/Barcode Search | Real-Time Stock & Pricing

Website Promo Banner & Announcement Bar | Sticky Header, Countdown Timer, Analytics
Website Promo Banner & Announcement Bar | Sticky Header, Countdown Timer, Analytics
From $49.99

Website Announcement Bars with Countdown Timers, Click Analytics, Visitor Targeting, URL Filtering & 30 Ready-to-Use Templates (B2B + eCommerce)