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 abandonment | Checkout abandonment | |
|---|---|---|
| Typical behavior | Items in cart; payment form not really started | Address/shipping/payment started; order incomplete |
| Sample events | cart_updated | checkout_started |
| Intent signal | Near purchase; may still be comparing | Closer; often a practical blocker |
| Message asset | Cart lines, cart/checkout link | Progress state, blocker fix, resume-payment link |
| Wrong-tone risk | Payment pressure while they still choose | Soft “just checking in” when they need a clear resume link |
| Mandatory exits | checkout_started (enter checkout path) or order_completed | order_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
| Step | Sample events | Approximate intent | Message job | Urgency / channel |
|---|---|---|---|---|
| Browse | view_item | Discovery | Help decide | Soft; usually email |
| Cart | cart_updated | Purchase intent | Remind items + path | Medium; email first, optional SMS |
| Checkout | checkout_started | Near-purchase friction | Remove blockers + resume | Higher; earlier SMS is more defensible |
| Purchase | order_completed | Done | Exit 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:
- Wrong tone — a cart-only shopper may still be choosing a color; a checkout starter usually has a practical blocker.
- Early discounts — codes on every cart train “wait for the discount SMS”; at checkout, shipping clarity often wins.
- 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
| Dimension | Cart path | Checkout path |
|---|---|---|
| First touch | 1–6 hours after last cart_updated (not mid-active session) | 15–90 minutes after last checkout activity, if the session is dead |
| Touch 1 usually email with items + link | Short email with “resume order” + one blocker fix | |
| SMS | After soft email, only with consent and caps | Earlier is more defensible — signal decays faster |
| Discount | Later; prefer high value or last touch | Remove the blocker first; code only if data says so |
| CTA | Back to cart or start checkout | Resume same checkout / payment |
| Touch cap | 3–4 with hard exits | 2–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 question | If cart | If checkout |
|---|---|---|
| Subject / first line | Item names / “your cart is ready” | “Your order was almost done” / named blocker |
| What to show | Item image/name, total, shipping if known | Progress, chosen shipping method, final amount if you have it |
| What not to say | Fake countdown on every cart | Shame (“why didn’t you pay?”) |
| When SMS | After email silence; separate consent | Earlier if consent and caps exist |
| Primary metric | Return-to-cart / purchase from cart path | Completion 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:
- Clean events:
cart_updated,checkout_started,order_completed. Keep names stable in the catalog. - Cart segment: last
cart_updatedin window X + nocheckout_startedin that window (or no checkout progress) + noorder_completed+ reachable channel. - Checkout segment: last
checkout_startedin window Y + noorder_completed+ channel consent for SMS touches. - Two journeys: different delays, different-tone templates, exit on purchase; entering checkout → suppress cart path.
- 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
| Problem | Effect |
|---|---|
| One template for cart and checkout | Wrong tone; meaningless CTR |
| Simultaneous SMS for all | STOP and cost without lift |
No checkout_started | Cannot separate real urgency |
| No suppress vs welcome | Duplicate codes in 48 hours |
Practical fix
- Wire
checkout_startedbesidecart_updatedandorder_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_startedis stable - Measuring only opens instead of completion rate per step
Checklist for this month
- Written definition: cart vs checkout with your events
- Catalog check:
cart_updated,checkout_started,order_completed - Two segments and two journeys with checkout priority and purchase exit
- Channel rule: email first for cart; earlier SMS only for consented checkout
- Suppress against welcome and blasts; SMS frequency cap
- Split dashboard: cart recovery vs checkout completion + STOP
Related reading
- Abandoned browse vs abandoned cart — lower step on the intent ladder
- Abandoned cart email vs SMS
- SMS flow vs SMS campaign
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.





