Skip to main content
Any config field can read from an upstream node’s output using a reference wrapped in double curly braces:
The first segment is the upstream node’s ID; the rest navigates into that node’s output.

Reference patterns

When a field contains exactly one reference, the value keeps its original type (object, list, number). When a reference sits inside other text, like Hello {{node-1.user.name}}!, it is converted to a string.

Dragging references

The easiest way to build a reference is to not type it at all:
1

Produce some output

Run the upstream node once (or give it a mocked output).
2

Open its Output panel

Select the upstream node and click Output (Y) in the config panel.
3

Drag a value

Grab any value in the output and drop it onto a config field. The correct reference is inserted as a chip.
Dragging an output field into a config field

Dragging a value from a node's output into a downstream config field.

You can also type {{ in any text field to get autocomplete suggestions built from the connected nodes’ actual output.

Inline expressions

When you need to transform a value, not just read it, write a JavaScript expression inside {{ }} using $-accessors. The expression runs in a sandbox at execution time and its result is substituted into the field. No separate code node needed for basic string or number work. Because it’s JavaScript, you get the full language:
Two small helpers are also available: $if(condition, a, b) and $ifEmpty(value, fallback). When the whole field is a single expression, the result keeps its type (number, list, object). When an expression sits inside other text, the result is converted to a string, the same rule as plain references. The easiest way to build one is to drag a value from a node’s Output panel into a field, which inserts the $('node-1').field form, then add your transform (.split(","), * 2, …). While the field holds an expression, a live preview under it shows the computed result against the connected nodes’ latest output, and one-click chips insert the available accessors.
Plain references like {{node-1.message}} keep working exactly as before. An expression is only evaluated when the {{ }} uses a $-accessor, so literal {{name}} placeholders meant for a downstream system still pass through untouched.

Common mistake: .output. in the path

References navigate the node’s output directly, so do not insert an output segment:
Dragged and autocompleted references always use the correct form.

Common mistake: accessors from another tool

Expressions copied from another automation tool often use accessors NoClick does not have. They pass the editor’s syntax check and then fail at run time, so it is worth recognizing them:
$input, $node[...], $items(...), .itemMatching(...), $prevNode, $execution, $workflow, $parameter, and $binary do not exist here either. The accessors NoClick supports are the ones in the table above, plus $if and $ifEmpty. When the AI builder or an MCP client writes one of these into a field, the write is rejected and the message shows the NoClick form instead.
Workflow variables are available under the reserved vars ID, e.g. {{vars.api_base}}. See Variables and state.