Condition Step
Route notifications into different branches based on conditions
The condition step evaluates rules against recipient data, actor data, or custom payload and routes each notification down the matching branch. This lets you send different notifications — or skip notifications entirely — based on who the recipient is or what triggered the flow.
How It Works
A condition step contains one or more branches. Each branch has a set of conditions that are evaluated at runtime. The notification follows the first branch whose conditions match, or falls through to the default branch if no conditions match.
Trigger → Condition
├─ Premium users → Email + Push → End
├─ Trial users → Email → End
└─ Default → EndConfiguration
Each condition step has:
- Branches — Named paths that notifications can follow (e.g., "Premium Users", "Trial Users")
- Conditions — Rules on each branch that determine which notifications follow that path
- Default branch — A catch-all branch for notifications that don't match any other branch's conditions
Branch Conditions
Each branch can have one or more condition groups. Within a group, conditions are combined with AND or OR logic.
A condition consists of:
| Field | Description |
|---|---|
| Property | The data field to evaluate (e.g., recipient.plan, data.amount) |
| Operator | How to compare the value |
| Value | The expected value to compare against |
Operators
| Operator | Description |
|---|---|
| Equal to | Exact match |
| Not equal to | Does not match |
| Greater than | Numeric comparison |
| Less than | Numeric comparison |
| Greater than or equal to | Numeric comparison |
| Less than or equal to | Numeric comparison |
| Contains | String contains substring |
| Does not contain | String does not contain substring |
| Starts with | String starts with prefix |
| Ends with | String ends with suffix |
| Is empty | Field is null or empty |
| Is not empty | Field has a value |
Use Cases
Notification preferences
Route based on the recipient's preferred channel:
Trigger → Condition
├─ Prefers email → Email → End
├─ Prefers SMS → SMS → End
└─ Default → Push → EndPlan-based content
Send different content to different user tiers:
Trigger → Condition
├─ Enterprise → Email (detailed report) → End
├─ Pro → Email (summary) → End
└─ Free → Email (upgrade CTA) → EndLocale-based routing
Send notifications in the recipient's language:
Trigger → Condition
├─ locale = "es" → Email (Spanish) → End
├─ locale = "fr" → Email (French) → End
└─ Default → Email (English) → EndData-driven routing
Route based on the custom data payload:
Trigger → Condition
├─ data.priority = "urgent" → Push + SMS → End
└─ Default → Email → EndNesting
Condition steps can appear anywhere in a flow, including inside another condition's branch. This lets you build complex routing logic:
Trigger → Condition (region)
├─ US → Condition (plan)
│ ├─ Premium → Email + SMS → End
│ └─ Default → Email → End
└─ EU → Email (GDPR-compliant) → EndCondition Steps vs Step Conditions
Notiflows has two different condition features:
- Condition steps (this page) — Route the flow into branches. Every notification goes down exactly one branch.
- Step conditions — A gate on an individual step. If the conditions aren't met, that single step is skipped and execution continues to the next step.
Step conditions are configured per-step in the step settings panel. Condition steps are a dedicated step type that you add to the canvas.