Portal Community

Full Availability Matrix

Node Position $json $input $output.{id} $var.{name} $global $context
First node after trigger Always set null — no upstream node null — no nodes have run yet null — no SetVariable has run Always set Always set
Second node (linear pipeline) Always set Output of first node First node's output only null (unless first node was SetVariable) Always set Always set
Any node N in a linear pipeline Always set Output of node N-1 Outputs of nodes 1 through N-1 Available if SetVariable ran before this node Always set Always set
Node in a parallel branch (fan-out) Always set Output of the fork/gateway node Only outputs of nodes that ran before the fork Only vars set before the fork Always set Always set
Node after a fan-in (merge) Always set Primary port connection output Outputs of all branches that completed Vars set in either branch Always set Always set
Node inside a sub-workflow Sub-workflow trigger payload Output of previous sub-workflow node Sub-workflow nodes only (parent nodes NOT visible) Sub-workflow scope only Always set (parent tenantId, executionId) Always set
Node after HIL resume Always set (restored from suspension) HIL approver's decision data All nodes that ran before suspension All vars set before suspension Always set Always set

Prefix Availability Summary

PrefixAvailable FromNotes
$jsonExecution start — alwaysNever null; same value at every node
$inputFrom the second node onwardsNull at the first node; follows graph edges
$output.{nodeId}After the named node has runNull for downstream or not-yet-run nodes
$var.{name}After the SetVariable node for that name has runNull if no SetVariable has set that name yet
$globalExecution start — alwaysTenant-admin configured; cached with TTL
$contextExecution start — alwaysImmutable throughout execution

Sub-Workflow Scope Note

Sub-workflows execute in a nested ExecutionMemory scope. Inside a sub-workflow, $output.{nodeId} only sees nodes within that sub-workflow — nodes from the parent workflow are not accessible via $output. Use the sub-workflow trigger payload ($json) to receive data from the parent.

The availability of $output depends on execution order, not graph position. A node can reference $output.{nodeId} for any node that topologically precedes it in the graph. However, in branching workflows where a node on a skipped branch is referenced, the output will be null even if the nodeId is valid.