Branching & flow control
Why flow control
A plain list of steps runs straight through, top to bottom. Flow-control steps let a run take different paths, repeat, or stop early — so one automation can handle several outcomes.
If / else
Splits the flow in two. You write a condition; if it's true the then branch runs, otherwise the else branch runs. On the canvas each branch has its own chain of steps, and you add steps inside a branch with its own "+" buttons.
Example condition: event.metadata.priority == "high"
Stop if false
A simple guard. If its condition is false, every remaining step is marked skipped and the run ends cleanly. Use it as an early exit when there's nothing more to do — it's lighter than an If / else when you only care about one path.
For each
Loops over a list — event metadata, the output of an earlier step, or an expression. The steps nested inside run once per item. Inside the loop you can reference the current item as ${item} and its position as ${index}.
Fail run
Stops the run immediately and marks it failed, with a message you write. Pair it with If / else or Stop if false to enforce a guard clause — for example, fail the run when a required field is missing so it shows up clearly in your run history.
Run automation
Invokes another automation as a sub-routine. You can optionally wait for it to finish before continuing, and pass input into it. The engine refuses cycles, so an automation can't end up calling itself in a loop.
Tip: condition vs. branching
Use the trigger's condition to decide whether a run should happen at all. Use a branching step to make decisions within a run that's already underway.
Next
Continue with Using dynamic values to learn how steps read event data.