This guide walks through how to troubleshoot a flow when you observe that your flow emails do not appear to be sending.
Is Anyone Being Skipped?
In the lefthand panel for a given flow email, you will see a Analytics (Last 30 Days) section. Here, you will see a line for "Skipped" activity.
If you click on this line, you will be taken to the email's Recipient Activity tab with the Skipped section automatically popped open. Here you can see why individuals may have been skipped at send time for the flow email.
The Skipped dropdown will show you exactly who has been skipped by the flow and why.
Here are all possible Skipped reasons:
- Smart Sending
Skipped because smart sending is enabled and they received another email too recently.
- Person No Longer in List
Skipped because they are no longer in the trigger list or segment.
- Fails Flow Filters
Skipped because they don't meet the criteria in the flow filters at send time.
- Fails Additional Filters
Skipped because they don't meet the criteria specific to this flow email at send time
- Missing Email
Skipped because there is no email address associated with their profile.
- Person Suppressed
Skipped because they unsubscribed or hard bounced from all email.
- Email Syntax Error
Skipped because the email template contains a syntax error.
- Catalog Item Unavailable
Skipped because a product in the rendered email content is currently out of stock or not available.
- Over Email Limit
Skipped because you went over your account's sending limit.
- Person Deleted
Skipped because the profile no longer existed at send time.
- Unable to Send Email
Skipped because we ran into an unexpected error at send time.
- Invalid From Email
Skipped because the From Email address is not a valid address.
- Error Retrieving External Data
Skipped because there was an issue retrieving data from an external source (for example a coupon code from Shopify).
- Duplicate Email
Skipped because the same email to the same address was already sent.
- Coupon Category Unavailable
Skipped because the email contains a placeholder to pull in a dynamic coupon restricted to a certain category, and the category was deleted.
- No More Uploaded Coupons Remain
Skipped because the email contains a placeholder to pull in an uploaded coupon and no more uploaded coupons remain.
- Coupon Code Doesn't Exist
Skipped because the coupon code you’re referencing in an email either doesn’t exist or doesn’t match the coupon code you created in your Coupons tab. Coupon code names are case-sensitive.
- Email Cancelled
Skipped because the email had been cancelled at or before send time.
Skipped Due to Smart Sending
A common reason recipients are skipped is Smart Sending. TheSmart Sending allows you to limit the number of emails someone can receive in a given period of time so you don't have to worry about overwhelming people even if you have a lot of live flows and campaigns.
By default, Smart Sending is set to limit people to receiving an email every 16 hours. You can update this setting from the account settings.
You can see whether Smart Sending is enabled for a given email by viewing the email card -- the Smart Sending icon will light up green if this feature is enabled.
Smart Sending can be toggled on or off from the Settings panel for a given flow email.
Is Anyone Actually Meeting the Flow's Conditions?
If you check out Recipient Activity and see that nobody has been queued up for the flow and nobody has been skipped for any reason, chances are there is something wrong with the flow’s setup. One of two things is true:
- Nobody is meeting the flow’s conditions but the flow is configured correctly
- Nobody is meeting the flow’s conditions because the flow is configured incorrectly
To investigate this, you can look at a few different things:
- Consider the flow’s trigger metric and view recent activity
To do this, click on the metric from within the flow’s trigger box. You’ll be taken to either the analytics report for the metric (if it’s an event triggered flow) or the list or segment used as a trigger (if it’s a list or segment triggered flow).
- If you can see a lot of trigger activity but nobody is actually getting queued up for the flow, it means there is likely something wrong with the flow’s filters.
- If there is NO activity around the flow’s basic trigger, the next step is figuring out why. If the flow is triggered by an event, there is likely an integration issue.
- Consider the flow's trigger filter and flow filters
If the trigger action itself doesn’t seem to be the problem, and you need to investigate the trigger filters and flow filters, the best thing to do is to create a dynamic segment that matches the flow’s conditions as closely as possible. Using the segment builder, you can test out certain conditions to get a better understanding of who a flow is going to capture. A few common issues here:
- A series of filter conditions are separated by AND instead of OR (or vice versa) -- you can review this guide to better understand the use of AND/OR when stringing together flow filter conditions.
- The flow filter may actually be keeping everyone out. If you have created a time-relative filter, or a multi-conditional filter, we recommend walking through the logic of how someone would get queued up for your flow. EXAMPLE: If a flow is triggered by the Placed Order metric, and the first email is scheduled to send after 3 days, adding a flow filter that says, has Placed Order zero times in the last 7 days will cause everyone to get skipped by Email 1. By default, everyone that is queued up for Email 1 will have placed an order in the last 7 days because they were added to the flow based on this action merely 3 days before.
- The filter conditions are set to the wrong data type -- i.e. a list property is being filtered as a string (or vice versa). You can learn more about data types here.
Have You Hit Your Account's Email Send Limit?
If you’re seeing unexpected flow sending behavior, a quick thing to check is whether or not you have hit your email sending limit (either an “all time” limit, or a monthly send limit). A quick check of your account settings will reveal if this could be a contributing factor.
For example, if you are on free plan, you are limited to 500 emails per month. If you are seeing flow email deliverability drop off at a certain point every month, it might be because you are hitting this 500 email/month limit at some point mid-month causing all sending to stop at this time.
Welcomes series not sending to new subscribers
There are two situations where a new subscriber getting added to a list will not also get queued up for a welcome series (or any flow) configured to trigger off this list:
- It isn’t possible to trigger flows off of lists that are synced through MailChimp. If you are syncing all of your subscriber lists from MailChimp, you will not be able to configure flows to send to these subscribers as they opt-in.
- If someone is added to your newsletter list by clicking the Subscribe to Newsletter box upon checkout, they will NOT get queued up for your welcome series flow. This is a default setting because typically the welcome series is designed for new customers/visitors. Someone could check this Accepts Marketing box for the first time during their 100th purchase, and it might not be appropriate for this person to get queued up for your welcome series. If you would like us to adjust this setting for your account, please contact our Success Team.
Flow filter based on Items or Collections has the string data type
A list is any array of values, e.g. ["Offer1", "Offer2"]. In Klaviyo, the list data type is used when the goal is to collect an array of words/phrases, where each single item in the array can be identified individually.
One common use-case for this list data type in Klaviyo is when different tags are being collected as a single property, such as the Shopify Tag property. We store one “Shopify Tag” property and then as more tags get assigned to a customer, we just add them to the Shopify Tags array, such as: ["Tag1", "Tag2", “Tag3”]
Another common use-case is when Klaviyo captures a Placed Order metric through an integration, and the data we receive along with this Placed Order metric includes an Items property. This Items property captures all items purchased in the order and it is always synced and stored as an array, which is the list data type in Klaviyo. This allows us to store the one property -- Items -- but have that property include a series of values (i.e. each item purchased in the single order), where each value in the array can be identified individually. The same is true for the Collections property synced along with Placed Order or Ordered Product.
If you are filtering based on Items or Collections and using “equals” where the data type is string, your flow will not work. Instead, the data type must be set to list and the condition will look like, “where [Items or Collections] contains _____."