Abandoned Cart Flow Email #1 not pulling up product or cart info
Hello community,
I have set up a two-email abandoned cart flow. I have checked and re-checked my integration with Shopify and I’m still having two issues:
My first email won’t pull in any dynamic product info. While I’ve gone to the preview page, copied the URLs listed there, and plugged them in, it still isn’t populating. In fact, it isn’t even creating space in the email as if it was supposed to be there. The ‘return to cart’ CTA button is there, but no link. This is even more strange because the second email in the series is pulling and displaying this information just fine. I even copied the URLs from that one to the first and it didn’t work.
In the second email (and the first) the ‘return to cart’ CTA from the template goes to the product page and not the cart. I can’t find any URL that works to send a customer directly back to their cart. And it’s not a timing issue - I made sure there’s enough time to populate and not so long that the cart expired.
Any help would be greatly appreciated. I’m pulling my hair out.
Almost bald,
Sarah
Page 1 / 1
Hi @artfeltpuzzles,
Thanks for describing your issue. Happy to help out here! It will be a little tricky for me to diagnose the problem with 100% accuracy without seeing screenshots of the tables/splits in your flow emails, so if my initial suggestions don’t work, would you mind replying with screenshots of your setup in each email, specifically the tables/splits, and their settings? That being said, here’s what I recommend:
The quickest solution will be saving the table/split in your second email as universal content (clicking the star when you hover over the block, and giving it a name), and then dropping that universal content into your first email. It’s very likely there’s a difference in how these two emails have been set up, no matter how subtle, and that difference is causing the first email not to work.
To get into more detail, what’s the trigger for your flow? Is it Shopify’s Added to Cart event? If so, you’ll want to make sure that you’re not using a dynamic table in your email. You’ll either want a static table or a split block. What type of block holds the product name/price/image in your first email? If it’s a dynamic table, you’ll want to change it to a static table or a split. The reason for this is because you only want to use dynamic tables in flows triggered by events that contain multiple items (like Checkout Started, Placed Order, Fulfilled Order, ect). Static tables or split blocks should be used for events like Added to Cart, which contain data on only that one item a person added to their cart at that moment. Hopefully this makes sense! The main takeaway from this is that you should not be using a dynamic table in a flow triggered by Added to Cart.
Finally, if you’re trying to link people back to the checkout page in a flow triggered by Added to Cart, that’s unfortunately not possible. People can trigger an Added to Cart event before even reaching the checkout screen, so the Added to Cart event does not contain a link to the checkout page within it’s event data. That being said, if you want to link people back to their cart, you’d just add in the url MYSTORE.COM/cart. Replace MYSTORE.COM with the URL of your store. You can either do this, or link people back to the product page, with {{ event.url }}.
I know this is a lot of information, so don’t hesitate to reach back out with any additional questions you may have!
Amazing! Thank you for all of this. I’m going to dig in now.
Hi @Byrne C, Thank you again for your help. Your suggestions fixed my abandoned cart issues! But they didn’t fix my abandoned checkout emails. I did what you suggested and made the dynamic product listing a universal section and it worked in the two abandoned cart emails, but not the checkout ones. I’ve included screenshots. Any thoughts? I really appreciate it!
Hi @artfeltpuzzles,
Glad that you managed to fix your abandoned cart emails!
The table you made doesn’t work in an abandoned checkout flow because the two flows are triggered by different events, and use different event data. Let me explain further.
When you’re designing emails in a flow triggered by an event (Like Added to Cart, Placed Order, Started Checkout, ect), you can use the data from that event in the flow emails. By pressing “Preview & Test” and scrolling down on the right side, you can see all the event data that’s available for you to use. Clicking a piece of this data copies its variable to your clipboard, so you can paste it into your template.
The data in the Added to Cart event is structured differently from the data in the Started Checkout event. This is true for essentially every event - each event sends different information to Klaviyo, so each event is going to be structured a little differently. For example, the variable for a product name might be called {{ event|lookup:’Product Name’ }} in the Added to Cart event, but {{ event.extra.line.items.0.name }} in the Started Checkout event. Because of this, if you copy a table with variables from one event into a flow triggered by another event, that flow won’t be able to read that table, and it won’t work.
We have some pre-built templates made for flows triggered by Started Checkout, and in those templates are dynamic tables you can save as universal content and add to your Abandoned checkout flows. I’d recommend doing this if you’re not familiar with building tables from scratch using event data. Our article about dynamic table blocks here goes over how to create them, if you’re looking to learn to do it solo.