How to create an abandoned cart flow

Last updated at:

You will learn

Learn to set up valuable abandoned cart flows in Klaviyo in order to increase your ecommerce business revenue and personalize communication to your subscribers. Abandoned carts flows are a message or sequence of messages sent to someone who added an item to their shopping cart, but failed to complete the purchase. Not contacting these customers is leaving money on the table — almost 70% of shopping carts are abandoned on average.


There are a lot of reasons why someone abandons a cart. Perhaps the shopper didn't have their credit card in front of them or wanted to browse your site a bit more before making a decision. Whatever their reason is for leaving mid-checkout, most often it's not because they're no longer interested in the product.

Depending on your ecommerce platform, you may already have a built-in abandoned cart flow that is running. For example, if you use Shopify, you likely already have a Shopify abandoned cart flow. Klaviyo allows you much more customization and targeting than your ecommerce platform’s default abandoned cart flow. In Klaviyo, you can fully customize the content of the email and SMS, add multiple messages, and branch the flow based on things like the value of the item in the cart, and much more. You’ll want to turn off any default platform abandoned cart messages to make sure that you’re not double-messaging anyone.

Creating an abandoned cart flow

After you integrate your ecommerce store with Klaviyo, you'll find several best practice flows populate automatically in your account. One of these is the abandoned cart flow. 

If you use Magento, install the Magento extension before leveraging our abandoned cart flow. The extension is what allows Klaviyo to receive data whenever someone starts a checkout. For most other ecommerce platforms, after integrating your store, you will see Started Checkout data populating in your account. Note that this default flow includes only emails.

You can also build an abandoned cart flow from scratch, but this will not automatically include the dynamic content discussed below. 

Flow trigger and filters

The most common type of abandoned cart flow uses the Started Checkout event as a trigger. This works by tracking:

  1. When someone adds an item to a cart and then starts a checkout
  2. If someone completes their purchase and places an order

It's important to note that you can instead create a similar flow based solely around when someone adds an item to their cart but doesn't place an order. This "Added to Cart Trigger" flow can be found in the Flows Library.

If someone adds an item to their shopping cart but does not make a purchase, this is considered an abandoned cart. Hence, the flow is triggered when someone starts a checkout, but there is a filter on the flow excluding anyone who completes their purchase. In this case, the person who abandoned a cart will get all the messages in your abandoned cart series.

Klaviyo's flow builder showing the start of a new Abandoned Cart flow after someone started a checkout but did not place order

It is important to note that everyone who starts a checkout will enter the flow. If they go on to place an order, they will be skipped. For this reason, you will typically see a large number of people who enter the flow being skipped due to "failing flow filters." This is actually a good thing and simply means the flow is functioning correctly by not sending abandoned cart emails to people who placed an order.

Another flow filter you might want to add is Hasn't been in flow in the last X days. This will prevent those who recently received your abandoned cart messages from receiving them again. 

A view of the recommended trigger and flow filters to setup, including started a user checkout, placed zero orders, and has not been in flow in the past 7 days

If you have more than one message in your flow, Klaviyo will check your flow filters before each individual email or SMS is sent out. This means that if someone completes their purchase after the first email, they won't receive any other messages in your series.

If your shoppers live in a region with data protection laws, you should consult your legal team before turning your abandoned cart flow live. Check out our guide to best practices for complying with data privacy laws for more information.

Content to include in your abandoned cart flow

One of the most compelling aspects of an abandoned cart message is the ability to include information about the item someone abandoned directly in the message. Klaviyo's default abandoned cart flow contains a dynamic content block and go-to-cart button that is unique to each ecommerce integration. This content block is what allows you to include an image, link, and other information about the product in the email. The go-to-cart button is what allows someone to navigate directly back to their cart.

While it's true that the dynamic content is pulled in automatically for the built-in abandoned cart flows in Klaviyo, you may want to customize it. Further, if you are building an abandoned cart flow from scratch, this information won't be pulled. For more details, check out this article on using dynamic variables to personalize flow messages.

Are you using Klaviyo’s new template editor? Head to our new editor resource center.

Because these blocks utilize tags that are unique to each integration, it can be challenging to rebuild them on your own. We highly recommend saving these blocks before editing the default email or swapping out the template. This way, you can completely customize the design of your email, but don't have to worry about affecting its functionality.

An example showing how to click on the star button in the side navigation to save content blocks for later use

By default, the abandoned cart block will pull in all the items that someone has left in their cart. To change or limit the number of items displayed, you can edit the block.

If you accidentally delete either of these dynamic blocks, you can re-add Klaviyo's default abandoned cart flow to your account from the Flows Library in the Browse Ideas tab.

You can also build your own abandoned cart flow from scratch. Create this flow by navigating to the Flows tab and select Create Flow > Create from Scratch > Create Flow > Metric.

Abandoned cart flows in Klaviyo typically use the Started Checkout, but you can also use Added to Cart if you have Shopify, BigCommerce, Magento 2, or WooCommerce

As we mentioned, the core part of Klaviyo's default abandoned cart flow that you will want to keep is the dynamic content. We recommend saving the dynamic content block and button before editing the default template to ensure that you don't overwrite it. Then, if you have a base template that you've already designed for your other emails, you can use this as your abandoned cart template and drag in the dynamic content from the Saved Blocks library.

Below is an example of a well designed abandoned cart email:

An example of an abandoned cart email with the picture of an iPhone X / iPhone XS case dynamically populated from the user's latest product interaction

Notice that the primary focus of the message is the item that the recipient left in their cart. This dynamic content should be the core of your email template. After all, this is the item that they demonstrated an interest in in the first place.

It’s not advised to have other products highlighted in the abandoned cart message since your main goal is to drive shoppers back to their cart to complete their purchase. Including other products can distract from this message and lead to an overall lower conversion rate.

The language you use in your abandoned cart message should encourage people to reach out if they have questions about your products and inspire a sense of urgency to convince them to complete the purchase. For example, you could lead with "Hurry, before it sells out!"

While it's common to include a discount or incentive in an abandoned cart flow, we don't encourage you to include a coupon right off the bat in the first email. This can train customers to abandon carts in order to get the discount and is oftentimes giving money away unnecessarily. If you would like to include an incentive in your abandoned cart flow, it's best to hold off until the final email, or only offer it to people who have never purchased before.

Time delays: when to send your messages

Immediately after your flow trigger, include a time delay. If there's no time delay, the first message will send as soon as a shopper adds an item to their cart, leaving no time to see if they go ahead and place an order. You want to give shoppers the chance to complete their purchase before sending them a cart reminder.

Deciding when to send your first abandoned cart email can be difficult. As a rule of thumb, we recommend sending your first message between 2–4 hours after someone starts a checkout, and then sending a second email 1–2 days later.

An example of a  flow with a time delay of 2 hours placed after someone started a checkout and then again 20 hours after the first flow email

There is no one-size-fits-all rule for the best time to send abandoned cart messages. Each business and audience is different, and what works for one store may not work for another. Timing may vary depending on what you sell — for example, if you sell big-ticket items, like mattresses, the buying process likely requires more consideration than something smaller, like shoes. For this reason, you might find that a longer time delay is more effective. If you email someone too soon after they abandon a cart without giving them the opportunity to finish making a purchase, you can come off as tone-deaf or overly pushy.

Additionally, if you’re using an integration besides Shopify or Bigcommerce, we may not sync Started Checkout data immediately. You will want to double-check how often data is synced from your ecommerce store to your Klaviyo account to ensure that your first abandoned cart email doesn’t send until after these events are synced. 

This means that if, for example, you set an abandoned cart email to send 30 minutes after someone abandons a cart, your customer may not receive the first email at exactly 30 minutes. Some integrations, such as OpenCart, sync once every hour. As a best practice, we recommend setting a time delay of a least an an hour and 15 minutes to accommodate different sync timings. 

How Many Abandoned Cart Messages to Send

Based on research from thousands of Klaviyo ecommerce customers, we have found that sending two to three abandoned cart messages in your flow leads to optimal performance. For more information on how we determined this result, check out our abandoned cart benchmark report.

Use SMS in abandoned cart flows

Using Klaviyo to send SMS messages in your abandoned cart flow is a great way to reach customers on another channel to remind them of outstanding items in their carts. There are several ways you can fold SMS into your abandoned cart flow, but one of the most effective ways is to reach out to customers who have not opened your abandoned cart email and follow up via SMS.

For your abandoned cart flow, you must:

  • Only include 1 SMS message
  • Have the message send within 48 hours of the individual abandoning their cart
  • Have double opt-in turned on (US and Canada only)

If you don't follow these guidelines, you may experience heavy filtering by wireless carriers. 

Next, drag a conditional split below the time delay stipulating that someone has opened the previous email. You can do this using What someone has done or not done > Opened Email at least once over all time > where Message equals [INSERT MESSAGE NAME]. Fill in the message name with the name of your first abandoned cart email (note that this is different from the subject line).

=A flow example showing a conditional split below the time delay based on if someone has or has not opened the previous email

After this first SMS message, you will want to rejoin the split so that recipients continue down the intended path even if they don't open the initial abandoned cart email. 

Note that many people will likely be skipped from receiving this text message due to several potential factors:

  • You have not already collected SMS consent. Klaviyo does not allow customers to send to contacts that have not explicitly opted-in to receive SMS marketing because this violates TCPA laws. 
  • You do not have a valid phone number for the recipient. Because everyone who starts a checkout will enter an abandoned cart flow, it's likely the case that you won't have phone numbers for a large number of contacts.
  • The contact is not in a location where Klaviyo SMS is available

Keep your messages short and direct, with a very obvious call-to-action (CTA). In this case, the CTA should link customers back to the items they left behind in their cart. To do this, you'll need a dynamic cart link.

For Shopify users, you can find the dynamic cart link on the upper right-hand side of the preview screen. Click the info button on the top right to preview the dynamic tags available for this event, then scroll to find the checkout_url. Click on the tag and it will automatically be copied to your clipboard. In other cases, use the cart link that is pregenerated in your abandoned cart flows. 

Paste the tag into the body of your SMS message. You will want to ensure that you have the Automatically shorten links box checked to conserve space in your message.

Klaviyo also enables quiet hours for flows automatically, preventing SMS flows from sending before 11 am and after 8 pm (using Eastern Time in the US and Canada and Australian Eastern Time in Australia).

Once you're satisfied with your message, turn it live and it will start sending automatically to eligible contacts.

Measuring abandoned cart performance

Once you have your abandoned cart flow up and running, you will want to analyze how it is performing to see where there's room for improvement. Below are some benchmarks from our Abandoned Cart Benchmark Report:

Open Rate Click Rate Revenue per Recipient
41.18% 9.50% $5.81

Your conversion rate will depend on the conversion window you have set in your account, which is why our report instead looked at revenue per recipient. By default, the conversion rate for your abandoned cart flow will be Placed Order, as this is the desired action someone would take after receiving your abandoned cart emails. However, you can change this conversion metric if you would like.

You can see an overview of your abandoned cart low's performance on the Visual Flow Canvas by clicking Show Analytics.

Within flows, the Show Analytics button is highlighted in the upper right navigation bar and everything else is greyed out

If you click on a particular email and then click View all Analytics in the left-hand panel, you will be brought to a more granular view of that individual email's performance.

The Overview dashboard of the View All Analytics of Abandoned Cart: Email 1

Learn more about Flow Analytics. Additionally, you can export your analytics to run your own analyses.

Analytics are directly tied to optimization. For example, if you notice your open rate for an email is lower than average, you can A/B test subject lines or timing to find something that may work better. If you have a low click rate, maybe you need to make your CTA more obvious or, for SMS, try including an image or GIF. If you notice you have a lower than average amount of revenue per recipient, you may want to consider offering a discount in the second email to nudge people to purchase.

Note that you may see customers who have purchased in the Waiting queue for an abandoned cart flow. The way this flow works, everyone who is captured by the initial trigger — Started Checkout —will queue up for the first email in the flow and appear under Waiting. At a person's scheduled send time, Klaviyo will check the filter Has Placed Order zero times since starting this flow and skip anyone who completed a purchase. So even if they appear in the Waiting queue, if they placed an order, they will be skipped. Customers will also appear in the Waiting queue if they are to set to receive an SMS message during their quiet hours, and will receive the message once window has passed.

Taking your abandoned cart flow to the next level

Once you have a basic abandoned cart flow set up, you may wonder what comes next and how you can make your existing flow even better. Because all businesses are different and have their own unique audiences, there isn't just one formula that will work for everyone.

The Browse Ideas tab is a great place to look for new ideas and inspiration when leveling up your abandoned cart flow, and includes many of the best practice branched flows outlined below.

Testing new ideas is the best way to optimize your abandoned cart flow. Below are a few recommendations for where to start.

To influence open rate (email only):

  • Timing
  • Subject lines
    • Urgency
    • Emojis

To influence click rate:

  • Content
    • Plain text vs. graphic rich
    • CTA location
    • General email layout
    • MMS vs. SMS

To influence conversion rate or revenue per recipient:

  • Branching
    • Purchasers vs. non-purchasers
    • Domestic vs. international
    • Product category/collection
    • Value of
    • Number of

Below, we talk about different branches you can use in your abandoned cart flows.

Branching by purchasers vs. non-purchasers

Messaging existing customers and non-customers differently is a good practice, especially if you plan on offering an incentive if your abandoned cart flow. You don't want to over-discount, so you may want to only offer a coupon code to shoppers who have never purchased from you before to encourage them to buy for the first time.

If you take this approach, be sure to include language like, "Take 10% off your first purchase" so that recipients don't grow to expect a discount every time they abandon a cart. Additionally, use dynamic coupon codes to prevent sharing on sites like RetailMeNot, etc.

To split your flow by purchasers versus non-purchasers, first, drag a conditional split into the top of your flow. Then, set this split to be based on What someone has done or not done > Has Placed Order at least once over all time. People who have never placed an order before will go down the NO path while existing customers will go down the YES path.

An example of a conditional split placed at the top of the flow if a subscriber placed an order at least once or not

Then, you can include a coupon in the final email of the NO path.

Branching by domestic vs. international shoppers

You may be able to offer special perks to domestic customers that you don't to international customers, like free shipping. Branching your flow by domestic versus international customers allows you to highlight these perks if your emails to domestic customers to persuade them to purchase.

First, drag a conditional split to the top of the flow. Then, set this split to be based on Properties about someone > Country equals US. Those who flow down the YES path will be domestic customers, and those on the NO path are international.

An example of split of a flow using branching to separate out if a subscriber is in the US or not

Branching by product category or collection

If you have a large product offering, you may want to branch your abandoned cart flow by category or collection to include more relevant copy and images in your emails. One key example is if you sell men's and women's products. In this case, it's also important to include a default branch in case the product in someone's cart is not in either the men's or women's collection.

First, drag a trigger split to the top of the flow. Set the collection (or "category," depending on your ecommerce integration) to contain Women's. Then, drag another trigger split directly beneath the first one. Set this collection to contain Men's. Those who flow down NO path after this trigger split should receive a more generic abandoned cart flow.

A flow example separating subscribers through the product category of men's versus women's clothing

Branching by cart value

You may want to message customers with larger cart values differently than those at or below your store's average order value. For example, if the value of the items in someone's cart adds up to triple your average order value, you may want to offer them an incentive to encourage them to complete the purchase.

To do this, drag a Trigger Split to the top of the flow. In this example, our average order value is $100. Next, configure the split to be based on Checkout started value is less than 300. Those whose carts are worth less than $300 will flow down the YES path, while those with triple your average order value or more will flow down the NO path.

An example flow where a Trigger Split is used to separate out the monetary value of less than 300 or higher of a potential cart.

Branching by cart size

Similarly, you may want to branch your abandoned cart flow based on the number of items someone has in their cart. For example, you may want to offer someone with three or more items in their cart a buy one get one free (BOGO) or other promotion to encourage them to place an order.

To do this, first drag a Trigger Split to the top of the flow and configure it based on Item Count is less than 3. Shoppers with fewer than 3 items will flow down the YES path, while those with more than 3 items will flow down the NO path.

An example flow where a Trigger Split is used to separate the number of items in a potential cart between Item Count is less than 3 or higher

Additional resources

For more inspiration for how to design your abandoned cart emails, check out Really Good Emails.

Still looking for ways to take your abandoned cart flow to the next level? Check out these additional resources:

Was this article helpful?
1831 out of 2489 found this helpful