In Klaviyo, a flow is an automated workflow that is set in motion by an initial 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.
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 area 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.
If all of the actions in a flow are in draft mode, no recipients will be added to the flow. Thus, if you want to build out a complex flow, leave all of the flow actions in draft mode so that contacts do not begin to move through the flow.
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.
Note that if you set a Time Delay component to wait until a specific day, you will not be able to the expected number of days for any emails and SMS that come after the component. Suppose you have a Time Delay component that is set delay the next message for 5 days and until a Monday or Friday. In this case, Klaviyo cannot determine when a recipient will receive the following message, as each person in the flow is going to have a different number of days before they are sent the message.
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.