Skip to main content

Conditions & Branching

Conditions let your workflow make decisions — running different steps depending on the data in a given run.

If / Else

An If node evaluates a boolean expression against run-time data. If the condition is true, the workflow follows the Yes branch; otherwise it follows the No branch.

Example condition:

trigger.issue.labels includes "bug"

You can combine multiple rules with AND / OR:

trigger.pull_request.state == "open"
AND trigger.pull_request.draft == false

Multi-branch (Switch)

A Switch node routes execution to one of many branches based on the value of a variable. Similar to a switch statement in code.

Example: route a support ticket to different Slack channels based on trigger.ticket.priority:

  • urgent#support-urgent
  • high#support-high
  • (default)#support-general

Filter (stop if)

A Filter node stops the run early if a condition is not met. This is useful at the top of a workflow to ignore irrelevant triggers — for example, only proceeding if a GitHub PR targets the main branch.

Loop

A Loop node iterates over an array and executes a set of steps for each item. For example, loop over a list of Jira tickets and post each one to Slack.

tip

Keep condition logic simple. If you find yourself nesting multiple levels of If/Else, consider splitting the workflow into separate workflows triggered by a webhook.