Abandoned cart flow - multiple add to cart events for 1 user

  • 23 July 2021
  • 7 replies



I am setting up a flow for people that added to cart and did not purchase or started checkout.

I am using the predefined flow in the flow library.

I have some customers that are adding multiple items in their cart and it seems that this will create multiple events for that users, vs. 1 event with multiple product.

Is it normal or a set-up problem on my store?

The issue it creates is that:

  • the trigger (add to cart) will potentially send multiple emails to the same person (manageable through flow filters and smart sending), 
  • I can only link show product in the email I will send to the customer during the flow (vs. showing all the items added to the cart, like on the abandoned checkout flow)
  • I am not sure what product will be shown in the re-reminder I will send in that flow to the same customer. it might be another one compared to the 1st email I have sent.

Am I doing something wrong? or misunderstanding how the flow will work?




Best answer by 23 July 2021, 22:41

View original

7 replies

Userlevel 6
Badge +5

Hello @StevenCD,

Thanks for sharing your question with the Klaviyo Community!

What you are experience is a normal occurrence and expected behavior. Unlike the Started Checkout event which is triggered when your customers proceed from the cart page to the checkout process, sharing with Klaviyo all the events that were in the cart when the event was recorded; the Added to Cart event is triggered when the customer clicks on the add to cart button on the product page. This will trigger an individual event every time a customer clicks on an add to cart button which would be associated with each product that was added to the cart. 

This means if a customer was browsing your site and went to three different product pages and added all three to your cart; this customer would trigger three Added to Cart events and would be queued up for the Abandoned Cart flow three separate times; once for each of the products the customer added to their cart. If you wish to prevent this and limit the number of times a customer can enter this flow, you can use the flow filter of “Has not been in this flow, Skip anyone who has been in this flow in the last X-timeframe”. This is also suggested in the The Abandoned "Added to Cart" Flow subsection of the How to Create a Custom "Added to Cart" Event for Shopify Help Center article. 

If you have more than one email within your Abandoned Cart similar to the pre-built abandoned cart flow found in the Flow Library, all emails within the flow will highlight the product and product details that caused the user to trigger the flow. For example, if I added a t-shirt to my cart to trigger the Added to Cart event, so long as I am still going through the flow and have not been skipped from the flow, the emails would all be referencing the t-shirt that initiated me into the flow. This would also extend to if I had triggered the Added to Cart event multiple times where each instance would be a separate event.

Other resources I would suggest taking a look into to learn more about how the Add to Cart metric and flows function and how metric triggered flows with dynamic contact function in general are the below Help Center articles and other Community posts:

I hope this helps! Have a great weekend!



Thanks a lot David. All clear now. 


David - thank you for that clarification, however, it leaves me with one open question:

In the case of multiple “Add to Cart” events, if the filters are set up as you say only the initial “trigger” event is kept.  This means that, if the customer lets say added that shirt and then subsequently removed that shirt, the customer would still receive an email that triggered the shirt add.

So,  the question is how do we make sure that the email that is sent is triggered by the most recent “Add to Cart” event.


Would this flow accomplish:

  1. Having customer only in the flow once
  2. Having the most recent event trigger “bump” the old triggers out of the flow
  3. Ensure customer doesn’t get the abondoned cart email more than once a week


Userlevel 6
Badge +5

Hey @cdetdi,

Great question!

If you wanted only the latest, most recent Add to Cart event to be registered as opposed to the first Add to Cart to be recognized in your flow, you are correct in your understanding that you’ll need to use the “What someone has done, Add to Cart zero times since starting this flow” instead of the “What someone has done, skip anyone who has been in this flow in the last X-Timeframe” filter. 

For example, if someone has triggered their Add to Cart event multiple times, the customer would be going through the flow from the first instance, but when the subsequent Add to Cart event is recognized, this would cause the customer’s first instance to no longer be eligible for the flow. In this case, they would be skipped for the first event but would still be proceeding through the flow for the subsequent second Add to Cart event with the most recent product that was added to the cart. 

Taking a look at your screenshot, the flow filters you have in place would accomplish your goal of having your customers only going through this flow on time, having only the most recent add to cart event instance trigger this customer through the flow experience, and ensuring the customer only gets the abandoned cart email once a week. 

I hope this helps!

David is there a way to combine these events to rebuild their cart in the email similar to the abandoned checkout flow? Something along the lines of: wait 4 hours, show all products added to cart since starting this flow? 


We’re using a Klaviyo form for our pop-up so that users are cookied on their first session if they sign up for the newsletter. I am seeing a lot more added to cart events now coming through now that we have switched to this and if we could rebuild their cart in the same way as the started checkout event and send emails with all of the products they added to cart in one email I know we would send a lot more emails and performance would likely be very good.




Userlevel 6
Badge +5

Hey @flogrown.trevor,

Great question!

Unlike the Started Checkout event, the native Add to Cart event designed by Klaviyo is meant to trigger per product that gets added to cart. This means that for each time a cookied customer visits an individual product page and clicks on the “Add to Cart” button, they trigger an Add to Cart event which parses that specific product’s data as part of the event. The Started Checkout event on the other-hand is triggered when a customer goes to the checkout page and moves past the initial contact information page. This process allows the event to record and pass along all the product data pertaining to the items in the user’s cart at the time they reach this stage of the checkout process.

Since the Add to Cart event is only passing information pertaining to a single product, the dynamic table block used within the flow email would only be able to return the individual product data that initiated the user into the flow, which is why for single product events we generally recommend static tables as a replacement. Similarly, because the Started Checkout event contains a culmination of product information, the email is able to return all of the data points pertaining to these products to highlight. You can learn more about building these blocks to reference your event data from the About Using Event Variables to Personalize Flows and How to Build Dynamic Blocks in a Flow Email Help Center articles.

To create a flow email triggered by an Add to Cart event which would highlight all of the products a user has added to their cart, I would suggest working with a developer and building your own custom Add to Cart event which does support multiple products; unlike the default Add to Cart event built by Klaviyo. You can do so by leveraging Klaviyo’s API to create this custom event which would work in a similar fashion to the Started Checkout metric where it would record and pass the event containing all the products that were added. You can find more resources pertaining to building your own custom event and using Klaviyo’s APIs from the resources we offer below. In addition, if you don’t have a developer on hand, Klaviyo also has a number of Agency Partners who specialize in development work.

I hope you have a great day!