Expressions
The {{...}} templating syntax for referencing trigger input and prior step output, plus runtime date/time values.
Steps reference each other's output — and the data that started the run — using {{...}} templating.
Syntax
Wrap a path in double curly braces: {{steps.stepName.output}}. Paths support:
- Dot notation for object properties:
{{steps.classifyEmail.category}} - Bracket notation with quotes for step names containing spaces:
{{steps["Classify email"].result}} - Array indexes:
{{steps.fetchItems.items[0].name}}
What's addressable
trigger— the data that started this run (an alias forinputDatawhen the run started from a trigger).inputData— the same input, addressable directly.steps— every completed step's output, keyed by the step's name (e.g.steps.classifyEmail).
Use the editor's data picker (opened from any field that accepts an expression) to browse what's available rather than typing paths by hand — it lists every upstream step and trigger field for the step you're configuring.
Runtime and date/time values
A separate set of values, all under runtime., gives you the current date and time without depending on any step:
| Value | Resolves to |
|---|---|
{{runtime.currentDate}} | Today's date |
{{runtime.currentDateTime}} | The current date and time |
{{runtime.currentTime}} | The current time |
{{runtime.currentTimestamp}} | The current Unix timestamp |
{{runtime.currentYear}} | The current year |
{{runtime.currentMonth}} | The current month |
{{runtime.currentDayOfMonth}} | The current day of month |
{{runtime.currentUserId}} | The ID of the user who triggered the run (where applicable) |
{{runtime.timezone}} | The workspace's timezone |
Date/time-based runtime values accept an offset: {{runtime.currentDateTime + 24h}} or {{runtime.currentDate - 7d}}. Supported units are m (minutes), h (hours), d (days), and w (weeks).
Example
A Wait step configured to resume at {{runtime.currentDateTime + 24h}} pauses the run for exactly one day from when that step executes.
Branch and loop conditions are a different language
The if condition on a Branch step, and the condition on a Do While / Do Until loop, are not {{...}} templates — they're raw JavaScript boolean expressions evaluated in a sandbox. Inside a condition, inputData and steps are available directly (no braces), and loops additionally expose iteration (the current 0-indexed loop count):
steps.classifyEmail.category === "urgent"
inputData.amount > 1000
iteration < 5The sandbox has no access to Node globals, process.env, or require — only the data explicitly passed into it.
Continue with Error handling for how failures in these steps are handled.