Abandoned Carts
Navigate to yStore → Marketing → Abandoned Carts.
The Abandoned Carts list shows every cart that was started but not completed. It is your primary tool for monitoring lost sales in real time and manually triggering recovery actions. For automated recovery (scheduled emails, multi-step sequences), use the Flow Manager with the Cart Abandoned trigger.
What counts as abandoned
A cart is considered abandoned when it has not been updated for longer than the configured timeout threshold. The threshold is set at:
yStore → Settings → Sales → Marketing → Abandoned Cart Timeout
The default is 60 minutes. After this period without any cart activity, the cart appears in the abandoned list and the Cart Abandoned flow trigger fires.
Abandoned carts are tracked for both registered customers and guests. Guest carts show an email address only if the guest entered one during a partial checkout. Carts without any email cannot be targeted by recovery emails.
List columns
| Column | Description |
|---|---|
| Cart ID | Internal cart reference |
| Customer | Linked customer account, or email if guest, or "Anonymous" |
| Items | Number of line items in the cart |
| Total | Cart subtotal at abandonment time |
| Abandoned at | When the cart was last updated before going idle |
| Recovery status | Not recovered / Recovered |
| Emails sent | Number of recovery emails sent for this cart |
Cart detail view
Click any cart to open its detail panel:
- Line items — each product with quantity and price at abandonment time
- Customer info — name, email, linked account
- Timeline — history of recovery emails sent, with timestamps and delivery status
- Recovery link — the unique URL that pre-fills the customer's cart when opened
Recovery status
| Status | Meaning |
|---|---|
| Not recovered | Cart was abandoned and no completed order followed |
| Recovered | A completed order was placed using the same session or email after abandonment |
yStore automatically marks a cart as recovered when the customer completes a checkout with the same cart session or with a matching email address — whether they returned via a recovery link or on their own.
Manual recovery email
You can send a one-off recovery email directly from the cart detail view:
- Open the abandoned cart.
- Click Send Recovery Email.
- Select the email template to use.
- Confirm — the email is sent immediately.
The email includes the cart recovery link (yourstore.com/shop/cart/restore/{token}) which restores the cart when the customer clicks it.
Manual recovery emails are useful for high-value abandoned carts, B2B accounts, or situations where you want a personal touch. For everything else, automate the sequence with the Flow Manager.
Automated recovery with flows
The real power of cart recovery is in automation. The Cart Abandoned trigger in the Flow Manager fires as soon as a cart crosses the abandonment threshold.
You can build a custom sequence from generic Send Email / Wait / Create Coupon nodes, or use the built-in 3-step recovery sequence actions described below, which ship as a ready-made flow template.
A proven 3-email recovery sequence:
Use the Create Coupon action after the first Wait node to generate a unique, single-use code for each customer. This ensures each customer gets a personalised code that cannot be shared or re-used by others.
See Flow Manager for step-by-step flow building instructions.
Built-in 3-step recovery sequence actions
Instead of assembling generic Send Email nodes by hand, the Flow Manager's action palette includes three purpose-built actions that render the plugin's own abandoned-cart email templates, plus a matching coupon-generator action. Drag the Abandoned cart recovery template from the flow library to start from this sequence pre-wired, or add the actions individually:
| Order | Action | Fires | Email content |
|---|---|---|---|
| 1 | Abandoned cart email — Step 1 | Immediately after the Cart Abandoned trigger, before any Wait node | "Did you forget something?" — cart items and recovery link |
| — | Wait 24 hours | ||
| 2 | Abandoned cart email — Step 2 | After a 24-hour Wait node | "Your cart is still waiting for you" — urgency messaging (e.g. limited stock) |
| — | Wait 48 hours (72 h total) | ||
| 3 | Create abandoned-cart coupon, then Abandoned cart email — Step 3 | After a further 48-hour Wait node | Final reminder including a single-use discount code |
Create abandoned-cart coupon generates a unique code using the store's abandoned-cart coupon defaults (yStore → Settings → Sales → Marketing), or per-node overrides for discount type, value, expiry, and code prefix. It deduplicates by cart ID — if a coupon already exists for the same cart, the existing code is returned instead of a new one being created. The generated {{ coupon.code }} and {{ coupon.discount }} output variables feed directly into the Step 3 email node's coupon fields.
Recovery Dashboard
Navigate to yStore → Marketing → Abandoned Carts → Recovery Dashboard (a tab next to the cart list).
The dashboard summarises how well your recovery flows are performing, without needing to export data or check an ESP:
- Period selector — 7 / 30 / 90 / 180 days or last year.
- KPI tiles — recovered carts (vs. total abandoned in the period), all-time conversion rate, recovered revenue in the selected period, and average order value of recovered orders.
- All-time summary — lifetime recovered revenue and total recovered vs. total abandoned counts.
- Monthly Trend and Monthly Recovered Revenue charts.
Coupons generated by the Create abandoned-cart coupon flow action are retrievable through a backend endpoint (AbandonedCartsController::actionGetCouponList), but the Recovery Dashboard currently has no Coupons tab or other UI that surfaces this list.
Use this to judge whether a recovery sequence is worth keeping, and to compare periods after changing email copy, timing, or discount value.
Configuration
Go to yStore → Settings → Sales → Marketing.
| Setting | Description | Default |
|---|---|---|
| Abandoned Cart Timeout | Minutes of cart inactivity before a cart is considered abandoned | 60 |
| Recovery Link Expiry | Days the recovery link remains valid | 7 |
| Track guest carts | Whether to record carts without a customer account | Enabled |
Console commands
The abandoned cart system can also be operated from the command line — useful for cron-based setups or manual testing.
# Check for newly abandoned carts and queue flow triggers
php craft yui/abandoned-carts/check
# Send recovery email to a specific cart (by cart ID)
php craft yui/abandoned-carts/send-email --cartId=456 --template=recovery-reminder
# Mark all carts older than 30 days as archived (cleans up the list)
php craft yui/abandoned-carts/cleanup --days=30
Measuring recovery effectiveness
Track these metrics to evaluate your recovery program:
| Metric | How to measure |
|---|---|
| Recovery rate | Recovered carts ÷ total abandoned carts |
| Revenue recovered | Total value of orders from recovered carts |
| Email open rate | Available in your ESP (Mailchimp, etc.) if sending through a flow |
| Coupon redemption rate | Redeemed ÷ total coupons generated in recovery flows |
A healthy recovery rate for e-commerce is typically 5–15%. High-intent segments (logged-in customers, high cart values, single-product carts) tend to recover at higher rates.
Don't send the same recovery sequence to everyone. Create separate flows for:
- Guests (cart total < €30) — single email, no coupon
- Registered customers (any value) — 2-email sequence
- High-value carts (> €200) — 3-email sequence with progressively better offers