Skip to main content

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

PropertyRequiredDescription
TransformNoVisual 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:

FieldTypeValue
userIdValue{{ $nodes['Get User'].id }}
fullNameValue{{ $nodes['Get User'].firstName + ' ' + $nodes['Get User'].lastName }}
emailsArray mapSource: {{ $nodes['Get User'].contacts }}, element: {{ $item.email }}