How data moves between nodes
Each node receives what the node before it gave back. See it in the node's dialog, put it in a field with an expression, and check the result.
Why it matters
Most fields take their values from earlier nodes. What a node receives tells you what its fields can use, and why a value comes out empty.
How it works
A node's dialog has three panes.

| Pane | What it holds |
|---|---|
| Input | Everything this node can read: Suggested, the value the field most likely wants; From earlier steps, each earlier node and Start, for what started the run; Build, with Functions, Dates, Secrets and Files. Search data and functions finds any of them. |
| Settings | The node's fields, with values from Input drawn as chips. Result, under a field, shows what it gives with the data the editor has. |
| Output | What the node gave back the last time it ran in the editor, as Table, JSON or Schema. Test step runs it for real, on Test. |
To use a value, click in a field, then click the value under Input. Flowmage writes the expression, such as {{ json.orderId }}.
No data yet under Input means nothing before this node has run: Test step runs those nodes with the sample on Start.
What json holds
| Where the node stands | What json is |
|---|---|
| One node leads into it | That node's output. |
| Several nodes lead into it | Empty (null). Read each one by name, as node["Check the site"], from From earlier steps. |
| First node inside a loop | Empty. Read the current item as loop.item. |
| First node after Start | The trigger payload. In the editor, that is the Sample data on Start. |
What started the run is also trigger, from any node.
An example
Open Start in a flow with no trigger yet, switch Sample data to JSON, and enter:
{
"orderId": "A-1001",
"status": "paid",
"total": 250
}Add a Log node after Start with the Message Order {{ json.orderId }}. Result under Message reads Order A-1001, and after Test run the run's log shows that line on the Log node.
A table node that adds a row gives back that row's ID and version:
- rowId"row_1"
- rowVersion1
Limits
The Output you see in the editor stays with the draft: a published version never includes it, and real runs keep their own data in Runs.
