Portal Community

What Is a Node Output?

Every node in a Flow Studio workflow produces exactly one output object per execution. This object is a JSON value — it can be a flat record, a nested object, an array, or even a scalar. The engine stores it in ExecutionMemory.nodeOutputs[nodeId] immediately when the node completes.

Downstream nodes can then read this value using the expression syntax $output.{nodeId}. The entire output object is available regardless of which port the execution followed.

Key principle: Port routing (which downstream branch executes) and data access ($output.{nodeId}) are completely independent. A node's data is always accessible by its ID, even if execution took a different port.

The Two Roles of Node Output

RoleMechanismDescription
RoutingPort key (portKey)Determines which connected edge(s) are followed next
Data access$output.{nodeId}Provides the data payload to downstream expression evaluations

Output Flow Diagram

┌──────────────┐
│   NodeA      │
│  Executor    │
│              │
│ return       │
│  Success(    │
│   data,      │──→ ExecutionMemory.nodeOutputs["nodeA"] = data
│   portKey    │──→ Edge router follows edges from portKey
│  )           │
└──────────────┘
        │
        │ portKey = "main"
        ▼
┌──────────────┐
│   NodeB      │  Expression: $output.nodeA.amount
│  Executor    │
└──────────────┘

Port Types at a Glance

PortWhen It FiresTypical Use
mainNode completed successfullyHappy path continuation
errorNode threw an unhandled exceptionError handler branch
timeoutNode exceeded its timeout settingFallback / retry branch
customNode logic returned a named port keyConditional / decision branching

What You Will Learn in This Guide

Prerequisites: Familiarity with connecting nodes (Guide4_ConnectingNodes) and execution memory (Guide31_ExecutionMemory) will help you get the most from this guide.