E-commerce

How to handle customer questions about expired carts

How to handle customer questions about expired carts

July 1, 2026

"I go back to my cart, everything has disappeared." "The price has increased since yesterday." "My promo code no longer applies, why?" Three tickets where a poorly managed expired cart loses a recoverable sale.

The e-commerce expired cart support covers expired TTL sessions, released stock, modified prices, lost promos, and partial recovery. Distinct from marketing abandonment (#47): here, the customer returns active, session cart is dead. Distinct from hold timer (#569): no inventory reservation in progress.

This guide #571 covers EXPCART-SUP policy, EC-1 to EC-8 flows, and the EXPCART-MAP matrix. First support content for expired carts. Future support pair EXPCART bot (#572).

Summary

Why does the expired cart generate tickets?

The session cart has a lifespan: 7 days, 30 days, or less depending on the platform. The customer postpones, returns, and finds an empty cart or a different price. They believe it is a bug or a scam, whereas the session has simply expired normally.

Five typical frictions

  • Expired session: cart content cleared, TTL exceeded

  • Modified price: promo or base rate changed since addition

  • Lost promo: code or automatic discount no longer valid

  • Released stock: item out of stock after session expiration

  • Recovery requested: restore full expired cart

Shopify retains abandoned carts for recovery, but the storefront session expires based on cookies and configured duration (Shopify, abandoned checkout 2026). Without EXPCART-MAP, agents confuse session expiration with email abandonment.

EXPCART #571 vs RESV #569, saved #437, abandoned #47 and bot #572

Five contents, five distinct cart models.

Quick matrix

#569 = timer hold in progress. #571 = dead session customer returns. #47 = outbound recovery, not inbound CS ticket.

Which expcart_* typologies should be classified?

Eight expired shopping cart ticket scenarios.

Eight expcart typologies

  1. expcart_session_expired: empty cart session TTL exceeded

  2. expcart_price_changed: different price upon recovery

  3. expcart_promo_lost: expired promo code or automatic discount

  4. expcart_stock_released: SKU OOS after stock release

  5. expcart_recover_full: request to restore full cart

  6. expcart_recover_partial: some items still available

  7. expcart_link_expired: email recovery link expired

  8. expcart_vs_abandon: mistakes expiration for abandonment follow-up

Tags: expcart, cart_expired, session_ttl, price_changed. EXPCART-MAP-GROUNDED: recovery policy from map only.

How to structure the EXPCART-MAP matrix?

The EXPCART-MAP matrix documents expiration and recovery rules for agents and future bot #572.

EXPCART-MAP Columns

  • expcart_scope: global VIP segment

  • session_ttl_days: session cart lifetime in days

  • price_lock_policy: fixed or live price at recovery

  • promo_grandfather: promo honored if recover map yes no

  • recover_method: draft order agent rebuild cart link

  • partial_recover_rules: OOS items skip or substitute

  • recovery_link_ttl: validity of email recovery link in hours

  • alternative_suggest: similar SKU if OOS post expiry

Sync Shopify cart settings, Klaviyo abandoned flow, FAQ expiration page, and helpdesk macros. Distinct active RESV-MAP hold.

EXPCART-SUP policy in six rules

Six rules support expired cart.

  1. EXPCART-MAP-GROUNDED: TTL recovery price from map only

  2. PRICE-LIVE-CITE: current PDP price except price_lock map

  3. PROMO-POLICY-CITE: promo_grandfather map only

  4. RECOVER-SCOPE: recovery according to recover_method map

  5. PARTIAL-REBUILD: OOS skip according to partial_recover_rules

  6. RESV-REROUTE: hold timer active → #569 RESV

Flow EXPCART EC-1 to EC-8

Flow agent eight steps expired cart.

  1. EC-1 Intake: expcart_* intent + email order_ref cart snapshot

  2. EC-2 TTL check: session_ttl_days last activity timestamp

  3. EC-3 EXPCART-MAP: price promo recover partial rules

  4. EC-4 Inventory check: SKU availability post expiry

  5. EC-5 Classify: expired price promo stock recover partial

  6. EC-6 Respond: macro EXPCART grounded map

  7. EC-7 Execute: draft order rebuild cart link alternative

  8. EC-8 Close: tag expcart_resolved recovery_status

SLA: expcart_session_expired explained with session_ttl_days in one interaction.

Essential EXPCART macros

Four macro agents.

EXPCART-EXPIRED-01

"Session cart expired after [session_ttl_days] days of inactivity. Content cleared according to platform policy. [If recover_method: we can [rebuild draft / resend link] if order identified.]"

EXPCART-PRICE-01

"Price [product_name]: [current PDP price]. [If price_lock no: live rate at resumption.] [If promo_grandfather yes and eligible: promo [code] honored.] [Otherwise: promo expired, current price applied.]"

EXPCART-RECOVER-01

"Cart recovery: [recover_method map]. Available items: [list of available SKUs]. [OOS: [list] HTML/text alternative [alternative_suggest].] Link: [draft_order_url / cart_rebuild_link]. Expiry [recovery_link_ttl]."

EXPCART-PARTIAL-01

"Partial recovery: [X/Y items available]. [OOS SKU: [names] according to partial_recover_rules.] [Suggested alternative: [alternative_suggest].] Confirm partial rebuild."

Edge cases: active hold, save cart, checkout and hidden fees

Five cases outside the standard expired macro.

Customer still within the 10 min hold window: RESV-REROUTE #569, no EXPCART-EXPIRED-01.

Essential expcart KPIs

Five EXPCART management metrics.

  • expcart_ticket_rate: expcart tickets / active cart sessions

  • expcart_recovery_rate: recover full partial / recover requests

  • expcart_partial_recover_rate: partial rebuild / recover attempts

  • expcart_price_dispute_rate: promo price tickets / recover

  • expcart_recover_to_order_rate: draft rebuild → paid order

Target: expcart_recover_to_order_rate greater than 25% on active draft order recover_method.

EXPCART anti-patterns

Five common mistakes.

  1. Old price promised: PRICE-LIVE-CITE map

  2. Invented promo recover: PROMO-POLICY-CITE

  3. Hold RESV confusion: RESV-REROUTE #569

  4. Impossible recovery promised: RECOVER-SCOPE map

  5. Outbound abandonment confusion: expcart vs abandon explain

EXPCART with Qstomy

Qstomy on Shopify: detect expcart intent, EXPCART-MAP RAG TTL cite, inventory check SKU, draft order rebuild workflow, handoff #572 bot tier 1 recover.

Pipeline: #572 bot recover alternative → #571 draft rebuild price dispute execute.

Explore AI support and request a demo.

Checklist, FAQ and going further

EXPCART Checklist (8 steps)

  1. EXPCART-MAP v1: TTL price promo recover partial

  2. Policy EXPCART-SUP: 6 PRICE-LIVE-CITE rules

  3. 8 expcart_* typologies: helpdesk tags

  4. 4 EXPCART-* macros: EXPIRED PRICE RECOVER PARTIAL

  5. FAQ expiration page: session_ttl_days visible

  6. Draft order playbook: recover_method agent workflow

  7. 30 min agent training: expired vs RESV vs save

  8. KPI Dashboard: expcart_* section 9

FAQ

Difference with abandonment #47?
#47 = outbound marketing follow-up. #571 = customer returns with expired session cart, inbound support.

Difference with RESV #569?
#569 = active stock hold timer. #571 = session TTL expired, stock already released.

Promo price honored?
EXPCART-PRICE-01 promo_grandfather map.

Is Bot #572 sufficient?
Tier 1 recover alternative cite. Draft rebuild price → agents #571.

Going further

This week: publish EXPCART-MAP TTL recovery, test EXPCART-RECOVER-01 draft order, measure expcart_recover_to_order_rate.

Enzo

July 1, 2026

Convert over 2,000 customers on average per month with Qstomy.

The world’s 1st Shopify AI dedicated to customer conversion

Empowering 200+ e-commerce merchants

Subscribe to the newsletter and get a personalized e-book!

No-code solution, no technical knowledge required. AI trained on your e-shop and non-intrusive.

*Unsubscribe at any time. We do not send spam.

Subscribe to the newsletter and get a personalized e-book!

No-code solution, no technical knowledge required. AI trained on your e-shop and non-intrusive.

*Unsubscribe at any time. We do not send spam.