Transform
Constructs a new object by visually mapping fields from upstream nodes. Use it to reshape data, rename fields, nest objects, and map over arrays — all without writing code.
Properties
| Property | Required | Description |
|---|---|---|
| Transform | No | Visual field mapping tree. Add fields using the inline builder |
Behaviour
The Transform node produces a single output object whose shape you define in the builder. Each field in the builder corresponds to a key in the output. Fields can be:
- Value — a static value or an expression referencing any upstream data
- Object — a nested object with its own child fields
- Array map — maps each item in a source array to a new shape
Rows with the Active toggle off are excluded from the output.
Array mapping
When a field is set to Array map, you specify a source array expression and a template that describes how each item should be transformed. Inside the template, use $item to reference the current element:
{{ $item.firstName }}
{{ $item.email.toLowerCase() }}
An optional Filter expression on the array map row lets you exclude items. Return a falsy value to skip an item:
{{ $item.active }}
Array maps can be nested to handle arrays of arrays.
Large file array mapping
When the source expression of an Array map resolves to a JSONL file reference (produced by Parse CSV or a previous Transform when operating on large inputs), the array map streams the file row-by-row rather than loading it entirely into memory:
- Each row is read, mapped through the template, and written to a new JSONL output file.
- The output field becomes a file reference rather than an in-memory array, which can be passed downstream to a Loop node or another Transform.
- The full dataset is never held in memory simultaneously.
This behaviour is automatic — no configuration is needed beyond connecting the file reference to the source expression.
Output
The output of the node is the object you constructed. Access individual fields downstream:
{{ $nodes['Transform'].fieldName }}
{{ $nodes['Transform'].address.city }}
{{ $nodes['Transform'].tags[0] }}
When an array map field produces a JSONL file, that field will be a file reference rather than an inline array. Pass it to a Loop node to process rows individually.
Replace Transform with the actual name you gave the node.
Example
Reshape an API response before passing it to a second API:
| Field | Type | Value |
|---|---|---|
userId | Value | {{ $nodes['Get User'].id }} |
fullName | Value | {{ $nodes['Get User'].firstName + ' ' + $nodes['Get User'].lastName }} |
emails | Array map | Source: {{ $nodes['Get User'].contacts }}, element: {{ $item.email }} |