Checkout abandonment vs cart abandonment: intent ladder for recovery flows

How checkout abandonment differs from cart abandonment on the browse < cart < checkout ladder, with separate urgency, channels, and Leadara wiring.

Amir Hosseini

Runs email, SMS, and push campaigns for acquisition, retention, and reactivation.

September 14, 2026 · 8 min read

Also available in فارسی

رها کردن چک‌اوت در برابر رها کردن سبد: نردبان قصد خرید

Direct answer

Cart abandonment is when at least one item hits the cart via cart_updated / add_to_cart and the order never completes. Checkout abandonment is when payment flow has started (checkout_started / begin_checkout) but order_completed never fires.

One practical line: cart = near purchase intent; checkout = very near intent with likely friction in shipping, payment, or stock. Intent ladder: browse < cart < checkout. Do not reuse one urgency, channel, or template for both.

This post is the twin of Abandoned browse vs abandoned cart — that article split browse vs cart; here we split cart vs checkout so Iran ecommerce recovery (email+SMS) gets sharper.

What is cart abandonment vs checkout abandonment?

Cart abandonmentCheckout abandonment
Typical behaviorItems in cart; payment form not really startedAddress/shipping/payment started; order incomplete
Sample eventscart_updatedcheckout_started
Intent signalNear purchase; may still be comparingCloser; often a practical blocker
Message assetCart lines, cart/checkout linkProgress state, blocker fix, resume-payment link
Wrong-tone riskPayment pressure while they still chooseSoft “just checking in” when they need a clear resume link
Mandatory exitscheckout_started (enter checkout path) or order_completedorder_completed

Working definition: cart abandonment

At least one cart update fired, the wait window passed, you still lack a durable checkout_started (or you prefer a separate checkout path when you have it), and order_completed did not arrive. You need a reachable identity with channel consent.

Working definition: checkout abandonment

A checkout-started event fired, the shopper left or stalled in payment flow, and the order did not complete. “Started checkout” means a clean catalog event — not a guessed page open without a signal.

Intent ladder: browse < cart < checkout

StepSample eventsApproximate intentMessage jobUrgency / channel
Browseview_itemDiscoveryHelp decideSoft; usually email
Cartcart_updatedPurchase intentRemind items + pathMedium; email first, optional SMS
Checkoutcheckout_startedNear-purchase frictionRemove blockers + resumeHigher; earlier SMS is more defensible
Purchaseorder_completedDoneExit recovery

Simple rule: higher step = more urgency and clarity, but discount is still optional. Do not use “your payment is half done” tone on cart unless you actually have checkout_started.

Browse-vs-cart detail stays in Abandoned browse vs abandoned cart; we do not repeat it here.

Why you need two separate paths

One “your cart is waiting” template for both causes three failures:

  1. Wrong tone — a cart-only shopper may still be choosing a color; a checkout starter usually has a practical blocker.
  2. Early discounts — codes on every cart train “wait for the discount SMS”; at checkout, shipping clarity often wins.
  3. Muddy measurement — cart recovery rate is not checkout completion rate; if you merge them, you cannot see which friction you fixed.

Right pattern: two journeys with checkout priority over cart — entering checkout path → exit/suppress cart path.

Urgency and channel: cart vs checkout

DimensionCart pathCheckout path
First touch1–6 hours after last cart_updated (not mid-active session)15–90 minutes after last checkout activity, if the session is dead
EmailTouch 1 usually email with items + linkShort email with “resume order” + one blocker fix
SMSAfter soft email, only with consent and capsEarlier is more defensible — signal decays faster
DiscountLater; prefer high value or last touchRemove the blocker first; code only if data says so
CTABack to cart or start checkoutResume same checkout / payment
Touch cap3–4 with hard exits2–3, tighter

For email vs SMS on cart recovery, see: Abandoned cart email vs SMS. Take flow-vs-blast logic from SMS flow vs SMS campaign — checkout recovery should be a flow, not Friday’s blast.

Practical comparison table for Iran eCRM teams

Decision questionIf cartIf checkout
Subject / first lineItem names / “your cart is ready”“Your order was almost done” / named blocker
What to showItem image/name, total, shipping if knownProgress, chosen shipping method, final amount if you have it
What not to sayFake countdown on every cartShame (“why didn’t you pay?”)
When SMSAfter email silence; separate consentEarlier if consent and caps exist
Primary metricReturn-to-cart / purchase from cart pathCompletion rate from checkout_started

In Iran, SMS cost and STOP risk are real; a narrow consented checkout flow beats a wide “all carts” blast.

Mapping to Leadara (events / segments / journeys / email+SMS)

Leadara runs on events, segments, journeys, email, and SMS. To separate cart and checkout:

  1. Clean events: cart_updated, checkout_started, order_completed. Keep names stable in the catalog.
  2. Cart segment: last cart_updated in window X + no checkout_started in that window (or no checkout progress) + no order_completed + reachable channel.
  3. Checkout segment: last checkout_started in window Y + no order_completed + channel consent for SMS touches.
  4. Two journeys: different delays, different-tone templates, exit on purchase; entering checkout → suppress cart path.
  5. Caps and suppressions: avoid collisions with discounted welcome and Friday blasts; keep people who already got flow SMS today out of blasts.

Magical “AI intent detection” does not replace a clean event catalog and exits.

Worked scenario: Iranian fashion store

“Nora” runs one “cart recovery” journey that sends “your payment is half done” to cart-only shoppers and the same item template to people who reached the gateway. She fires SMS with email for everyone.

Diagnosis

ProblemEffect
One template for cart and checkoutWrong tone; meaningless CTR
Simultaneous SMS for allSTOP and cost without lift
No checkout_startedCannot separate real urgency
No suppress vs welcomeDuplicate codes in 48 hours

Practical fix

  • Wire checkout_started beside cart_updated and order_completed
  • Cart journey: item email → optional SMS → exit on purchase or checkout entry
  • Checkout journey: faster touch with blocker fix (shipping/gateway) → shortcut SMS for consented → purchase exit
  • Mutual suppress; cap 2 promo SMS per 7 days
  • 10% holdout on discounted branch

Judge success by purchase completion per path, SMS cost, and STOP — not opens alone.

Common mistakes

  • Calling every unfinished cart “checkout abandonment”
  • Instant discount on first cart_updated
  • Continuing cart messages after checkout_started
  • Recovery mid-active payment session
  • Friday blast on people who just got checkout-flow SMS
  • Building checkout recovery before checkout_started is stable
  • Measuring only opens instead of completion rate per step

Checklist for this month

  1. Written definition: cart vs checkout with your events
  2. Catalog check: cart_updated, checkout_started, order_completed
  3. Two segments and two journeys with checkout priority and purchase exit
  4. Channel rule: email first for cart; earlier SMS only for consented checkout
  5. Suppress against welcome and blasts; SMS frequency cap
  6. Split dashboard: cart recovery vs checkout completion + STOP

FAQ

What is the difference between checkout abandonment and cart abandonment?

Cart means items were chosen and the order did not finish; checkout means payment flow started and the order still did not complete. Intent, urgency, and usual blockers differ.

Which path should we build first?

If you can only build one, stabilize cart; add checkout when checkout_started is clean — its value is urgency and blocker removal.

Should checkout always get SMS?

No. Only with separate consent, frequency caps, and when an active session is unlikely. Cart channel detail: Abandoned cart email vs SMS.

If someone has a cart and also started checkout, which message wins?

Checkout wins; exit the cart path.

When should we offer a discount?

Clarify the blocker first (shipping, gateway, stock). Keep discounts for later touches or high-value carts/checkouts.

Which events do we need in Leadara?

At least cart_updated, checkout_started, order_completed. Segments and journeys sit on those events plus exits.

Is checkout recovery a campaign or a flow?

A flow. It is behavior-triggered with a conversion exit; a timed blast does not replace it. See: SMS flow vs SMS campaign.

Where does browse fit?

Lower on the ladder; separate from cart and checkout. Guide: Abandoned browse vs abandoned cart.

Bottom line and next step

Cart and checkout are the top two intent steps, not two names for one template. This week: lock checkout_started, build two segments, write a direct cart tone and a blocker-fixing checkout tone, set priority and exits, and measure channels with consent and caps — not by making one recovery louder.

Keep reading