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). A webhook's request fields sit undertrigger.body—{{trigger.body.email}}, not{{trigger.email}}.inputData— the same input, addressable directly.steps— every completed step's output, keyed by the step's name (e.g.steps.classifyEmail).steps.classifyEmailon its own is that step's whole output, so you can pass it along in one piece. For a code step, it is exactly what the code returns.
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.currentIsoWeek}} | The current ISO week, as 2026-W37 |
{{runtime.currentUserId}} | The ID of the user who triggered the run (where applicable) |
{{runtime.timezone}} | The workspace's timezone |
Key a weekly row on the week, not the date
A workflow that keeps one row per week should key it on
{{runtime.currentIsoWeek}}. Keyed on {{runtime.currentDate}}, a second run
mid-week — a manual run, a retry — writes a second row for the same week
instead of updating the first. ISO weeks start on Monday, and a week that
spans New Year still has a single key.
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 built differently
The condition on a Branch step, and on a Do While / Do Until loop,
is not a {{...}} template. Those are built from rules — a field, a test, and
a value, picked from dropdowns — with a JavaScript expression available as an
escape hatch for the rare question rules can't ask.
See Conditions for the tests each field type offers, the live verdict, and when to reach for an expression.
Continue with Error handling for how failures in these steps are handled.