Skip to content

Data between steps ​

Every step of a Flow can access the results of the previous ones. That's the basic principle: the trigger delivers data, the first action works with it, the second uses its result.

Inserting values ​

In a step's settings, Use values from previous steps leads to the selection of available data. A click places the value at the cursor; alternatively, drag it to the desired spot in the text field.

An inserted value appears as a colored chip. Clicking it opens the expression editor — there the value can be processed further, for example converted or given a fallback value.

Mixing fixed text and values

You don't have to choose. An email subject can read: Your registration for followed by the Event field from the trigger. This applies to recipient, subject, body, and most other input fields.

Keyboard shortcut in the JavaScript step and the HTML block

These two have a code editor instead of chips. There, Ctrl + Space inserts Grid fields:

Press Ctrl + Space to insert Grid fields

→ The expression editor

What the trigger delivers ​

TriggerAvailable data
New entryThe newly created entry with all fields
Entry was changedThe changed entry with all fields
Entry via formThe created entry
Entry changed via formThe changed entry
WebhookThe submitted JSON data
Show pageThe values entered on the page

All fields are available

Even fields that weren't asked for on the triggering form are available — the Flow gets the complete entry, not just the form inputs.

What actions deliver ​

Every action passes on a result that later steps can use:

ActionResult
Load all entriesA list of entries
Create entryThe newly created entry
QR CodeThe generated code
PDF to textThe extracted text
Import CSV fileThe read-in rows
JavaScriptThe return value of the code
Create link to pageA link to the running instance
Prefilled form linkAn editing link

Lists need "Parallel" ​

A list is not yet a repetition

If a step delivers a list — such as Load all entries — the following steps still only run once.

Only the Parallel helper turns it into individual runs per element. → Router and Parallel

Load all entries          →  list
   ↓
Parallel                   →  once per element
   ↓
Email                       →  a single entry is available here

Inside Parallel, you refer to the current element, not the whole list anymore.

With Merge runs, the parallel section ends: after that the Flow runs once again, and you no longer refer to a single element. → Router and Parallel

Values from the JavaScript step ​

The JavaScript step receives the previous step's data as input and passes it on with return:

javascript
const data = input
data.status = 'processed'
return data

For transformations no step covers

If an outside system expects a specific format, or values need to be converted, this is the way to do it — without running a service of your own.

Data from pages ​

If a Flow shows a page, the values entered there become available afterward. Access happens via the key of the respective input block.

Set the key before referencing it

If you change the key afterward, existing references point to nothing — without an error message. → Input blocks

For HTML blocks with form fields, an additional rule applies: input fields without a name or id attribute are not passed through.

When values arrive empty ​

SymptomCause
Empty value in the emailThe field wasn't filled in the entry
Reference to a later stepOnly previous steps are available
After a RouterThe other branch was taken, its data is missing
After a pageThe key doesn't match, or was changed
From an HTML blockname or id attribute is missing

Look instead of guess

Via Show details on a step, you can see its actual input and output data from a real run. That clears up almost every "why is this empty" question faster than thinking about it.

→ Testing Flows

Next ​

Was this page helpful?