Problem
Abandoned cart emails not sending: how to fix it
Recovery emails depend on a chain: an event has to be recorded, it has to be attached to a known email address, the flow has to be live, and the profile has to survive every filter and timing rule between the trigger and the send. Any link can break silently and the reporting looks the same. The fastest route to the answer is to abandon a cart yourself and follow that one profile through each stage.
By CartKernel · Last reviewed 2026-09-07
Does this look familiar?
- The flow reports very few recipients compared with the number of abandoned carts in the store
- Some people receive the first message and nobody receives the later ones
- The flow works for logged in customers and not for new visitors
- Recipients dropped after a checkout, theme or app change went live
- Test profiles receive the email but real customers apparently do not
- The flow shows plenty of profiles entering and almost all skipped
Causes, ranked
Why it happens, most common first
Check them in this order. The first two account for most cases we open.
- most common
The profile has no known email address at the moment of abandonment
A visitor who has never clicked an email from you, never signed up and never reached the step where an address is entered is anonymous. There is nothing to send to. This is the single largest reason a store's recovery volume is lower than its abandonment count.
- most common
The trigger event is not being recorded
Started checkout comes from the store integration, while added to cart usually depends on onsite tracking scripts. A checkout change, a blocked script, a consent tool or a missing integration webhook can stop one or both, and the flow simply has nothing to trigger on.
- common
A flow filter is removing the profile
Filters that skip anyone who placed an order, who is already in another flow, or who does not meet a consent condition are all doing their job. Filters written too broadly, such as excluding anyone who received any email recently, remove far more people than intended.
- common
The flow or a message inside it is not live
A flow left in draft, a single message set to manual, or a message switched off during a promotion and never switched back all produce partial sends. The flow reports profiles entering, which makes it look functional.
- common
Sending controls are suppressing the message
Smart sending windows that prevent a second message within a set period, quiet hours, frequency caps and per profile send limits will hold or skip messages. These are useful protections that become a problem when campaigns and flows compete for the same audience.
- occasional
The profile is not subscribed or has been suppressed
Marketing email can only go to profiles with the right consent status. Anyone unsubscribed, suppressed after a bounce or a complaint, or never opted in will be skipped. Stores that recently cleaned a list see this as a sudden drop in recovery sends.
- occasional
Timing rules delay the message past its usefulness
A delay set too long, a time window that only allows sending during business hours, or a time zone mismatch can push the first message well past the point where the shopper still cares. The email sends, but it is not doing the job it was built for.
The fix
In this order
Each step is something you can do today. Do them in sequence; skipping ahead is how a review fails twice.
Prevent it next time
- Test the full flow with a real abandonment after every checkout, theme or app change
- Alert on flow recipients falling below a normal daily range so a silent break is caught quickly
- Keep one system responsible for abandonment messaging and document which one
- Review skip reasons monthly rather than only when someone notices the revenue
Abandon a cart yourself and follow the profile
Use a private window and an address you control, arrive through a link that identifies you if the flow depends on that, add to cart, begin checkout, then stop. Open your own profile in the email platform and check whether the event appears.
Confirm the events are arriving
Look at the profile's activity feed for the trigger event, and compare the count of those events in the platform against abandoned checkouts in the store admin for the same period. A large gap points at the integration or the tracking script.
Check the flow status message by message
Open the flow and confirm the flow itself and every individual message are live rather than draft or manual. Read the analytics per message, since a flow with a healthy first send and empty later sends usually has one message left switched off.
Read the skip reasons
Most platforms record why each profile was skipped. Group those reasons and you will usually find one dominant cause, such as a sending window, a consent status or a filter. That single figure replaces a week of theorising.
Rewrite filters to be narrow and deliberate
Keep the filter that skips anyone who has since placed an order, since that is essential. Remove blanket exclusions such as anyone who received any email recently, and replace them with a rule limited to the flows that genuinely conflict.
Capture the email address earlier
Add a signup offer that identifies visitors before checkout, ask for the address at the first checkout step rather than the last, and make sure the platform's identification script runs so returning subscribers are recognised. This raises how many abandonments are addressable at all.
Set timing that matches buying behaviour
Send the first message within a few hours while the decision is still live, and space the rest over the following days. Check the time zone the delay uses and remove any window that pushes the first message to the next working day.
Reconcile against the store's own recovery email
If the store platform also sends an abandonment email, decide which system owns the sequence and switch the other off. Two systems sending on the same trigger produces duplicate messages and complaints, or conflicting suppression.
When to get help
Get help when the trigger event has stopped arriving and the integration looks correct, because that usually means a change in how the checkout emits events and it needs tracing across the store, the tracking script and the platform. It is also worth help when abandonment recovery is a meaningful share of revenue and the sequence has never been tested properly, since the gains usually come from identifying more visitors and from the timing and content of each message rather than from any single setting.
Free. We reply within one business day.
Why is my flow reaching far fewer people than my abandoned cart count?
Because most abandonment happens before you know who the visitor is. Only profiles with a known email address can receive anything. Compare identified abandonments with total abandonments, and treat raising the identification rate as a separate project from fixing the flow.
Should the flow trigger on added to cart or on started checkout?
Started checkout is the stronger signal and captures an email address in the process, so it is the better primary trigger. An added to cart flow can run alongside for known subscribers who never reached checkout, with filters that stop the two overlapping for the same person.
Can I send abandonment emails to people who never subscribed?
Marketing messages generally require consent, and rules differ by region, so this is a legal question rather than a platform setting. Where an address was entered at checkout, treat it carefully and take advice for the markets you sell in. The safe path is capturing consent at the point the address is given.
How do I stop the flow sending after someone completes their order?
Use a filter that removes anyone who has placed an order since entering the flow, evaluated before each message rather than only at entry. Test it by abandoning a cart, waiting for the first message, then completing the purchase and confirming the later messages are skipped.
Services that fix it for good
Related problems, answers and terms
Stop the leak.
A free Growth Analysis finds what is broken and ranks it by the revenue it costs you.