Skip to content

Klaviyo abandoned cart flow template

Checkout Started is not an abandoned cart

An abandoned cart message is a reminder for someone who began checkout and did not buy. Klaviyo does not record a separate abandoned-cart event for that outcome. On Shopify, the integration records Checkout Started when Shopify sends checkout information that includes an email address or phone number. A customized checkout may not record the event until the shopper reaches the next step. Checkout Started includes people who later place the order, so the metric alone is everyone who started, not everyone who left.

Older Klaviyo help articles call this metric Started Checkout. The current Shopify data reference calls it Checkout Started. Open Analytics, then Metrics, and build the flow on the checkout metric your account is actually receiving. A flow pointed at a renamed or idle metric will look finished and send nothing.

Added to Cart is a different event. Klaviyo’s troubleshooting guide describes three neighboring automations. Browse abandonment is triggered by Viewed Product and skips people who start checkout. The default abandoned cart is triggered by the checkout metric and skips people who place an order. An alternate abandoned cart is triggered by Added to Cart and also skips people who place an order. On Shopify, Viewed Product, Viewed Collection, Submitted Search, and Added to Cart are onsite events. They require Track behavioral events in the Shopify integration settings. A Checkout Started flow does not depend on that onsite setting, because the event comes from Shopify’s checkout.

The filter that stops the post-purchase email

Klaviyo’s abandoned-cart instructions add one profile filter: the person has Placed Order zero times since starting this flow. Profile filters are checked when someone enters and again before each email or SMS. Trigger filters on a metric flow are checked at entry and are not checked again at send time. Additional filters on one message apply only to that message.

Everyone who starts checkout can enter. If they purchase during a delay, the next message is skipped because they fail the Placed Order filter. Klaviyo notes that a large skipped count for failing profile filters is expected. It means buyers were not sent a message about items they already purchased. A skipped count near zero, on a store that does take orders, means the filter is missing, pointed at the wrong metric, or Placed Order is not being recorded. Open the Placed Order metric and read the activity feed before you blame the delay.

Keep the order metric consistent. Klaviyo’s Shopify reference warns that Placed Order and Ordered Product sync seconds apart and are not the same event. A flow triggered by Placed Order that excludes Ordered Product since starting the flow skips everyone. The abandoned-cart filter has the same trap in reverse: exclude Placed Order unless you have confirmed that a different metric is the one this store records for a completed purchase.

If the store also sells through Buy with Prime, Klaviyo’s abandoned-cart article says to add a second filter so those buyers are not treated as abandoners: Placed Order (Buy with Prime) zero times since starting this flow. Someone skipped by a profile filter is not removed from the flow. They continue to the next step, and the filter is checked again there. For this particular filter, a person who has ordered will keep failing it.

When the first message should wait

Put a time delay immediately after the trigger. The delay is what turns “started checkout” into “did not finish.” Klaviyo’s pre-built abandoned cart flows wait 4 hours before the first message. Their published guidance is to send the first message about 2 to 4 hours after checkout starts, and a second message 20 to 48 hours later. They also say this is not a rule for every catalog. A high-consideration product and a repeat consumable do not have the same decision time. A reminder that arrives while the person is still paying reads as a nudge from someone watching the card reader.

If the ecommerce integration does not sync checkout and order events immediately, a very short delay can send before Klaviyo has seen the purchase. Klaviyo says some integrations sync about once an hour. If you need a short delay, use at least 1 hour and 15 minutes so the order has time to arrive and the filter can skip the buyer. Do not copy a 15-minute delay from another brand’s screenshot. After the first message, add the next delay and the next message only when the first one is previewed. A second email that repeats the same subject is easy to ignore, and it still has to respect the same Placed Order filter.

Items in the cart, and the link back to checkout

Klaviyo’s default abandoned-cart templates use a dynamic block that repeats once per item. The block is filled from the triggering event, so it belongs in a metric-triggered flow, and the field names depend on the integration. For Shopify, the detailed item array sits on the event’s extra object as line_items. In a dynamic table, the Row collection is event.extra.line_items, without curly braces. Preview a real Checkout Started event before you trust the columns.

Klaviyo’s own examples do not all use the same item tag. The dynamic-table article shows tags such as {{ event.extra.line_items.0.title }} and {{ event.extra.line_items.0.price }}. The event-data article shows a product name at {{ event.extra.line_items.0.product.name }}. Copy the tags that your preview renders. A tag from a screenshot of a different integration will leave a blank row.

The button that returns the shopper to the cart should use the checkout URL on that same event. For Shopify, set the link address to {{ event.extra.checkout_url }}. Klaviyo also documents {{ event.extra.responsive_checkout_url }} and says Shopify currently supplies the same link for both, so swapping them does not fix a button that already points at the wrong page. The Shopify data reference says this URL rebuilds that person’s cart, including when they open the email on another device.

If nobody has started checkout since the metric was connected, the preview has no event to select. Place a test checkout with an inbox you can open, wait until Checkout Started appears on that profile, and preview again. Confirm the item name, the image, the price, the quantity, and the button against that event. A broken image or a button that goes to the homepage is a template problem, not a delay problem.

Klaviyo documents a catalog tag, unpublished="cancel", for canceling a send when a referenced catalog item is unpublished. Use it only from the current out-of-stock instructions, and preview it. The tag wraps the product markup and can cancel the whole message when the catalog lookup fails. That is useful when you mean it, and surprising when you paste it into the wrong cell.

Draft, manual, and live are separate for each message

A Klaviyo flow does not have one on/off switch. Each message is draft, manual, or live. Draft is the default while you edit, and nobody is scheduled for it. Manual queues people for you to review and send. It does not send by itself, and a later live message can still go out while the manual message waits in Needs Review. Live sends when the delay is up.

If every message is still draft, nobody enters the flow until at least one message is live or manual. Once people are inside, a draft message is skipped and they move on. They do not appear in that draft message’s analytics. Review and turn on, or Update status, can set the configured actions to live together. Unconfigured actions stay draft. Choosing a status without saving leaves the messages as they were.

Read the subject, preview text, from-name, and from-address on each message before you set it live. Klaviyo’s setup guidance says to personalize the pre-built templates first. The starter copy is a scaffold. It is not a description of your shipping window, your offer, or the name a customer should see in the inbox.

Smart Sending, a second flow, and past checkouts

Email Smart Sending defaults to 16 hours. SMS and push default to 24 hours. The windows are separate. Changing a window later does not shorten a countdown that has already started, and a message skipped for Smart Sending is not rescheduled. If a campaign went out this morning, the abandoned-cart email can be skipped for anyone who received that campaign. They may only see a later message in the series, or none of it. Turn the skip off on a message only when that message should send even if another email went recently. Klaviyo says not to enable Smart Sending on transactional mail. An abandoned-cart reminder is marketing, so leaving the skip on is a choice you should make while looking at the campaign calendar, not a switch to flip because a checklist said so.

If an Added to Cart flow and a Checkout Started flow are both live, one shopper can qualify for both. Decide which flow owns the reminder. The Added to Cart flow can skip anyone who started checkout, which is the same idea as the browse-abandonment filter in Klaviyo’s troubleshooting guide. Onsite Added to Cart still requires Track behavioral events. If that setting is off, the second flow is not a safety net. It is a flow with no entries.

Adding past profiles, which older articles call back-population, queues people who would have qualified before the flow was live. On a metric flow they are placed relative to when they did the action, not emailed all at once from the first step. The flow needs a time delay, or the timeline is zero days and there is nowhere to put them. Only live or manual actions are queued. Draft messages are not. Profile filters are checked at each step. Re-entry criteria are not checked for this operation. People who already skipped a message are not scheduled for that same message again, but they can be scheduled for a message you added later. Finish the Placed Order filter and the template before you use this control, or you will queue old checkouts into the wrong email.

Read the live flow before you rewrite it

The useful check is the flow that can send today: the trigger metric, the Placed Order filter, the delay on the canvas, the status of every message, and a preview against a real event. A large “fails profile filters” count on this flow is often the buyers, and that is the filter doing its job. “Skipped by Smart Sending” is a different result and will not correct itself on the next delay.

KlavyFlow is a read-only workspace for that review across client accounts. After you connect Klaviyo, the flow timeline places messages on the elapsed day, so a 4-hour first email and a next-day follow-up sit next to the creative. It does not edit the flow, change a filter, or send mail. Performance for a selected flow is a separate view, over 7, 30, or 90 complete account-local days, and a missing result stays missing rather than turning into a zero. Use Klaviyo when you need to change the trigger or the message status. Use the timeline when you need to see whether the delays you approved are the delays that are live.

14-day trial, then $95/month per client workspace. No payment card required. Or $995/year.