Abandoned checkout to recovered sale: a scenario you can copy

By Dimon8 min read Automation and scenarios

On AXL, an abandoned checkout is already an order record, created automatically the moment a buyer reaches the payment form. Recovery is therefore a timed scenario hanging off an event you already have: one trigger, three messages, and a listener that stops everything the instant the order is paid.

Key takeaways
  • The order record exists the moment a buyer reaches checkout, before any payment happens.
  • Three timed touches recover more than one, and the second touch should carry a reason, not a discount.
  • The node most people forget is a listener that cancels the rest of the sequence the instant the order is paid.
  • If you discount at all, do it last, with a validity window and a usage cap the checkout enforces.
  • Measure recovered orders and recovered revenue, and watch unsubscribes, the number that must not move.
What's in this article

Why the order record already exists

The mechanic that makes this scenario simple is easy to miss: orders are created automatically when a visitor adds to cart or reaches the payment page. The buyer who typed an email address and stalled at the card form has an order in a created-but-unpaid state, attached to a contact, carrying the products, the amount, and a payment link that finishes the exact order they started.

Recovery starts from a real order record, not a session rebuilt from tracking pixels. That makes it a normal scenario: an event starts the run, actions send the messages, and listeners wait for payment.

AXL has 139 node types, including 61 events, 51 actions, and 27 listeners. The sequence below uses nine stock nodes, so there is no separate abandoned-cart product to connect.

The scenario, node by node

Create a scenario on the product (or on its sales page) and build this spine, top to bottom. One switch activates the whole thing when you are done.

Nine nodes, in build order. Every one is a stock node. Nothing here is custom.
Node Set it to Why it's in the sequence
1 · Event: order created Fires when a buyer reaches checkout and the unpaid order appears. The whole sequence hangs off a record you already have.
2 · Action: wait 1 hour. Declined cards get retried and slow payments clear; a message at minute two reads as surveillance.
3 · Action: condition Is the order paid? Paid → stop. Unpaid → continue. Catches the buyer who finished on their own during the wait.
4 · Action: send message Touch one: the order's payment link, no discount. Chat channel first, email fallback. One message body; delivered on the first channel that can reach the contact.
5 · Listener: wait for payment Timeout 24 hours. Paid → stop. The run parks here; a payment from any source exits the sequence.
6 · Action: send message Touch two gives a reason to finish: answer the one question buyers stall on. The second touch earns attention with an answer, not a discount.
7 · Listener: wait for payment Timeout 48 hours. Paid → stop. Same cancel mechanic, longer leash.
8 · Action: send message Touch three: a promo code with a 24-hour validity window and a usage cap. The urgency is real. The checkout refuses the code after it expires.
9 · Listener: wait for payment Timeout 24 hours. Paid → stop. Timed out → tag "abandoned", create a task. The run ends with the record labelled either way: recovered or handed to a human.

Two mechanical notes. Branching is not a special connector: Condition is an action with success and fail outputs, evaluated on the same extended-filter grammar CRM segments use. And a listener is not a wait: Wait pauses unconditionally, while a listener parks the run and exits the moment its event happens, or takes the timeout branch if it never does.

Every node above is stock. The same canvas runs winback, dunning and lead routing on the AXL marketing automation surface.

The three decisions that change the result

When to send touch one. An hour is the default for a reason: most recoverable buyers were one distraction away from finishing, and an hour catches them the same evening without crowding the ones whose payment is still clearing. For a high-consideration purchase, push it to the next morning and write like a human, not a timer.

Channel order. The send-message node takes an ordered list of channels and falls back to email when none can deliver. Put the chat channel the buyer actually came through first: a Telegram buyer answers Telegram, not their inbox. SMS is reachable from the same node, with two caveats that always apply: you connect your own Twilio or RingCentral account, and that provider bills you per message on top of your AXL bill.

Whether to discount at all. The case against is stronger than it looks: a discount in touch one gives margin away to buyers who would have paid full price, and it teaches your regulars that abandoning is how you get 10% off. If you discount at all, do it once, in the last touch, with a validity window and a capped quantity. The counter decrements only on successful payment, so "17 left" stays honest.

The cancel condition everybody forgets

Without the listeners, this sequence has a failure mode everyone has been on the receiving end of: you pay after the first message, get "still thinking it over?" on day two, and a discount for the thing you already own on day three. At best it reads as sloppy; at worst it invites a refund request for the difference.

The listener exits on payment wherever it came from: your recovery link, an older link the buyer saved, or a bank transfer recorded by an admin. A condition checks once. A listener stays active through the full gap between messages, which is why each wait needs one.

What to measure

Recovered orders and recovered revenue: nothing else tells you the sequence works. The order list already filters by payment state, date and tag, and node 9 tags every run that ran out of road, so "went from created to paid after touch one" is a filter, not a spreadsheet. An open rate tells you the subject line worked; a paid order tells you the sequence did.

And one number must not move: unsubscribes. If recoveries climb and unsubscribes climb with them, you are converting this cohort by burning the next one. Cut a touch. We are deliberately not printing a "recover X% of checkouts" benchmark here: recovery depends on price, audience and channel, and any number we could print would be somebody else's.

A copy-paste message set

Three messages, written to edit. Swap the bracketed lines for your product's real answer; keep the shape.

Touch one: after 1 hour

"Your order is saved. The payment link below picks up exactly where you left off. If the payment page gave you trouble, reply here and a human will sort it out."

Touch two: day 2

"Still thinking it over? Fair. The question most people ask before finishing this order is [answer it: the guarantee, the schedule, and the format]. Same link, nothing has expired."

Touch three: day 3, only if you discount

"Last note from us: [CODE] takes 10% off this order and stops working in 24 hours. The checkout will refuse it after that. That is a real deadline, not marketing weather."

Questions

Common questions

About an hour. Sooner reads as surveillance and catches people whose payment is still processing; next-day loses the buyers who were one distraction away from finishing. A high-consideration purchase is the exception. In that case, waiting until the next morning and writing like a human beats speed.

Three, across roughly three days: a payment link after an hour, a reason on day two, and (only if you discount at all) an expiring code on day three. Past three touches the extra recoveries are small and the unsubscribes are not. Every gap needs a listener so a payment stops the rest.

No, and opening with one is the expensive habit: it gives margin to buyers who would have paid full price and teaches regulars to abandon on purpose. Send the payment link first, answer a real objection second. If you discount at all, do it once, last, with an expiry the checkout actually enforces.

Yes. The send-message node takes an ordered channel list (Telegram, WhatsApp, Instagram and others) and falls back to email when no chat channel can deliver. SMS works too, with two caveats: you connect your own Twilio or RingCentral account, and that provider bills you per message on top of your AXL bill.

Nine nodes. Copy it tonight.

Start free. Pricing starts at $49 a month, with included usage and published overage rates. The scenario canvas is included, along with everything it triggers: the whole marketing automation surface.