Reference · Tools

Edit Fields

Create, modify, or remove data fields.

Action Core Nodes v1

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

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool does not require any credentials.

Parameters

ParameterTypeRequiredDefaultDescription
ModeoptionsYesmanualChoose between manual field mapping (define fields via UI) or JSON output mode (write raw JSON).
Options: manual, json
Fields to SetfixedCollectionNo{}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 NamestringNoThe name/key for the field. Use dot notation (e.g., ‘user.id’) to create nested objects when dot notation is enabled.
— Field TypeoptionsNostringThe data type for the field value. Values will be converted to this type.
Options: string, number, boolean, array, object
— ValuestringNoThe value for the field. Supports expressions like {{ $json.fieldName }} to reference input data. (shown when Field Type is string)
— ValuestringNoJSON array literal or expression. Supports expressions like {{ $json.fieldName }}. (shown when Field Type is array)
— ValuestringNoJSON object literal or expression. Supports expressions like {{ $json.fieldName }}. (shown when Field Type is object)
— ValuestringNoNumeric value or expression. Supports expressions like {{ $json.fieldName }}. (shown when Field Type is number)
— ValuestringNoBoolean value (true/false/1/0/yes/no) or expression. Supports expressions like {{ $json.fieldName }}. (shown when Field Type is boolean)
JSON OutputstringNo{}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 OutputoptionsYesallInputFieldsControls 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
OptionscollectionNo{}Additional options for field editing behavior.
— Support Dot NotationbooleanNotrueWhen enabled, field names like ‘user.id’ create nested objects { user: { id: … } }. When disabled, ‘user.id’ is treated as a literal key.
— Ignore Type Conversion ErrorsbooleanNofalseWhen enabled, type conversion errors are ignored and the original value is kept. When disabled, type conversion errors will fail the item.
— Include Binary DatabooleanNotrueWhen enabled, binary data from input items is passed through to output.
Max ConcurrencynumberNo100Maximum 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

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes 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 BusyBot

Last updated . Spotted something wrong? Tell us.