Change Fields
Change fields reshapes a record on its way between two steps. Rename a field the receiving system calls something else, add one it needs, drop the ones it should never see.
- Use it to
- Rename, set, and remove top-level fields on a record in one Step
- Find it
- Tools → Data → Transform → Change Fields
- Cost
- 1 Step credit per execution
- Limits
- Runs three fixed passes in order: 1. Rename fields, 2. Set fields, 3. Remove fields
- Output
- {{ N.<field> }} (the reshaped record at the top level)
- Instead
- Custom Variables (when creating new named values without modifying an existing object)
It is the step that saves you from writing code purely to move data from one shape into another.
Transforming single fields inline? Use Data Transformation pipes (e.g. {{ 3.company | trim | upper }} or {{ 3.users | pluck:email }}) for single-field tidying. Use the Change fields canvas step when renaming, adding, and dropping multiple keys across a record at once.
Three passes, in a fixed order
The step runs three passes, always in this order:
| Pass | When it runs | What it does |
|---|---|---|
| Rename fields | First | Each row gives a field’s current name and its new one |
| Set fields | Second | Each row sets a field to a value |
| Remove fields | Last | Each row names a field to leave out of the result |
Because renaming happens first, a Set row can write to a name that only exists because a Rename above created it. And because removal happens last, a field you set can still be removed in the same step.
// Before (Step 3 output):
{ "company_name": "Acme", "internal_blob": "..." }
// After Change Fields (Rename company_name -> Company, Set source = "web", Remove internal_blob):
{ "Company": "Acme", "source": "web" }Setting it up
Add the step
Open Tools in the dock and choose Change fields under Data.
Point it at a record
Start from takes the record you want to change, normally a reference to an earlier step such as {{ 3 }}. Leave Start from empty to build a new record from the fields you set below. Field names match literally at the top level.
Rename what needs renaming
Under Rename fields, add a row per field with its current Field name and New name. Renaming onto an existing field name overwrites that field. Renaming a missing field changes nothing and logs a warning on the run.
Set what needs setting
Under Set fields, add a row per field with its Field name, Value, and optional Type (Text, Number, Yes/no, List, or Record):
- Typed literals: A value with no
{{ }}reference is stored using its Type (Textby default, or parsed as JSON forNumber,Yes/no,List, andRecord). - References: A single reference (such as
{{ 1.email }}or{{ 3.items }}) keeps its runtime type automatically. Mixing a reference with surrounding text produces Text.
Remove what should not travel on
Under Remove fields, name any field to leave out, such as an internal ID or large payload blob. Removing a field that does not exist does nothing.
What it passes on
The changed record itself, with your renames, sets and removes applied. Fields sit at the top level, so a downstream step reads them directly:
{{ 4.firstName }}
{{ 4.greeting }}Everything you did not mention travels through unchanged, keeping its type.
Examples to copy
Match CRM field names
An enrichment API returns company_name and employee_count, but your CRM expects Company and Headcount.
Start from: {{ 3.ret }}. Add two Rename rows: company_name → Company and employee_count → Headcount, then map the renamed fields into the CRM action.
- Run
- Point Start from at an earlier Step's record, add a Rename or Set row, and click Run step in Test & Debug
- You should see
- The Output tab shows the reshaped record at the top level with your renamed, added, and removed keys applied in order.
What’s Next?
- 👉 Automation Data & Mapping →: understand how values move from one Step to the next.
- Parse JSON: turn a JSON string into a record you can reshape.
- AI Data Transform: reshape unstructured content when there are no fixed fields to select.