Build workflows
Use expressions
Read earlier outputs, select array values, and preserve data types.
Expressions read values using double braces. They are resolved when a node executes, so the value must already be available on that path.
Read a value#
{{name}}
{{global.threshold}}
{{start.output.startTime}}
{{variable.output.customer.name}}Use the expression picker in a parameter field to browse available values. Node scope names distinguish repeated node types, such as variable and variable2.
Keep the original type#
When the entire field is an expression, the result keeps its type. An expression that reads an array supplies an array; it does not become JSON text.
When an expression appears inside other text, the result becomes a string. Hello, {{name}}! is useful for a message. It is not the right way to pass an object to a field that expects an object.
Select an array item or object field#
{{global.items[0]}}
{{index(global.items, 0)}}
{{index(global.settings, 'label', 'Untitled')}}index(source, selector, default) selects an array item or object property. The selector defaults to zero, and the default value is used when the selection is missing.
Know the expression boundary#
Expressions support reading properties, bracket selectors, literal values, and index(). They are not arbitrary JavaScript. For arithmetic, mapping, filtering, or other transformations, use the Code node.
An unavailable or invalid exact expression resolves to an undefined value; inside text it becomes empty text. If a field is unexpectedly blank, inspect the upstream output, check spelling, and confirm that the producer ran on this path.
Try the first message example.