Skip to main content
A workflow execution carries a single accumulating object — the context (ctx) — that grows as each step runs. Understanding ctx is the key to writing expressions that reference data from any earlier step.

The context object

When a workflow starts, ctx contains the trigger data and any input provided:
After each step runs and produces output, ctx gets a new key named after that step ID:
By the time the workflow reaches an Output step, ctx contains every step’s output.

Referencing data with expressions

Suppose your workflow has executed two steps so far:
  • n1: a manual Input step
  • n2: an Action step
The context (ctx) at this point might look like:
To read the customer_email value produced by the Input step n1, use this expression:
In this expression, n1 refers to the step ID, and customer_email is the specific key from that step’s output. See Expressions overview for the full syntax reference.

What each step contributes to ctx

Type preservation

Expressions preserve types when the entire field value is an expression. When mixed with text, they coerce to string.
This matters when downstream steps (HTTP request bodies, Output schemas) expect specific types.

Working with lists

There is no built-in loop step. To iterate over a list, use a Code step:
For long-running loops where each iteration might fail independently, consider invoking sub-workflows asynchronously from the Code step — see Sync vs async.

Referencing Upstream Step Data in the Current Step

Each step’s configuration form includes smart input components that allow you to easily select properties from upstream steps. This makes it simple and error-free to insert expressions referencing outputs from previous steps. When you choose a variable using the variable selector, the correct expression is automatically inserted into your configuration field.
Variable selector open in builder

Variable selector pops up when you click in an input field that accepts expressions

A variable inserted into field using variable selector

After selecting a variable, the builder inserts the corresponding expression into your configuration field.

Here clicking on the “name” property of the “Input” step node automatically builds the expression {{n1.name}} where n1 is the id of the Input step.