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

SyntaxResolves 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:

text
{{=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:

json
{ "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.