Wait Until...
UpdatedUse the Wait Until item to hold a person in a campaign until they meet a condition or enter a segment.
How it works
You can set three different types of waits. Each wait type adds a new path in your workflow. A person progresses down the first path they meet conditions for.
- Conditions: Determine whether a person needs to achieve certain attributes, perform an event, join a segment, and so on before they can progress through the campaign. You can set multiple conditions.
- Event time (event-triggered campaigns only): Base your wait on a timestamp in your event data.
- Max. time: Set the maximum time a person can wait. If a person reaches the maximum wait time without achieving any other conditions, they’ll progress through the workflow.
For example, if you set attribute conditions and a max time, a person will progress in your campaign if they either meet your attribute conditions or they reach the maximum wait time.
'Wait Until...' block)-->z z{does the person
already meet conditions?} z-->|no|a z-.->|yes, person skips wait|c a[person
enters wait]-->b{has the person
met a condition?} b-.->|no|d{is there a
max time?} b-->|yes|c[person moves to
the next action] d-->|yes|e{has person waited
for the max time?} e-.->|no, continue waiting|b e-->|yes|c d-.->|no, person waits indefinitely
until they meet conditions|b
People who already meet your conditions will skip the wait
If you set up a wait condition, and a person already meets the condition when they reach the wait, they’ll move on immediately. See Why did someone skip the wait? for more information.
Each type of delay starts a new path
You can set up different types of waits in the same actions, creating multiple paths for people in the journey. A person will progress down the first path they meet conditions for.
You can either take advantage of different paths to send different messages based on the conditions the person met or, if the result of a conditional wait or a maximum wait is the same, you can place actions after the paths converge.


Set up a Wait Until
This video shows each of our delay options. Click to fast forward to the Wait Until section.
- Drag Wait Until… into your workflow.


- Click it and determine the conditions a person must meet before they continue the campaign. You can choose one or more types of conditions. However, a person will proceed through the campaign when they meet any of the following:
- Conditions: Attribute, event, segment, or message conditions that a person must meet (or not meet) to move on. Multiple conditions in the same path are joined with And—a person must meet all conditions to satisfy the wait; you can also set up multiple conditional paths (joined by Or).
- Max. time: The maximum time that a person can wait before moving on in the workflow.




Conditions
When you set your Wait until delay, you can use attribute, event, segment, or message conditions. Within a path, can set multiple conditions joined by AND—meaning that a person must meet all conditions to progress down the path.
You can also set multiple conditional paths. See the section below for more information about setting up multiple condition-based paths.
- Attribute: Wait until a person matches a profile attributeA key-value pair that you associate with a person or an object—like a person’s name, the date they were created in your workspace, or a company’s billing date etc. Use attributes to target people and personalize messages. condition—whether a person has an attribute, doesn’t have an attribute, matches an attribute value, etc.
- Event: Wait based on whether a person has, or has not, performed an event. Unlike Event time delays, this does not have to be an event that triggered your campaign. You can also specify event properties to narrow down the condition.
- Segment: Wait based on whether or not a person belongs to a segment. See the Not in segment condition for more information about matching folks who aren’t in a segment.
- Message: Set a condition to check if someone has been sent or is sent a message. You can also base message conditions on other statuses like delivered, opened, clicked, and more. Choose messages from any campaign, broadcast, or transactional message in your workspace. For example, if your campaign follows up on a person’s order, you might wait until after they receive a transactional message containing their receipt.
The following conditions are only available in object- or relationship-triggered campaigns:
- Object (Trigger): Wait until a condition on the object that triggered a campaign is true. For example, you could set up a wait until
Order.statusis equal todeliveredorSubscription.activeis equal totrue. - Relationship: Wait until a condition on the relationship to the object that triggered a campaign is true. For example, if your objects are online courses, you could set up a wait until a person’s relationship attribute for
enrolledis equal totrue.
Wait Until event conditions aren’t available in liquid
While you can reference an a different event than the one that triggered your campaign as a wait condition, you can’t use properties from this event later in your campaign with liquidA syntax that supports variables, letting you personalize messages for your audience. For example, if you want to reference a person’s first name, you might use the variable {{customer.first_name}}.. The liquid event context is always the event that triggered your campaign.
Event property conditions
When your Wait Until condition is an event, you can click Add event data filter to evaluate the wait condition based on fields in an incoming event. You can even evaluate properties in your condition against a person’s attributesA key-value pair that you associate with a person or an object—like a person’s name, the date they were created in your workspace, or a company’s billing date etc. Use attributes to target people and personalize messages. or the trigger event’s properties. This helps you fine-tune the paths people might take in journeys.


For example, imagine that a person enters a campaign when they set up an appointment—they generate a new_appointment event with an appointment_id. You want to wait until the day before the event to send an email reminding a person about their appointment—but you don’t want to send a reminder if they already cancelled the appointment.
In this case, you can set up a Wait Until… condition to look for an cancelled_appointment event where the appointment_id matches the trigger event’s event.appointment_id. If the two values match, you don’t send the appointment reminder.


Learn more about editing wait until blocks in live campaigns.
Evaluating multiple conditions
When you set conditions, you’ll see AND; these conditions are a part of a single path; a person must meet all of the conditions to progress down a path.
But, unlike Event time and Max. time, you can set up multiple Condition-based paths. Each set of conditions creates a branch in your workflow. If a person meets the conditions in any path, they’ll progress down the associated path.
Paths for your different wait conditions are numbered, starting at 1. In the workflow, they’ll read left-to-right. If a person meets the conditions in multiple paths simultaneously, they’ll go down the path closest to 1 (farthest to the left) in your workflow.


Message conditions
You can set conditions based on whether a person has ever been sent or is sent a message. You can also base message conditions on other statuses like delivered, opened, clicked, and more. Choose messages from any campaign, broadcast, or transactional message in your workspace. In a message condition, you can check if a person has ever been sent a message, or wait until a message is sent after a person enters the wait.
The has ever condition is based on whether or not a person has ever been sent (or another message status like delivered) a particular message. If you specify “has ever been sent,” and the person was sent a message before they entered the wait until, they meet the condition and will move on in the workflow.
The is condition is only satisfied if a person is sent (or another message status like delivered) a message after they enter the wait. This prevents people from inadvertently meeting wait until conditions based on messages sent long before a person entered your campaign or wait. If you specify “is sent,” and the person was sent a message before they entered the delay, they do NOT meet the condition. If they were sent a message after entering the wait until, they do meet the condition and will move on in the workflow.


Object and relationship conditions
To set object or relationship-based conditions, your campaign must be triggered by an object or a relationship, and they’re limited to the object or relationship that triggered the campaign. This provides a way for you to wait until an object or relationship meets a condition and message your audience when it does.
For example, if your object represents an event that people are interested in, you could wait until a week before the event and send a reminder to people who are scheduled to attend. You could even ask potential attendees to RSVP! Following this same example, you could send a follow-up message to users whose rsvp relationship attribute is false to remind them that the event is coming up and that they should RSVP to attend!


Event time
If your campaign is triggered by an event, you can make people wait until a timestamp value in the triggering event before they move on to the next step in the workflow. For example, if you trigger your campaign with an event called new_appointment, you could make people wait until the day before the appointment_time in the triggering event and then send a reminder message.
The timestamp in your event can be either:
- Unix timestamp (in seconds)
- RFC 8601-formatted time (for example,
2022-06-04T10:24:34-0400).
Unlike event conditions, your timestamp must be a part of the event that triggers your campaign. You can’t base this time on a different event.
Make sure your triggering event includes a timestamp and that it’s correctly formatted
If you send an event that either doesn’t contain the timestamp specified in your wait, or the timestamp is incorrectly formatted, your event timestamp condition won’t do anything. Your audience will wait until they meet another condition. If your wait doesn’t have any other conditions, a person could wait forever!
Note, people will wait until the current time is equal to or after the time specified by the wait condition. For instance, if you set an event time path of “2 days before the time specified in the appointment-time” of the trigger event, then people will meet the condition and move forward when it reaches not just before 2 days, but also within 2 days of the appointment_time. It’s possible then that some people move down this wait until condition if it’s 1 day before the appointment time.
To demonstrate that last statement, let’s continue with the example of a campaign triggered by scheduling an appointment:
- It is June 13, and an appointment is just now scheduled for June 14 which triggers the campaign.
- The first step in the campaign sends a confirmation email immediately.
- The second step is the wait until set for two days before the appointment, which means before or after 2 days. Because it’s 1 day before the appointment, the person passes the condition immediately and moves down that path.
- The campaign immediately sends an email reminder for the appointment.
Since the current time is already after the wait until condition of “2 days before appointment_time”, the person is not held in the wait until and we consider that they’ve successfully met the condition. In this example, the person would receive the confirmation email and reminder email close together.
To avoid this behavior, you can add a True/False branch to your workflow. For this example, you could set an event attribute condition to “appointment_time is a timestamp before 2 days from now”. When this is true, people move forward but don’t receive a reminder email. If this is false, people would enter a wait until and eventually receive a reminder email only 2 days before the appointment time.


The max time fallback
By default, people will wait until they meet your conditions. If they never meet your conditions, they could get stuck waiting in your campaign forever! Use the Max time option to let people exit the campaign or move on to the next action.
In this example, if a person isn’t in the specified segment after one week, they’ll move on to the next action in the workflow.


Segment “Not in…” conditions
If you base your wait condition on whether people are not in a segment, people who were never in the segment will skip the wait. If people are already in the segment, they will be held in the wait until they leave the segment.


Why did someone skip the wait?
If a person meets your wait conditions before they enter the wait, they’ll skip it entirely. We evaluate the conditions as soon as someone reaches the Wait until block; someone doesn’t have to meet the conditions again to progress past it.
'Wait Until...' block)-->z z{does the person
already meet conditions?} z-->|no|a(person begins
waiting) z-.->|yes, person
skips wait|c c(person moves to
the next action)
For example, imagine that someone performs an event—they signed up for a class at a local school. You want to send them a reminder message a week before the class starts.


If someone signed up late for the class, and the class starts in less than a week, they’ll skip the wait and move on to the reminder message, which you can see on the person’s journey.


Modify Wait Until blocks in live campaigns
Change event conditions
You can edit the conditions of your Wait Until if the campaign is live; just be aware that doing so might cause people to quit waiting.
For example, if you reduce an Event time condition from seven days to two days:
- People who have already waited more than two days will move on (or exit the campaign)
- People who have not yet waited two days will continue waiting
Delete a Wait Until
If you delete a Wait until, you can choose what to do with anybody currently waiting.
- Continue to the next action in the campaign
- Exit the campaign immediately
It’s up to you! If people have been waiting a long time, you may not want to continue sending messages in the campaign.
Copy a Wait Until to other campaigns
It’s easy to copy the Wait Until between campaigns within the same workspace, because your segment conditions remain the same.
If copying between workspaces, you’ll need to re-add your conditions, and we’ll show you a warning note both in the workflow and when editing the item.
Combining delay blocks
Meeting wait until conditions doesn’t ensure that someone receives your message at the right time; and it being the right time doesn’t mean that someone’s met your conditions yet. You can use conditions together so people meet your conditions and receive messages in the right timeframe!
For instance, you could wait for people to match specific conditions using a Wait Until block, but you’d need to use a Time Window if you also wanted people to only receive a subsequent message during a specific timeframe.
Combine Wait Until and Time Delay
You might add multiple flow control blocks to a campaign to ensure people don’t receive a message too soon. For instance, maybe you want people to minimally wait 7 days after receiving their first message, and then they should receive their next message only if they’re a member of a specific segment.
- Time Delay: Wait 7 days
- Wait Until: Person enters the segment
Make sure you check the order of your blocks so you don’t make people wait unnecessarily in your workflow. You might switch the delay with the Wait Until if you want to make sure that people wait exactly seven days after satisfying the wait condition.
- Wait Until: Person joins the segment
- Time Delay: Wait 7 days
For Wait Untils, consider adding a second condition, like a max wait, so people aren’t held forever in the flow. This is also important if the subsequent message is time sensitive.
Combine Wait Until and Time Window
With both Time Windows and Wait Until blocks, you can add conditions to determine which people wait before continuing through your campaign or just specify a static time or timeframe to wait. You’ll only need to combine them if you need to set a specific timeframe to wait.
For instance, if you want people to belong to a segment before receiving a message in a certain timeframe, you’d start with a Wait Until block, followed by a Time Window:
- Wait Until: Person joins a segment
- Time window: Monday between 9AM and 5PM
In this case, people wait until they’re in a segment, and then wait for 9am on a Monday (assuming it isn’t already that time). If the person stops matching the segment condition while they’re waiting for the time window, they would still get the email on Monday at 9AM. If you want them to skip the message if they stop matching, add the segment condition to the email too.
Don’t use a Time Window if you need to send a message at a specific, relative time.
For instance, let’s say you want a campaign to send a reminder email 1 day before an appointment. Your campaign could flow like this:
- Trigger: When a person books an appointment
- Wait Until: 1 day before the appointment
You might think to add a Time Window before the message so they receive it at a reasonable time. However, the Time Window could prevent them from receiving the message exactly 1 day before, especially if they booked their appointment less than a day ago. If receiving the message exactly 1 day before is the most important thing, don’t add a time window.
