Skip to main content
The Transform node runs operations that read from and write to the session context. Use it for data shaping, cleanup, combining fields, accumulating results across a loop, or execution-state updates. Each operation has a type, a target dot-path under context.*, and (for non-DELETE ops) a value that is a raw JSONata expression. Operations in the same node run top-to-bottom and each one sees the writes of the ones before it.
The value field is raw JSONata, not a template. Do not wrap it in {{...}} — reference variables directly (e.g. context.inputs.email ~> $trim, not {{context.inputs.email}} ~> $trim).

Parameters

Operation Fields

Operation Types

For object-merging and array manipulation, use SET combined with JSONata’s built-in $merge and $append functions — there is no dedicated merge or append operation type.

Examples

Normalize an Input

Clean up an email before typing it into a form:
Reference it downstream with {{context.email_clean}}.

Combine Fields

Derive a full name from two inputs:

Combine Two Arrays

Flat-concatenate two arrays using JSONata’s $append:
$append([1, 2], [3, 4]) produces [1, 2, 3, 4]. Note that & is string concatenation in JSONata, not array — use $append for arrays.

Accumulate Loop Results

Inside a loop body, append processed items into an array using $append:
The single-element array ([{...}]) wrapping is what makes $append flat-concatenate one item — passing the bare object would also work ($append flattens), but the array form makes intent obvious.

Enrich an Extracted Object

Add metadata to a record that was extracted earlier:

Clean Up Before End

Drop scratch paths so they don’t show up in the webhook payload:

Notes

  • Targets must start with context.. Anything else is rejected by validation because downstream nodes can’t read it.
  • Later operations in the same node see earlier writes, so you can derive values in stages within one Transform.