Reference · Tools
Edit Fields
Create, modify, or remove data fields.
Edit Fields lets you create, rename, modify, or delete fields on each item passing through your workflow. Use it whenever incoming data doesn't match the shape a downstream node expects — for example, renaming a CRM's `contact_id` to `userId` before sending it to an API. It supports static values, expression syntax, dot notation for nested objects, and type conversion.
- Node type
- Action
- Parameters
- 6
- Outputs
- Output, Error
- Credentials
- None required
Edit Fields
Modify or add fields to data
Overview
Create, modify, or remove data fields. Shape incoming data into the exact format required by subsequent nodes. Supports manual field mapping, JSON output mode, type conversion, and dot notation for nested objects.
Category: Core Nodes
Tool Name: edit_fields
Version: 1
Appearance: Icon: editFields | Color: #10b981
Node Type
Action — processes input items and produces output
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool does not require any credentials.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Mode | options | Yes | manual | Choose between manual field mapping (define fields via UI) or JSON output mode (write raw JSON). |
Options: manual, json | ||||
| Fields to Set | fixedCollection | No | {} | Define the fields to add or modify. Each field has a name, type, and value. Only used in Manual Mapping mode. (shown when Mode is manual) |
| — Field Name | string | No | — | The name/key for the field. Use dot notation (e.g., ‘user.id’) to create nested objects when dot notation is enabled. |
| — Field Type | options | No | string | The data type for the field value. Values will be converted to this type. |
Options: string, number, boolean, array, object | ||||
| — Value | string | No | — | The value for the field. Supports expressions like {{ $json.fieldName }} to reference input data. (shown when Field Type is string) |
| — Value | string | No | — | JSON array literal or expression. Supports expressions like {{ $json.fieldName }}. (shown when Field Type is array) |
| — Value | string | No | — | JSON object literal or expression. Supports expressions like {{ $json.fieldName }}. (shown when Field Type is object) |
| — Value | string | No | — | Numeric value or expression. Supports expressions like {{ $json.fieldName }}. (shown when Field Type is number) |
| — Value | string | No | — | Boolean value (true/false/1/0/yes/no) or expression. Supports expressions like {{ $json.fieldName }}. (shown when Field Type is boolean) |
| JSON Output | string | No | {} | Raw JSON to set as the output. Supports expressions like {{ $json.field }}. Only used in JSON Output mode. (shown when Mode is json) |
| Include in Output | options | Yes | allInputFields | Controls what data leaves the node. ‘All Input Fields’ appends/merges new fields to existing data. ‘Keep Only Set Fields’ outputs only the explicitly defined fields. |
Options: allInputFields, keepOnlySet | ||||
| Options | collection | No | {} | Additional options for field editing behavior. |
| — Support Dot Notation | boolean | No | true | When enabled, field names like ‘user.id’ create nested objects { user: { id: … } }. When disabled, ‘user.id’ is treated as a literal key. |
| — Ignore Type Conversion Errors | boolean | No | false | When enabled, type conversion errors are ignored and the original value is kept. When disabled, type conversion errors will fail the item. |
| — Include Binary Data | boolean | No | true | When enabled, binary data from input items is passed through to output. |
| Max Concurrency | number | No | 100 | Maximum items to process concurrently. |
Output Data
One output item per input item — this node reshapes items, it never changes how many there are. Binary data is forwarded unless Include Binary Data is turned off.
What the output JSON contains depends on Include in Output:
- All Input Fields — the item’s existing JSON is copied first, then the fields you set are written over it. Fields you do not touch survive.
- Keep Only Set Fields — the output starts empty, so only the fields you set (or the object you wrote in JSON Output mode) are present. This is how you strip data from an item.
In Manual Mapping mode each entry in Fields to Set is evaluated against the current item, converted to its Field Type, and written under its Field Name. With Support Dot Notation on, a name like user.profile.id creates the nested objects along the way; with it off the whole string becomes one literal key. In JSON Output mode the JSON you wrote is evaluated for expressions, parsed, and then merged into (or substituted for) the item JSON — it must resolve to a JSON object, not an array or a primitive.
Every output item also carries _editedAt, the time the edit was applied as a Unix timestamp in milliseconds.
Reference the result downstream by expression, e.g. {{ $json.fullName }}.
Usage Examples
- add a timestamp field to each item
- rename the ‘name’ field to ‘fullName’
- set status to ‘processed’
- remove sensitive fields before output
- transform the data structure
Example Configuration
Manual mode — adding multiple fields:
{
"type": "edit_fields",
"parameters": {
"mode": "manual",
"includeInOutput": "allInputFields",
"fieldsToSet": {
"fields": [
{
"name": "fullName",
"type": "string",
"value": "{{ $json.firstName }} {{ $json.lastName }}"
},
{
"name": "isActive",
"type": "boolean",
"value": "true"
},
{
"name": "processedAt",
"type": "string",
"value": "{{ new Date().toISOString() }}"
}
]
},
"options": {
"supportDotNotation": true,
"ignoreTypeErrors": false,
"includeBinaryData": true
}
}
}
JSON mode — complete data transformation:
{
"type": "edit_fields",
"parameters": {
"mode": "json",
"includeInOutput": "keepOnlySet",
"jsonOutput": "{\n \"user\": {\n \"id\": {{ $json.id }},\n \"profile\": {\n \"name\": \"{{ $json.firstName }} {{ $json.lastName }}\",\n \"email\": \"{{ $json.email }}\"\n }\n },\n \"metadata\": {\n \"processedAt\": \"{{ new Date().toISOString() }}\",\n \"version\": \"1.0\"\n }\n}",
"options": {
"supportDotNotation": false,
"ignoreTypeErrors": true,
"includeBinaryData": false
}
}
}
Dot notation for nested objects:
{
"type": "edit_fields",
"parameters": {
"mode": "manual",
"includeInOutput": "keepOnlySet",
"fieldsToSet": {
"fields": [
{
"name": "user.profile.firstName",
"type": "string",
"value": "{{ $json.firstName }}"
},
{
"name": "user.profile.lastName",
"type": "string",
"value": "{{ $json.lastName }}"
},
{
"name": "user.settings.notifications",
"type": "boolean",
"value": "true"
}
]
},
"options": {
"supportDotNotation": true,
"ignoreTypeErrors": false,
"includeBinaryData": false
}
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Creates, modifies, or removes fields on each item using static values or expression syntax. Use when you need to reshape data — renaming fields, adding computed values, or stripping unwanted properties. Produces items with the modified field structure.
Frequently asked questions
Does Edit Fields keep fields I don't explicitly map?
That depends on your configuration. By default, unmapped fields are stripped from the output — only the fields you define will appear on each item. If you need to keep existing fields alongside new ones, you'll need to explicitly map them through or check whether your mode preserves the original item.
Can I use expressions or computed values, or only static text?
Both are supported. You can enter a static value or write an expression that references other fields on the item, letting you do things like concatenate strings, do arithmetic, or pull a nested value up to the top level. This is what makes the node useful for derived fields, not just simple renaming.
How do I work with nested objects — for example, setting `address.city`?
Edit Fields supports dot notation, so you can target or create nested properties directly by writing the path as the field name (e.g., `address.city`). This means you don't have to construct the full object manually just to set one nested value.
What happens if the node encounters an error on one item?
Edit Fields has two outputs: Output and Error. Items that process successfully pass through the Output branch, while items that trigger an error are routed to the Error output. This lets you handle bad data separately rather than halting the whole workflow.
Do I need to set up any credentials to use this node?
No. Edit Fields requires no credentials of any kind — it operates entirely on the data already present in your workflow, so you can add it anywhere without any authentication setup.
Build with the Edit Fields node
Drop it into a workflow, wire it to an agent, or call it on a schedule.
Open BusyBotLast updated . Spotted something wrong? Tell us.