Using Transform Nodes (Structured Mode)
Use structured transforms to reshape data by defining fields and types.
Overview
A Transform node in Structured mode lets you build a new object by declaring its fields, types, and values. Each field pulls from earlier steps using template expressions, and the node outputs a typed object that downstream steps can read by name.
Use structured mode when the next step expects a specific shape - a connector tool with a typed input, a subworkflow with declared inputs, or a response body with named fields. It keeps the shape explicit instead of hidden inside free-form text.
Configuration
- Drop a Transform node onto the canvas.
- In the properties panel, set the mode to Structured.
- Add a field for each property of the output object. For each field, set:
- Name - the property key (for example
customerEmail). - Type -
string,number,boolean,object, orarray. - Template - a template expression such as
{{ step1.customer.email }}.
- Name - the property key (for example
- For
objectandarraytypes, add nested fields to describe the shape. - Set Iterate over if you want to apply the same shape to every item in an input array.
Iterate Over Arrays
When Iterate over is set to a template that resolves to an array, the transform runs once per item. Inside the field templates, reference {{ item }} to read the current array element and {{ index }} for its position. The output is a new array of objects in the shape you defined.
Configuration Reference
- Mode - set to
Structured. - Fields - list of name/type/template entries that describe the output object. The JSON view of the field editor shows the same list as raw JSON, for example
[{"name": "first_name", "type": "string", "template": "{{ result_step1.first_name }}"}]. - Iterate over - empty by default. Set it to a template that resolves to an array, and reference
{{ item }}in field templates.
Usage Examples
- Trim a Shopify order - output
orderId(string) from{{ step1.id }},total(number) from{{ step1.total_price }}, andcustomerName(string) from{{ step1.customer.first_name }} {{ step1.customer.last_name }}. - Reshape a product list - set Iterate over to
{{ step1.products }}and define fields likeskufrom{{ item.variant.sku }}andpricefrom{{ item.variant.price }}.
Tips
- Choose the correct type for each field. A number left as a string can break downstream connectors that validate input.
- Use structured mode immediately before a Connector or Subworkflow node so the shape feeding the next step is explicit.
- If the output is fundamentally a single string (an email body, a URL), use Plaintext mode instead.
Common Pitfalls
- Forgetting to set Iterate over when the source is an array produces a single object referencing the whole array, not a list of items.
- Referencing
{{ item }}without Iterate over resolves to nothing. - Deeply nested objects are hard to debug in the field editor. Build them in small pieces and check the execution log between transforms.
Related Articles
- Using Transform Nodes (Plaintext Mode)
- Working with Variables and Templates
- Using Loop Nodes
- Using Connector Nodes in Direct Mode
- Using Subworkflow Nodes