Knowledge CenterAPI ReferencesDalil MCPClaude Skills

Designing Flow with Conditions

Conditions are decision points that evaluate contact data and engagement, creating intelligent branching paths in your sequences.

Updated August 6, 20263 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.

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

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): scores the company once and classifies the person; the run continues only when both match your targeting

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

  1. In the sequence editor, add a node where you want the flow to branch
  2. Pick the condition type from the step picker (e.g., "Has LinkedIn URL")
  3. Connect the Yes branch to one set of steps and the No branch to another

To evaluate engagement after giving the contact time to act, place a delay before the condition. For example: Send Email → wait 3 days → Opened Email?

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
Wait 3 days
Condition: Opened Email?
  → Yes: Send LinkedIn Message (warm follow-up)
  → No: Send follow-up email (cold reminder)

Best practices

  • Walk every path before publishing: trace both branches of each condition for a typical contact
  • Avoid over-complicating: limit nesting to 2–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 conditions time to become true: an engagement condition evaluated immediately after a send will almost always be No; put a delay in front of it

Was this article helpful?

Your feedback helps us improve our documentation.