Conditions enable branching logic in workflows, allowing different paths based on data values and comparisons.
A condition node evaluates an expression and routes to different paths:
Condition: order.total > 1000
├── True path → Send VIP notification
└── False path → Standard processing
| Operator | Description | Example |
|---|---|---|
eq | Equal to | status eq "completed" |
neq | Not equal to | status neq "cancelled" |
gt | Greater than | amount gt 100 |
lt | Less than | amount lt 50 |
gte | Greater than or equal | quantity gte 10 |
lte | Less than or equal | quantity lte 5 |
| Operator | Description | Example |
|---|---|---|
contains | String contains | name contains "Pro" |
startsWith | String starts with | code startsWith "SKU" |
endsWith | String ends with | email endsWith "@company.com" |
| Operator | Description | Example |
|---|---|---|
in | Value in array | status in ["active", "pending"] |
notIn | Value not in array | type notIn ["archived"] |
isEmpty | Array/string empty | items isEmpty |
isNotEmpty | Has content | comments isNotEmpty |
| Operator | Description | Example |
|---|---|---|
exists | Field exists | metadata.custom exists |
notExists | Field doesn't exist | deleted_at notExists |
{{order.status}} eq "completed"
{{order.total}} gt 1000
{{customer.type}} in ["vip", "premium"]
{{order.customer.name}} contains "Inc"
{{trigger.entity.metadata.priority}} eq "high"
{{steps.checkInventory.output.available}} gt 0
{{steps.query.output.count}} eq 0
Condition: status eq "approved"
├── True → Process order
└── False → Send for review
Condition: amount > 10000
├── True → Condition: customer.verified
│ ├── True → Auto-approve
│ └── False → Manual review
└── False → Standard processing
If only True path is needed:
Condition: sendNotification eq true
├── True → Send email
└── (continues to next step)
Condition: order.total gt 5000
True: Apply VIP discount
False: Standard pricing
Condition: order.status eq "paid"
True: Fulfill order
False: Wait for payment
Condition: email isNotEmpty
True: Send notification
False: Log missing email
Condition: items.length gt 0
True: Process each item
False: Log empty order
Loop nodes execute actions for each item in an array:
Type: Loop
Array: {{order.items}}
Variable: item
Access current item:
{{item.product_code}}
{{item.quantity}}
{{item.price}}