Ecommerce Abandoned Cart Recovery
Recover lost sales with automated abandoned cart email reminders, analytics dashboard & customer segmentation.
Abandoned Cart Recovery
Automated Email Reminders & Cart Recovery for Odoo 17 eCommerce
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.
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
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 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
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
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
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
- Install Abandoned Cart Recovery from the Apps menu
- Go to Website > Configuration > Settings and find the Abandoned Cart section
- Enable the module and configure the abandonment threshold (default: 60 minutes)
- The heartbeat, email crons, and recovery links are all active immediately
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 SuiteWishlist & Favorites
Save favorites, price drop alerts, back-in-stock notifications, wishlist sharing, and analytics. Drives repeat visits and reduces cart abandonment.
$69
View ModuleBack 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 ModuleQuick View Modal
Fast product preview without leaving the shop page. Boosts conversion rates.
$30
ViewProduct Comparison
Side-by-side comparison for up to 4 products. Helps customers decide faster.
$35
ViewReviews & Ratings
Verified customer reviews with 5-star ratings, filters, and AJAX pagination.
$35
ViewSmart Dunning
Payment reminders & collection suite. Escalating dunning emails with automation.
€99
ViewSupport
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].
Secure checkout · No account required
Download link sent to your email after payment. Lost your link?
Powered by Stripe
- 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.