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

  1. Drop a Transform node onto the canvas.
  2. In the properties panel, set the mode to Structured.
  3. 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, or array.
    • Template - a template expression such as {{ step1.customer.email }}.
  4. For object and array types, add nested fields to describe the shape.
  5. 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 }}, and customerName (string) from {{ step1.customer.first_name }} {{ step1.customer.last_name }}.
  • Reshape a product list - set Iterate over to {{ step1.products }} and define fields like sku from {{ item.variant.sku }} and price from {{ 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

Learn More

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.