Workflows
Variables and expressions
Move data between nodes with {{variables}}, dotted paths, task data and inline {{=FUNCTION()}} expressions.
Almost every setting accepts expressions. They are resolved when the node runs.
Variables
| Syntax | Resolves to |
|---|---|
{{amount}} | A variable (trigger data, user variable or a node output) |
{{vendor.name}} | A property of an object variable |
{{lines.0.sku}} or {{lines[0].sku}} | An array element by index (0 = first) |
{{task.title}}, {{task.status}} | The run's task |
{{task_data.cost_centre}} | A User Task field value after the task is completed (also {{task.data.cost_centre}}) |
{{outcome}}, {{outcome_notes}} | The outcome chosen on the last completed User Task |
{{_raw}} | The full webhook payload |
{{last_error}} | The last error message when a node continues on error |
When a setting is only an expression ({{lines}}), the raw value is passed through, so numbers stay numbers and arrays stay arrays. When an expression is part of a longer string (Invoice {{number}}), values are converted to text.
Inline functions
{{=FUNCTION(arguments)}} evaluates one of the built-in functions. Arguments can be literals, variables ({{amount}} or just amount) and other functions:
{{=UPPER(LEFT(vendor.name, 3))}}-{{=FORMAT_DATE(NOW(), "YYYYMMDD")}}
{{=IF(amount > 10000, "CFO", "Manager")}}
{{=ADD_DAYS(received_at, 30)}}A whole-string function returns its typed value and is evaluated exactly once, so {{=GUID()}} or {{=NOW()}} give one value per node.
Node outputs
Nodes write their results into variables. Most let you name the output (output_var); integration calls, decision tables and agents also write prefixed variables ({{get_vendor_response}}, {{approval_policy_outputs}}) so several calls in one run don't collide. The designer's data picker lists everything available at the selected node — see Reading values from an API response.
User variables
Declare variables with defaults in the designer's variables panel or in the definition's user_variables. They are the workflow's inputs: callers override them with variables when starting a run, and a variable can be marked required:
{ "workflow_id": "…", "variables": { "currency": "EUR", "amount": 1200 } }Live references
A Live Reference node binds an integration reference to a name; reading {{fx.rate}} calls the reference at that moment, so long-running workflows always see fresh values.