Most started checkouts are never completed. Baymard Institute puts the average documented cart abandonment rate at 70.22%, across 50 studies of ecommerce in general rather than Shopify alone (baymard.com, read 25 September 2026). Some of those shoppers will come back if reminded, and on Shopify the reminder can be free.
There are two free routes. Start with the first. Move to the second only if you want several different emails and are willing to maintain a small automation.
Route 1: Shopify’s own abandoned checkout email
Shopify sends abandoned checkout emails through the Shopify Messaging app (previously Shopify Email). The automation is called Abandoned checkout emails by Shopify. In it you choose:
- Who receives it: everyone who abandoned with an email address, or only customers subscribed to marketing.
- When it sends: how long after abandonment the email goes out.
(Shopify Help Center: abandoned checkouts)
Cost. Shopify Messaging includes 10,000 free emails a month, then charges from $1 per 1,000 (App Store listing, read 15 October 2026). Abandoned checkout emails are a small share of that for most small stores.
Why start here. Shopify knows when an order is completed, so its email never reaches someone who has already paid. It needs no other accounts, no webhook and no maintenance. Its limit is that Shopify’s help page describes a single recovery email, not a series with different content.
Before you switch it on:
- Edit the email so it sounds like your store, not a template. Keep the checkout button prominent.
- Choose the delay deliberately. A shorter delay reaches shoppers while they still remember the product. A longer one avoids pestering people who were only comparing prices.
- Check Orders → Abandoned checkouts after two weeks. Shopify marks which ones were recovered, which gives you your own recovery rate to judge any further work against.
Route 2: A multi-email sequence with Make.com and Systeme.io
Use this route if you want, for example, a reminder after an hour, a different message the next day and a final email after three days.
First, the trap in most tutorials
Shopify has no abandoned checkout webhook. Its checkout webhooks are checkouts/create, checkouts/update and checkouts/delete (Shopify webhook reference). checkouts/create fires the moment a checkout starts, including for shoppers who pay a minute later.
So a setup that sends checkouts/create straight into an email sequence emails your buyers “you left something behind”. An earlier version of this guide made exactly that mistake, and many free tutorials still do.
The fix is in the logic: a shopper enters the sequence when they start checkout with an email address, and a completed order takes them out of it before each email sends, including the first.
How the pieces fit
| Piece | Job |
|---|---|
Shopify webhook: checkouts/update | Tells Make.com a checkout now has an email address |
| Make.com scenario A | Creates or updates the contact in Systeme.io and adds the tag abandoned-cart |
| Systeme.io sequence | Waits, checks for the tag purchased, sends email 1; repeats for emails 2 and 3 |
Shopify webhook: orders/create | Tells Make.com an order was completed |
| Make.com scenario B | Adds the tag purchased to that customer in Systeme.io |
Use checkouts/update rather than checkouts/create because a checkout often starts before the shopper has typed an email address. In Make.com, add a filter so the scenario continues only when the email field is not empty.
If you already run an orders/create scenario, such as CAPI Shield for Meta server-side tracking, add scenario B’s step as an extra branch there instead of building a second scenario.
Check your free plan limits first
All three limits below were read on the vendors’ pricing pages on 15 October 2026.
- Make.com free: up to 1,000 credits a month and 2 active scenarios (make.com/pricing). Every checkout update and every order uses credits.
checkouts/updatecan fire several times for one checkout, so watch the credit counter for the first week and drop the sequence back to Route 1 if it runs out. - Systeme.io free: 2,000 contacts, unlimited emails, one email campaign and one automation rule (systeme.io/pricing, FAQ). One campaign is enough for this one sequence, but it uses the free plan’s only campaign. Before connecting Shopify, confirm in your account that you can build the sequence with delays and a tag check.
- Shopify: webhooks are available on every plan, under Settings → Notifications → Webhooks.
Building it
In Systeme.io
- Create two tags:
abandoned-cartandpurchased. - Create the sequence, triggered when the tag
abandoned-cartis added to a contact. - Before each email, add a condition: if the contact has the tag
purchased, end the sequence. - Write three short emails. Include the checkout link in each, which you will store in a custom contact field (for example
checkout_url). If you use social proof, use only figures that are true for your store.
In Make.com, scenario A
- Trigger: Webhooks → Custom webhook. Copy its URL.
- Filter: continue only if the checkout’s email is not empty.
- Use Make.com’s systeme.io app to create or update the contact with the email, first name and
abandoned_checkout_urlfrom the payload. - Add the tag
abandoned-cart. systeme.io’s tag step expects the contact ID returned by the previous step, not the email address; mapping the email here is a common cause of failed runs.
In Make.com, scenario B (or a branch of an existing orders scenario)
- Trigger on the
orders/createwebhook. - Find the contact in systeme.io by the order’s email and add the tag
purchased.
In Shopify
Under Settings → Notifications → Webhooks, create one webhook for Checkout update pointing at scenario A’s URL, and one for Order creation pointing at scenario B’s (skip the second if you added a branch to an existing orders scenario). Use JSON format.
Testing it
- Start a checkout on your store with an email address you control, then close the tab. Within a few minutes, scenario A should show a run and the contact should carry the
abandoned-carttag. - Start a second checkout with a different address and complete the order. That contact should receive the
purchasedtag, and no recovery email. - Leave both for a day and confirm only the first address received anything.
The second test is the one that matters. Do not switch the sequence on for real customers until it passes.
Which route to choose
| Route 1: Shopify Messaging | Route 2: Make.com + Systeme.io | |
|---|---|---|
| Emails | One, per Shopify’s help page | As many as you build |
| Never emails buyers | Yes, Shopify knows the order state | Only if the purchase check is built and tested |
| Accounts needed | None beyond Shopify | Make.com and Systeme.io |
| Maintenance | None | Watch credits; re-test after changes |
| Cost | Free up to 10,000 emails a month | Free within both free plans’ limits |
For most small stores, Route 1 recovers most of what a sequence would, with none of the risk. Measure its recovery rate for a month first. If it is recovering orders and you think more emails would add to that, build Route 2.
Recovery only works on checkouts that were already lost. Stopping shoppers leaving in the first place is the other half; the free conversion rate optimisation guide shows how to find the step where they leave.