Skip to main content
Version: 2.0.0

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.

Guest vs. logged-in

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

ColumnDescription
Cart IDInternal cart reference
CustomerLinked customer account, or email if guest, or "Anonymous"
ItemsNumber of line items in the cart
TotalCart subtotal at abandonment time
Abandoned atWhen the cart was last updated before going idle
Recovery statusNot recovered / Recovered
Emails sentNumber 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

StatusMeaning
Not recoveredCart was abandoned and no completed order followed
RecoveredA 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:

  1. Open the abandoned cart.
  2. Click Send Recovery Email.
  3. Select the email template to use.
  4. 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.

When to send manually

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:

Generating coupons in recovery flows

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:

OrderActionFiresEmail content
1Abandoned cart email — Step 1Immediately after the Cart Abandoned trigger, before any Wait node"Did you forget something?" — cart items and recovery link
Wait 24 hours
2Abandoned cart email — Step 2After a 24-hour Wait node"Your cart is still waiting for you" — urgency messaging (e.g. limited stock)
Wait 48 hours (72 h total)
3Create abandoned-cart coupon, then Abandoned cart email — Step 3After a further 48-hour Wait nodeFinal 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.
Coupon list is backend-only

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.

SettingDescriptionDefault
Abandoned Cart TimeoutMinutes of cart inactivity before a cart is considered abandoned60
Recovery Link ExpiryDays the recovery link remains valid7
Track guest cartsWhether to record carts without a customer accountEnabled

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:

MetricHow to measure
Recovery rateRecovered carts ÷ total abandoned carts
Revenue recoveredTotal value of orders from recovered carts
Email open rateAvailable in your ESP (Mailchimp, etc.) if sending through a flow
Coupon redemption rateRedeemed ÷ 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.

Segment your recovery flows

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