I am wondering if it is possible to exclude certain items from the dynamic table block for the abandoned cart e-mails. Or only include certain items/ collections. These are items that are “in” their cart but I do not want to send them to encourage them to finish checking out. For example I have the cloverly app for offsetting carbon footprint for shipping and I also have an app that I use to have multiple options for products. I don’t want these items showing in the abandoned cart e-mail. Is there a way to go about excluding these?
Thanks so much for any help!
Natalie
Best answer by retention
@tangleartistry There is a way, but it requires some coding. It’s actually quite interesting to achieve.
If you have multiple different products that you want to exclude from the dynamic table block, the easiest way to do it is to tag those products in Shopify, and then use that tag to exclude the products.
Let’s say for example you tag them with “ac_exclude”.
Then, in the dynamic table block, you need to wrap the text part (Title, Quantity, Price, etc.) in an “IF” statement that should look like this:
{% if not 'ac_exclude' in item.product.tags %}
<h3><ahref="{{ organization.url }}products/{{ item.product.handle }}">{{ item.product.title }}</a></h3><p>Quantity: {{ item.quantity|floatformat:0 }} — Total: {% currency_format item.line_price|striptags|floatformat:2 %}</p>
{% endif %}
This will check for each product if “ac_exclude” is one of the tags. If the product doesn’t have the “ac_exclude” tag, it will be shown in the feed.
For the image part, you need to wrap the existing snippet, in a new “IF” statement that should look like this:
{% if not 'ac_exclude' in item.product.tags %}{% if item.product.variant.images.0.src %}{{item.product.variant.images.0.src}}{%else%}{{item.product.images.0.src|missing_product_image}}{%endif%}{%endif%}
@tangleartistry There is a way, but it requires some coding. It’s actually quite interesting to achieve.
If you have multiple different products that you want to exclude from the dynamic table block, the easiest way to do it is to tag those products in Shopify, and then use that tag to exclude the products.
Let’s say for example you tag them with “ac_exclude”.
Then, in the dynamic table block, you need to wrap the text part (Title, Quantity, Price, etc.) in an “IF” statement that should look like this:
{% if not 'ac_exclude' in item.product.tags %}
<h3><ahref="{{ organization.url }}products/{{ item.product.handle }}">{{ item.product.title }}</a></h3><p>Quantity: {{ item.quantity|floatformat:0 }} — Total: {% currency_format item.line_price|striptags|floatformat:2 %}</p>
{% endif %}
This will check for each product if “ac_exclude” is one of the tags. If the product doesn’t have the “ac_exclude” tag, it will be shown in the feed.
For the image part, you need to wrap the existing snippet, in a new “IF” statement that should look like this:
{% if not 'ac_exclude' in item.product.tags %}{% if item.product.variant.images.0.src %}{{item.product.variant.images.0.src}}{%else%}{{item.product.images.0.src|missing_product_image}}{%endif%}{%endif%}
@retention Thank you so much! This worked perfectly. I couldn’t figure it out at first and thought it wasn’t working. Then realized it was because I added the tags to the products, and the preview carts I was using to test were done before the tags were added. Thank you tremendously for taking the time to do this for me
@retention Thank you so much! This worked perfectly. I couldn’t figure it out at first and thought it wasn’t working. Then realized it was because I added the tags to the products, and the preview carts I was using to test were done before the tags were added. Thank you tremendously for taking the time to do this for me
Really glad that you’ve figured out how to implement it. It can be tricky.
@retention This was a life saver. Spent days trying to figure this out.
Question, what if you wanted to include these types of add on products somewhere else in the email but not as detailed, like maybe just an itemized list of titles?
This only partially worked. The coding successfully hid the product names, but (in the preiview) the photos are showing as blank boxes and they are still linked.
**EDIT: it works just fine- I emailed myself a preview instead of previewing in Klaviyo and the flow works correctly. Thanks!
So glad you were able to resolve your own issue and highlighting that sending yourself a preview properly hid the product, unlike the Klaviyo previewer! I’m sure this bit of information will help future Community members who may be confused about this as well!
@sleepingdog, if you wanted to include these types of additional products in your email, but with less detail, you can do so by either using a text block or building another dynamic table block while using the opposite rules used to hide these products away. Borrowing @retention’s example, instead of building an if statement to hide these products which has this “ac_exclude” tag, you can build your if statement to instead only display products with this “ac_exclude” tag.
In terms of the format and the details you want to pull in for these additional products, that would depend on what dynamic variables you are using and including. To further understand how dynamic blocks are build and how to customize your emails with event variables, I would suggest taking a look at the About Using Event Variables to Personalize Flows and How to Build Dynamic Blocks in a Flow Email Help Center articles.
@retention@david.to@ali_luxeAC I was successful with hiding the text, however, I’m experiencing the same issue as you did, @ali_luxeAC , where the image block is visible (but the image itself is hidden). In the previewer it’s an empty box. In an emailed version it is still a link to the product.
So instead of an image block, I used a text block and coded in the image. This hides it appropriately, but the images are huge in an outlook email.
I would suggest reviewing how you are implementing the code and double checking the variables you are using. Because every store’s integration may be slightly different, some adjustments may be required to achieve the solution posed by @retention in a seamless manner.
In addition, Route Shipping has a similar solution where instead of evaluating products based on their category, they dictate which products to hide in the dynamic table block through evaluating if a product has a specific title. In their How do I exclude Route from Klaviyo? article they explain how to hide a products whose title equals Route Package Protection'from appearing. Their strategy is also a viable option which can be adjusted to hide specific products which you can customize for use with your own setup if you wish as well.
Furthermore, because Outlook uses Microsoft Word as their rendering engine for HTML, emails rendering differently than what is designed within an email builder is a known issue explained in he My Email Looks Different When Viewed in Microsoft Outlook Help Center article.
You should be able to accomplish something similar in BigCommerce despite them not using product tags. This would all depend on the if-statement you are create and the variables and values you were evaluating as part of the statement. Instead of using a product tag like you would in Shopify to distinguish these products, you can potentially identify these products within BigCommerce by grouping them in a specific category.
The solution that’s being discussed in this thread to omit and prevent certain products from being pulled into an email through a dynamic table block would not be the same as using flow filters to exclude users from a flow.
The difference here is that a flow filter is used to evaluate if an individual is eligible for the flow as a whole. The solution being discussed here would be on a more targeted level of restricting only certain products from appearing in an email. For example, if someone purchased a t-shirt and a baseball cap, if you wanted to omit the baseball cap, using a flow filter will prevent the user from entering the flow as a whole. Recoding the dynamic table block will still allow the customer to enter the flow, but will prevent the baseball cap from appearing in their abandoned cart email.
If so, then it seems like you’re missing the response portion of the if-statement. This means that even when this if-statement was true, nothing would be returned since you haven’t defined a response in the statement. My colleague, @Anna McCarthy actually has a great tutorial on using If/Endif/Elif/Else Statements which I’ve included below that I think would be really helpful to take a look at:
If you were using the code provided by @retention verbatim and it worked successfully, I don’t see why removing the not function in the code wouldn’t be working to achieve the inverse effect. Omitting the not from the code would cause those products tagged with ac_exclude to be shown and products without this tag to be hidden.
thank you for your reply. Of course I used code “in between” that is displayed. I contacted your Chat Support yesterday and we do not know why, but after some tweaking, it worked. Code was correct. But it does work now what is most important.
I’m on BigCommerce and want to exclude digital products from showing in my abandoned cart email. I tried using {% if not event.extra.line_items.digital_items %} wrapped around the same text you show above but it doesn’t work. Well at least when I try to preview or send myself a preview, I get an error.
I also tried wrapping my the text with the name of the product (we only sell 1 digital product) and that didn’t work either. I tried both {% if not event.Items == 'Shipping Protection' %} and {% if not item.product.name == 'Shipping Protection' %} and neither worked.
I suspect the issue you’re running into may be the syntax you’re using is incorrect. Since the code discussed in this thread relate to the Shopify Checkout Started metric, the syntax would not translate to an email in a flow triggered by BigCommerce’s Started Checkout event. It may be helpful to take a look at some of the resources that were previously provided such as the About Using Event Variables to Personalize Flows and How to Build Dynamic Blocks in a Flow Email Help Center articles to learn how to properly use and pull the correct dynamic syntaxes for your use.
I think it would also be helpful if you provided the full if/else statement to see if others can lend some advise.
I tried following the code above but I couldn’t get it to work. Sometimes I got an error that I needed to fix the tags, sometimes I would put the code in and it would display the code text in the preview. I know the previews in Klaviyo wouldn’t show the hidden product because I just added the tag to the product, but I don’t think it should be showing the code text. Can anyone help here? I’m not sure what I’m doing wrong.
Are you sure you’re putting those codes in the source code of the text box? A lot of times I see customers mistakenly add code directly into the text box instead of the source code which is visible to recipients.
I have a similar issue where I need to exclude products variants but you can’t tag variants in Shopify. How would one adapt the code to exclude based on the variant name?
Let me see if this helps. While we do sync variants and their images to the catalog in Klaviyo they aren't accessible via a Product Feed. I'm afraid there isn't a specific configuration example but I can provide you with our documentation for how to utilize a feed in Klaviyo and can then work backwards from there: https://help.klaviyo.com/hc/en-us/articles/360033046811-Add-a-Custom-Web-Feed-to-a-Flow-Email
There are a few different ways you could set this up but the high level overview is to take a piece of identifying product information from the event data in your flow (e.g. variant ID or variant color) and look that up in the web feed. The corresponding record in the webfeed would contain an array of other product variants of the same color which could then be used to populate some images/links in your email template. Because this array of products with the matching color would likely also contain the original product being looked up you'd want to also include the product ID for each entry in the array so you could add some logic in your template to exclude the original product that was purchased.
@alex.hong or @David To, in my Abandoned Cart email, I have a dynamic table; the left column is the product image and the right column is the product details (price, reviews, quantity, etc). I’m able to successfully hide the product detail from the right column (since I can add the “hide” code snippet), but I cannot hide the product image associated with that product.
Any ideas on how to hide the product image as well?
As @retention mention in his first response, for the image part, you need to wrap the existing snippet, in a new “IF” statement that should look like this:
{% ifnot'ac_exclude' in item.product.tags %}{% if item.product.variant.images.0.src %}{{item.product.variant.images.0.src}}{%else%}{{item.product.images.0.src|missing_product_image}}{%endif%}{%endif%}
By clicking “Accept All Cookies,” you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts.
Privacy Preference Center
Your Privacy
Strictly Necessary Cookies
Performance Cookies
Functional Cookies
Targeting Cookies
Site Analytics
Your Privacy
When you visit any website, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and change our default settings. However, blocking some types of cookies may impact your experience of the site and the services we are able to offer.
Privacy Notice
Strictly Necessary Cookies
Always Active
These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the site will not then work. These cookies do not store any personally identifiable information.
Performance Cookies
These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us to know which pages are the most and least popular and see how visitors move around the site. All information these cookies collect is aggregated and therefore anonymous. If you do not allow these cookies we will not know when you have visited our site, and will not be able to monitor its performance.
Functional Cookies
These cookies enable the website to provide enhanced functionality and personalisation. They may be set by us or by third party providers whose services we have added to our pages. If you do not allow these cookies then some or all of these services may not function properly.
Targeting Cookies
These cookies may be set through our site by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They do not store directly personal information, but are based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.
Site Analytics
These cookies record your visit to our website, and are used to track your visit including information such as: web page interactions (clicks, hovers, focus, mouse movements, browsing, zooms and other interactions), referring web page/source through which you accessed the Sites, heatmaps and scrolls, screen resolution, ISP, and statistics associated with the interaction between device or browser and the Sites. If you are accessing our Services with a European IP address, you have been asked to consent to the use of these cookies (you are free to deny your consent).