Designing flow with conditions
Conditions are decision points that evaluate contact data and engagement, creating intelligent branching paths in your sequences.
Updated October 25, 2026 · 6 min read
A condition is a question your sequence asks about a contact at a specific point in the flow. Each condition produces two outcomes, Yes (condition is true) or No (condition is false), enabling sequences to route contacts differently based on their profile and engagement. Not every contact can be reached the same way, so conditions let the sequence decide.
Available conditions
Email conditions
- Has Email Address
- Opened Email
- Clicked Email Link
- Unsubscribed from Email
- Replied to Email
LinkedIn conditions
- Has LinkedIn URL
- Has LinkedIn Connection (add a View LinkedIn Profile step before it)
- Accepted LinkedIn Invitation
- Opened LinkedIn Message
- Replied to LinkedIn Message
WhatsApp conditions
- Has Phone Number
- Opened WhatsApp Message
- Replied to WhatsApp Message
User action conditions
- Created Calendar Event: did the contact book a meeting?
- Created AI Meeting Note: did a meeting with this contact happen?
- Custom Condition: build your own check on any field of the contact
Data checks and waiting conditions
Conditions come in two kinds, and they behave differently:
- Data checks look at what you already have: an email address, a LinkedIn URL, a LinkedIn connection or a phone number. They answer straight away.
- Waiting conditions wait for something to happen: an opened or clicked email, an unsubscribe, a reply, an accepted invitation, a calendar event or a meeting note. You set how long to wait (Wait until the event happens, Within a number of minutes, hours or days). The contact goes to Yes the moment it happens, or to No when the time you allow runs out.
Opened Email and Clicked Email Link rely on tracking. If you turn off Track email opens or Track link clicks in Sequence Settings, those conditions stop working.
Implicit gates
Two steps act as conditions without showing Yes/No branches; they decide on their own whether the contact's run continues:
- Enrich: if enrichment neither finds the data nor confirms it already exists, the run stops
- Qualify Lead (AI, listed as ICP Checker in the step picker): scores each lead against your ICP and stops the ones that do not fit
Use these early in a flow to make sure only reachable, qualified contacts consume your daily send limits.
Why conditions matter
Conditions enable intelligent and respectful messaging by:
- Preventing failed message attempts: avoid sending WhatsApp messages to contacts without phone numbers
- Respecting preferences: route unsubscribed contacts away from email steps
- Routing engaged prospects: branch replied contacts toward a meeting ask instead of more cold touches
- Adapting the approach: send different message versions based on engagement signals
How to add a condition
- In the sequence editor, click the + under the step where you want the flow to branch
- Open the Conditions tab and pick the condition (e.g., Has Phone Number)
- For a waiting condition, set how long to wait before the contact goes to No
- The step splits into two branches, Yes and No. Add the next step on each branch
Each branch can hold more steps, or even another condition. For example, on Has Phone Number, the Yes branch can send a WhatsApp message while the No branch sends a LinkedIn connection request instead.
Example: channel-aware routing
Condition: Has LinkedIn URL?
→ Yes: View LinkedIn Profile → Send LinkedIn Message
→ No: Send Email instead
This ensures contacts only receive messages through channels where they can actually be reached.
Example: engagement-based branching
Step 1: Send Email
Condition: Opened Email? (wait up to 3 days)
→ Yes: Send LinkedIn Message (warm follow-up)
→ No: Send follow-up email (cold reminder)
Contacts who open the email move to the warm follow-up as soon as they open it; the rest get the reminder after three days.
Best practices
- Walk every path before publishing: trace both branches of each condition for a typical contact. After the first publish you can't delete or reorder steps, so get the structure right first (see Publishing & managing sequences)
- Avoid over-complicating: limit nesting to 2 to 3 levels of conditions
- Always handle both branches: never leave a Yes or No path without a next step (even if it just ends the sequence)
- Give waiting conditions enough time: a short wait sends most contacts to No before they have had a chance to act
Open rates are inflated by corporate email scanners that load the tracking pixel, so an Opened Email Yes does not always mean a person read it. For branching that matters, such as a meeting ask, prefer a reply condition.
Common questions
What's the difference between a data check and a waiting condition?
A data check looks at what you already have (an email, a LinkedIn URL, a phone number) and answers straight away. A waiting condition waits for something to happen, sends the contact to Yes the moment it does, or to No when the time you allow runs out. See Data checks and waiting conditions.
Why did every contact go down the No branch?
A waiting condition sends contacts to No when its time runs out, so a short wait moves most of them on before they've had a chance to act. Give it more time. See Best practices.
Why isn't my Opened Email condition working?
Opened Email and Clicked Email Link rely on tracking. If Track email opens or Track link clicks is off in Sequence Settings, those conditions stop working. See Data checks and waiting conditions.
Why does Has LinkedIn Connection need a View LinkedIn Profile step before it?
The profile visit is what lets the condition evaluate reliably, so add a View LinkedIn Profile step first. See Available conditions.
Can I add or move a condition after the sequence is published?
After the first publish you can't delete or reorder steps, so get the structure right before you publish. To restructure a live sequence, duplicate it and edit the copy. See Publishing & managing sequences.
Does the Enrich step have Yes and No branches?
No. It is an implicit gate: if enrichment neither finds the data nor confirms it already exists, the contact's run stops. The same goes for Qualify Lead. See Implicit gates.
Can an Opened Email Yes be wrong?
Yes. Corporate email scanners load the tracking pixel, which counts as an open, so for branching that matters, such as a meeting ask, prefer a reply condition. See Best practices.
How do I branch on one of my own fields?
Use Custom Condition, which builds a check on any field of the contact. See Available conditions.
Key outcome
Your sequence now adapts to each contact: data checks route people to the channels where they can be reached, and waiting conditions move them on as soon as they engage. Next, configure the message steps on each branch in Configuring communication steps.
Still stuck?
We reply the same business day, 9:00 to 17:00 CET, Monday to Friday.