Build an Abandoned Cart Email Flow (Recover Sales You Already Earned)
When a shopper starts checkout and leaves, an automation waits, then sends a short series of timed reminders that show the exact items they left. The moment they buy, they drop out. Once it is live it runs forever, quietly recovering carts that would otherwise vanish.
Build an Abandoned Cart Email Flow (Recover Sales You Already Earned)
When a shopper starts checkout and leaves, an automation waits, then sends a short series of timed reminders that show the exact items they left. The moment they buy, they drop out. Once it is live it runs forever, quietly recovering carts that would otherwise vanish.
Why this is the money automation
Most stores lose the majority of their carts, and that is normal. What is not normal is doing nothing about it. A shopper who entered checkout and gave you an email is the **warmest lead** you will ever get, they got distracted, the baby cried, the phone rang. Because these people already chose your products, recovering even a modest slice of them outperforms almost any ad you could run. It is found money sitting in your store's event log.
The shape of the flow
The whole automation is four moves you will recognize once you see them: - **Trigger** — the shopper starts checkout, then doesn't pay. - **Wait** — an hour passes, then a day, then two days. - **Send** — a reminder email goes out at each step. - **Exit** — the instant they buy, they stop receiving emails. That last rule is the most important. Email someone "you left this behind" an hour after they already bought it and you look broken. Everything below exists to get that sequence right.
Catch the checkout
In n8n, start a new workflow with a **Webhook** node, this is the front door your store knocks on when checkout starts. Most platforms (Shopify, WooCommerce and others) can fire a webhook on a "checkout started" event, point it at your n8n URL. The payload arrives carrying the shopper's **email** and their **line items**. Hit Execute and you will see that data land in n8n, ready to flow down the chain. That captured email is what makes recovery possible.
Write the reminder with Claude
Add a [Claude](/tool/claude/) node and feed it the cart contents. Instead of one frozen template, Claude writes each reminder fresh in your voice: ``` Write a short, warm abandoned-cart reminder email. No hype. First line acknowledges they left items behind. Mention the products by name. One clear call to action back to checkout. Products: {{ $json.line_items }} ``` This is the difference between a robotic "You left items in your cart" and an email that sounds like a human who runs the shop. Pass Claude's output into a **Send Email** node addressed to the shopper.
Space the three nudges
Real recovery comes from rhythm, not a single email. Use n8n **Wait** nodes to time the sequence, and shift the tone at each step: - **Email 1, after 1 hour:** soft reminder. "Still thinking it over? Your cart is waiting." - **Email 2, after ~1 day:** add reassurance, free returns, a review quote, a shipping note. - **Email 3, after ~2 more days:** short, with light urgency like "Your cart may expire soon." A Wait node literally pauses the workflow for that long, then continues. Resist discounting until that final message, if at all.
Stop emailing buyers
This is the rule that keeps you from looking foolish. Before each send, add an **IF** (filter) node that checks whether the shopper has placed an order since the flow started. Re-check the order via your store's API, or listen for an "order placed" webhook that cancels the run. If they bought, the workflow ends right there. If they haven't, the next reminder goes out. With this guard in place, flip the workflow **Active** and it recovers carts around the clock.
Fire it once on a real cart
The fastest way to learn this is to make it fire once. In n8n, drop in the Webhook node and grab its test URL, then add one item to your own store and begin checkout so a real payload arrives. Watch the data appear, then build the Claude step on top of it. Seeing one genuine cart flow through end to end makes the whole pattern click, and from there the delays and filter are easy.
Try this now
Your turn: open n8n and set up the first step. Just do step one now — the rest takes minutes. Save this guide to pick up where you left off.
FAQ
Do I need to be a developer to build this in n8n?
No, but it is not a five-minute beginner task either, this is an intermediate automation with a webhook, timed waits, and a filter. If you can follow a recipe and paste an API key, you can build it. n8n's free self-hosted version runs on a cheap server.
How is "abandoned cart" different from "abandoned checkout"?
A checkout abandon means the shopper entered checkout and gave an email, then left, that is the most reliable trigger because you have their address. A cart abandon (added to cart but never reached checkout) often lacks an email. Checkout-started recovers the most revenue for the least setup.
Will customers get annoyed by three emails?
Not if they are spaced and useful. The first is a soft reminder, the second adds reassurance like reviews or a returns note, and the third is short with light urgency. Anyone who buys is dropped from the flow automatically.
Can I add a discount in the last email?
You can, but be careful. Offering a code too early trains shoppers to abandon on purpose. A common approach is no discount in emails one and two, and only a small incentive in the final email if recovery needs a push.