An abandoned cart email doesn’t go out because a customer changed their mind. It goes out because a chain of precise technical conditions has been verified, in a precise order, without any human clicking send. Specifically: a product needs to be added to the cart, a departure from the purchase journey needs to be detected, an email address needs to be linked to the contact, a delay needs to have elapsed without new activity, and no order should have been placed in the meantime. Remove just one of these conditions and nothing goes out, even if the email SaaS dashboard shows an “active” flow. “We lost 30% of deliverability in 3 months with no change on the content side, what’s going on here”: the question comes up often on the growth side. The answer sometimes lies in a single field of the flow that never gets filled in.
The 3 data points that must exist before the trigger fires
Three distinct pieces of information need to land in the automation tool before the countdown starts. First, a product event: an item added to the cart, or, on stricter journeys, crossing the first step of the checkout funnel. According to Klaviyo, whose library of prebuilt flows distinguishes between the two (Flows > Cart Recovery), the Started Checkout trigger fires when shipping details are entered, on the first page of the purchase funnel and before the payment step, while Added to Cart fires as soon as an item is added to the cart, a step earlier (Klaviyo documentation, 2026). Next, an exit signal: closing the tab, navigating to another page, or simple inactivity measured over a window of a few minutes. Without it, the tool can’t distinguish an abandonment from ongoing consideration.
Last comes the contact identifier, tied to a usable email address, often the most fragile of the three. It usually comes from a field filled in at the start of checkout, before the order is even confirmed. Many filter it after the fact, once the bounce has already been logged, on the assumption that checking it at entry costs more than it’s worth. A typo in this field, like a throwaway address entered to get through the step faster, doesn’t stop the trigger from firing though: the cart event, the exit signal, and the identifier are all present, just with the last one in an invalid form. The email still goes out to an inbox that doesn’t exist or that no one will ever check. Verifying the address the moment it’s typed into the email field, even before the item is added to the cart, costs a fraction of a second and prevents this bounce after the fact, rather than fixing it once it has already hurt sender reputation.
An even more deceptive case exists: a catchall address responds with 250 OK on receipt before silently deleting the message, without generating any usable bounce. The email SaaS then shows a “delivered” send for an email no one ever reads. When a bounce actually does happen, the receiving server returns an NDR (Non-Delivery Report) carrying an Enhanced Status Code such as 5.1.1, unknown address (format defined by RFC 3463): information that few tools surface clearly back to the abandoned cart flow that generated it.
The wait time before sending
No single standard sets this delay: ranges run from 30 minutes to several hours depending on cart value, never one figure that fits every case. The stakes explain why the mechanism stays this rigorous despite that variability. Roughly 70% of carts are abandoned before payment, according to the cumulative analysis of dozens of e-commerce studies compiled by the Baymard Institute. Automated follow-up flows, which account for only 2% of total sends, generate up to 30% of email-attributed revenue, with an average open rate of 35.75% and revenue of $2.54 per delivered send (Omnisend, 2026 report on 2025 data).

The observed ranges still converge, according to the Omnisend 2026 report on 2025 data: a first send 30 to 60 minutes after abandonment captures peak attention. Klaviyo places that same first email between 2 and 4 hours after checkout begins, with a second message 20 to 48 hours later. The gap reflects average cart value rather than any disagreement between the two platforms: a $40 piece of clothing gets decided on quickly, a $900 piece of furniture gets compared over several days.
| Cart profile | Email 1 delay | Email 2 delay |
|---|---|---|
| Low-value cart (consumables, fast fashion) | 30 min to 1 hr | 24 hrs |
| Mid-range cart (general retail, multi-product) | 4 hrs | 24 hrs |
| High-value cart (B2B, furniture, high-ticket) | 4 to 8 hrs | 48 hrs |
The mid-range case, a first email 4 hours after abandonment followed by a second at 24 hours, is the most common scenario in general e-commerce. Attribuly confirms this logic in its 2026 benchmark: the delay grows longer as the average cart price rises. The wait time simply gives room for a spontaneous purchase to happen before reaching out to the contact.
The no-order check before sending
The countdown alone isn’t enough to authorize the send. Right before going out, the system runs back through a filter that checks whether an order has been placed since the initial trigger.
Klaviyo places a profile filter right before every message in an abandoned cart flow: it blocks the send to anyone who has ordered since the trigger fired and stops repeat sends to anyone who has already just received a similar message from the same flow (Klaviyo documentation, 2026).
A high number of “filtered” contacts in an abandoned cart flow’s stats signals that this mechanism is working: every filtered contact ordered before the next email and so didn’t receive a needless follow-up. The filter did its job. The exact name of this step varies from tool to tool. The logic stays the same: query the online store’s API (the /wp-json/wc/v3/orders endpoint on WooCommerce, for example) to check the status of the order tied to the contact, right before each send in the sequence.
This check repeats at every email in the sequence, not just on the first send. A contact who receives the first email at 2:02 PM and places an order at 2:47 PM will never receive the second message scheduled for the next day, even if they opened the first one. The filter operates at the contact level, not just on the original cart event. A flow that skips this step and sends a promotion to someone who just bought something doesn’t improve conversion rate: it damages brand perception and drives up the complaint rate starting with the very next send.
The conditions that block sending
Four situations stop an abandoned cart email from going out, even when the cart event and the delay are both in place.
- The contact isn’t identified: guest browsing with no email captured before the abandonment, or a technical identifier lost between two visits.
- The address is unsubscribed or on a suppression list, often shown as “Suppressed” in the email SaaS: an abandoned cart follow-up falls under prospecting rules (see the legal status of the abandoned cart email), so it’s subject to the same consent rules as a standard marketing email campaign.
- An order was placed during the wait time, caught by the filter described above.
- The cart data is transmitted incorrectly: empty product blocks or prices showing zero. The flow technically fires even though the resulting content is unusable. Most platforms cancel the send rather than deliver a broken email.
These four blockers share one thing in common. Nothing breaks loudly. The flow keeps running, the tool doesn’t surface any visible error, and the missing email blends into plain silence in the month’s stats.
The 2 or 3 email sequence
Most abandoned cart flows stop at 2 or 3 messages. The full picture of email automation scenarios, beyond just abandoned carts, is covered elsewhere (see automated emails: 5 scenarios and their impact on deliverability).
The first email stays factual: a product image and a direct link back to the rebuilt cart. 20 to 48 hours later, the second one pushes harder, citing limited stock or an already-published customer review. A third message, when it exists, most often carries a discount and wears out the contact’s patience fast if it keeps coming back to the same carts too often: the Digital Fairness Act, whose legislative proposal is expected from the European Commission by the end of 2026, is set to eventually rein in this kind of repeated pressure. Segmenting the sequence by contact profile (new customer, repeat buyer, high-value cart) moves open rates more than the number of emails sent does (see email segmentation: the criteria that actually work).
The trap that breaks the trigger without anyone noticing
The product data feed itself causes the hardest blockage to spot, well before the delay or contact identification even come into play. An updated e-commerce plugin (WooCommerce, Shopify) or a webhook that changes format is enough: the product block sent to the automation tool arrives empty or with a price of zero. The flow runs, the abandoned cart event exists, the contact is identified, the delay elapses normally. Nothing surfaces. No alert fires in the usual dashboards. The email goes out, but stripped of the information meant to convince: the product photo and its price.
This kind of failure gets caught by opening a test email by hand (with a filled cart) or through a rendering tool like Litmus or a seed testing tool like GlockApps, rather than by reading only the flow’s send and open stats. A solid open rate says nothing about the content actually delivered to the inbox. The same holds for list hygiene upstream: a flow running on addresses that were never verified racks up soft bounces, temporary bounces (SMTP code in the 4.2.x family) that don’t remove anyone from the flow but that, once they pile up, end up looking like a content problem rather than a data problem.
The trigger can be flawless; it never makes the decision in the customer’s place.
