In Klaviyo, a flow is an automated workflow that is set in motion by a specific trigger and then includes one or more steps. Flows can be built to send timely communications to recipients, or they can simply apply certain actions, like updating a specific field on a profile.
This guide explains how contacts will move through a flow, including what happens if you update a flow by adding new steps or moving existing steps around.
In mid-October 2018, we improved the way recipients dynamically move through flows. This guide reflects the new and improved current behavior.
How Recipients Move Through a Flow
When someone new enters a flow after qualifying based on the flow's trigger, they will immediately be scheduled for the first step in the series.
This first step could be an action — like an email — or it could be a logic assessment, like a Conditional Split.
- If there is no Time Delay before this first step, you will see the recipient quickly move through the step and be scheduled for the next step.
- If you have a Time Delay before this first step, the recipient will remain in a Waiting state until the scheduled time arrives. The "scheduled" state for a recipient is the Waiting state.
A recipient is only scheduled for one step in a flow at a time.
Let's say your flow is set up to send Email #1 in a flow after 1 hour, and Email #2 after 1 day. Someone new entering the flow will be in the Waiting bucket for Email #1 until an hour passes.
After this person receives Email #1, they will immediately be scheduled for Email #2. Only after this person moves past Email #1 will you see him/her will move to the Waiting bucket for Email #2.
Updating the Time Delay Before a Step
If you update the Time Delay before a step, those already in the flow who haven't made it to that step yet will automatically be scheduled according to the updated timing when they do get there.
Let's say you have a flow where Email #1 is set to send after 1 day, and Email #2 is set to send 5 days later.
Becky enters a flow and is waiting to receive Email #1 the next day. While she's scheduled for Email #1, you update Email #2 to send 2 days later (instead of 5 days later). As soon as Becky receives Email #1, she'll be scheduled for Email #2 according to the updated timing and receive this email 2 days later.
For this same flow, however, Joe entered a few days before Becky and is already in the Waiting bucket for Email #2. When you update the Time Delay before this email, Joe will not be rescheduled to receive the flow sooner. He will still receive this second email 5 days after the first because he was scheduled for this second email before you made the timing update.
If you update the Time Delay before a step, those already scheduled in the Waiting bucket will not be rescheduled.
Adding a New Step into an Existing Flow
If you add a new step to an existing flow series — the new step could be an email, an Update Profile Property action, a Split etc. — recipients currently scheduled at any previous step will automatically be scheduled for the new step in the sequence.
For example, let's say you have a Welcome Series with 3 emails spanning 1 week after someone subscribes. You want to make this series longer and add 3 more emails at the end. Now, the flow spans 2 weeks after someone subscribes.
Recipients currently in your sequence will automatically be scheduled for the new emails. You do not need to back-populate your flow or take any other action. This is only true for recipients who are still moving through the flow.
Recipients who already exited the flow prior to these new emails being added will not be scheduled to receive them. In this case, you would need to back-populate the flow in order to ensure that those who already exited the flow, but are still within the proper timeframe for your newly added emails, receive the new emails in the proper sequence.
Reordering Steps in an Existing Flow
Contacts are scheduled for all steps in a flow one-at-a-time, and they must move through one step before being scheduled for the next.
This means for those moving through a flow, any changes made to steps still ahead of them will impact their journey. However, if someone is already scheduled (in Waiting) for a given step, they will remain scheduled for that step even if you move it elsewhere in the sequence.
For example, let's say you have a flow series with 4 emails:
- Becky received Emails #1 and #2, and is currently scheduled for Email #3. While Becky is still scheduled for Email #3, you drag this email to the top of the flow.
- New contacts entering the flow will get this email first, but Becky will still get it at her originally scheduled time.
- After Becky receives Email #3, we will attempt to schedule her for the next step (Email #1). If a contact has already moved through a step in a sequence and arrives at it again because you've reordered the steps, the contact will not be scheduled a second time. In this case, you placed Email #3 before Emails #1 and #2, but because Becky already received Emails #1 and #2 she won't be scheduled for them again.
- Becky will be scheduled to receive Email #4 because it is the next email in the sequence that she has not already received.
What if I have Manual or Draft actions in my flow. Will these create dead-ends?
No. If an action is Manual, we will schedule it. As soon as it hits "Needs Review," we will schedule the next step. If an action is in Draft, we will pass over it and schedule the next step that is either Manual or Live. This ensures that whether or not all steps in a flow are Live, this won't prevent a contact from continuing to move through a flow.
If someone is Skipped due to failing Flow Filters, will this person still move forward and be scheduled for the next step?
Yes. We do not remove someone from a flow completely if they fail the flow's filters at a single step; contacts will continue to be scheduled for the next step. Due to the nature of some Flow Filters, if someone is skipped once, they will continue to be skipped for all subsequent steps. However, this is not true for all Flow Filters. For some, the evaluation could change as someone moves through a flow. For this reason, to keep behavior consistent, we do not remove someone from a flow completely if they fail the flow's filters at a single step.