Ultimate Cart Recovery - User Guide (EN)
Recover abandoned carts on Adobe Commerce / Magento Open Source with automated multichannel sequences (email, SMS, WhatsApp, webhook), dynamic coupons, win-back campaigns and a recovered-revenue dashboard.
- Compatibility: Magento 2.4.6 / 2.4.7+, PHP 8.2 / 8.3, Luma + Hyvä.
- License: 1 production domain per license (dev/staging are free).
1. Installation
Via Composer (recommended)
composer require visicrea/module-ultimate-cart-recovery
bin/magento module:enable Visicrea_UltimateCartRecovery
bin/magento setup:upgrade
bin/magento setup:di:compile # production mode only
bin/magento cache:flush
Via package (.zip)
Unzip into app/code/Visicrea/UltimateCartRecovery, then run the same
module:enable → setup:upgrade → cache:flush sequence.
Verify:
bin/magento module:status Visicrea_UltimateCartRecovery
2. License activation
- Buy a license at the Visicrea portal - you receive a key like
VCR-XXXX-XXXX-XXXX-XXXX. - Activate it:
bash bin/magento ucr:license:activate VCR-XXXX-XXXX-XXXX-XXXXor in Stores → Configuration → Ultimate Cart Recovery → License. - The module checks the license once per 24 h. If the server is unreachable a
7-day grace period applies, then a growing banner for 30 days. Beyond
that, sending is disabled (dashboard and data stay available). Dev/staging
hosts (
dev,staging,preprod,test,local,localhost, or developer mode) never consume the license.
Check license state any time:
bin/magento ucr:debug:license
3. Setup wizard
The first time you open Ultimate Cart Recovery in the admin, an 8-step wizard guides you:
- License - enter/validate your key.
- Store scope - which store views are active.
- Mailers - sender identity, Mailgun/SMTP settings.
- Channels - enable email and, optionally, SMS/WhatsApp/webhook.
- Rule - create your first recovery sequence.
- Cron - confirm Magento cron is running (a non-blocking health check runs).
- Test - send yourself a real test email.
- Finish - review and go live.
You can re-run configuration any time under Stores → Configuration.
4. How detection works
A cron (DetectAbandonedCarts, every 10 min) flags quotes that have been
inactive past your threshold and inserts them into the tracking table. A second
cron (ProcessSequences) evaluates your rules and sends the due step. A third
(CheckConversions) matches the quote to a placed order within the attribution
window (default 7 days) and records the recovered revenue.
Dry-run mode (
Ultimate Cart Recovery → General → Dry run) runs the whole pipeline without sending anything - ideal for validating rules safely.
5. Creating recovery rules
Under Ultimate Cart Recovery → Rules:
- Trigger & conditions - target by cart total, customer group, store, etc.
- Steps (1 to 5) - each step has a channel, a delay (e.g. +1 h, +24 h, +72 h), a template, and an optional coupon.
- Priority - when several rules match, the highest priority wins.
Variables available in templates include {{customer_firstname}},
{{cart_items}}, {{cart_total}}, {{restore_url}}, {{coupon_code}},
{{unsubscribe_url}} (see the template editor for the full list).
6. Channels
- Email - uses Magento's transactional email. Open tracking (pixel) and click tracking (HMAC-signed redirects) are built in.
- SMS / WhatsApp - via Twilio or Brevo; configure your provider credentials (stored encrypted). A daily fallback cap protects against runaway costs.
- Webhook - POST signed payloads to your own endpoint for custom channels.
7. Coupons
Rules can attach a dynamically generated coupon (VCR{tracking}-{hex}) built on a
Magento Sales Rule. Expired coupons are cleaned up daily.
8. GDPR
- One-click unsubscribe (
/abandoned-cart/unsubscribe/{token}); the unsubscribe list is never purged and is checked before every send. - Data export / erasure:
bash bin/magento ucr:export:gdpr customer@example.com bin/magento ucr:delete:gdpr customer@example.com - Configurable retention (
PurgeOldDatacron) deletes old logs (default 12 months); unsubscribe records are kept.
9. Dashboard
Ultimate Cart Recovery → Dashboard shows recovered revenue, conversion rate,
and per-channel performance (CTR-first). Revenue is recorded in the store's base
currency using the order's frozen base_grand_total.
10. Troubleshooting
| Symptom | Check |
|---|---|
| Nothing is detected | Is Magento cron running? bin/magento cron:run; check threshold. |
| No emails sent | Dry-run enabled? Mailer configured? Recipient on unsubscribe list? |
| License banner shown | bin/magento ucr:debug:license - verify connectivity to the license server. |
| Inspect one cart | bin/magento ucr:debug:cart {quote_id} (tokens are masked). |
| Force a run | bin/magento ucr:detect, ucr:process, ucr:check-conversions. |
Logs: var/log/visicrea_ucr.log (and visicrea_ucr_debug.log in debug mode).
11. Support
Contact: florent@visicrea.fr. Include your Magento/PHP versions, the module version, and the relevant log excerpt.