Prerequisites
- A verified sending domain and a secret key.
- Consent to email the shopper (from their account or checkout).
Build it
1
Send a checkout-started event
When a shopper begins checkout, send a For Python, TypeScript, PHP, or Go, the shape is identical, see the API Reference or Welcome email.
checkout_started event with the cart in payload. Send a matching purchase_completed when they finish (see Purchase confirmation), the automation uses the gap between the two.2
Build the recovery automation
Trigger on
checkout_started, wait, then check whether they bought. The cleanest shape is a Wait until the contact does something: wait for purchase_completed, and take the timeout branch if it never comes.trigger (checkout_started) → wait up to 1h for purchase_completed → (timeout) send email (You left something behind)3
Add a second nudge (optional)
→ wait 1 day → still no purchase? → send email (Still thinking it over?)Keep it to two. A third reminder rarely converts and costs you unsubscribes.4
Activate and publish.
Both are required.
Test
Send acheckout_started with your own email and no matching purchase_completed, then confirm the reminder arrives after the wait. Send the purchase too, and confirm it suppresses the reminder.
Measure
- Recovery rate: reminders that led to a completed purchase.
- Revenue recovered versus a holdout.
- Unsubscribes on the reminder, if they climb, cut the second nudge.
Variations
- Incentive on the second touch. Free shipping or a small discount can tip a hesitant cart.
- Segment by cart value. Treat a big cart differently from a small one.
- Web3 parallel. For an on-chain purchase that stalls, see On-chain purchase follow-up.

