Using dynamic values
Why dynamic values
An automation is only useful if its steps can react to the actual thing that happened. Almost any field in a step config accepts a template expression — written as ${...} — that's replaced with live data when the run executes.
The event
The data that started the run lives under event:
${event.title}— the event's title.${event.entity_id}— the ID of the thing the event is about.${event.metadata.fieldName}— any custom field carried on the event, such as${event.metadata.priority}.
When you pick an event type on the trigger, its available metadata fields are listed in the config panel — click one to insert it.
Earlier step output
Each step's result is available to the steps after it under steps, keyed by the step's ID — for example ${steps.draft.output.output_text} pulls the text out of a step named draft. This is how you chain steps: classify with AI, then act on the category it returned.
Variables
The Set variables step writes into a vars namespace. Anything you store there is readable later as ${vars.yourKey}. Use it to compute a value once and reuse it across several steps.
Loop values
Inside a For each loop, the current item is ${item} and its zero-based position is ${index}.
Conditions use the same data
Trigger conditions and branching conditions read the same context, just without the ${} wrapper — you write the bare expression, for example:
event.metadata.severity == "critical"
For logic beyond simple substitution, the Compute step evaluates a full expression and stores the result for later steps.
Next
Continue with Starting from a template.