Transform
Builds a new object by mapping source fields (referenced with {{...}}) onto target keys. Use this when you need to reshape data between two nodes — e.g. taking a Stripe payload and producing the shape your CRM expects.
When to use
- Renaming or restructuring fields between two systems.
- Extracting a subset of fields from a big payload.
- Applying a basic transformation (
uppercase,lowercase,trim) while copying the value. - Computing derived fields (concatenation, defaults).
For more complex transformation that needs branching logic, consider AI Transform instead.
Configuration
| Field | Required | What it does |
|---|---|---|
mappings | Yes | JSON array of mapping rules. |
Mapping rule format
json
[
{
"targetKey": "customer_email",
"sourceExpression": "{{trigger.data.customer.email}}",
"transform": "lowercase"
},
{
"targetKey": "full_name",
"sourceExpression": "{{trigger.data.first_name}} {{trigger.data.last_name}}"
},
{
"targetKey": "amount_cents",
"sourceExpression": "{{trigger.data.amount}}"
}
]transform is optional. Supported: lowercase, uppercase, trim, number (coerces strings to numbers), boolean (coerces "true"/"false" strings to booleans).
What it outputs
An object built from the targetKey/result pairs:
{
customer_email: "alice@example.com",
full_name: "Alice Smith",
amount_cents: 9999
}Downstream nodes reference fields as {{<transform_node_id>.data.customer_email}} etc.
Gotchas
- Missing source fields produce empty strings in the output, not
undefined. If you need "field was missing" semantics, pair with a downstream If/Else checkingexists. - Template concatenation is string-based —
{{a.b}} {{c.d}}produces a space-separated string, not a number sum. For arithmetic, use AI Transform or Set Variable with a computed value.