Edit Fields (Set)

processing.set Processing v0.1.0

Set output fields from literals or JS {{ }} expressions, per item. Choose which other input fields to keep (all/none/selected/except); expressions can reach into JSON held in a string.

Ports

DirectionPortLabel
InputinputInput
OutputoutputOutput

Properties

PropertyTypeDefaultDescription
Mode
mode
select "manual" Manual mapping = define fields one by one. JSON = produce the whole output object from JSON / a {{ }} expression.
manualjson
Fields to set
assignments
set-fields [{"name":"","type":"string","value":""}] Each field has a name (dot-notation builds nested objects), a type, and a value. The value can be a literal or a JS {{ }} expression like {{ $json.body.results[0].name.first }} or {{ $json.total * 2 }} — expressions can reach into JSON held in a string (e.g. an HTTP body).
Shown when (mode ?? "manual") === "manual"
JSON output
json
json {} The output object. Values may be {{ }} expressions, e.g. { "name": "{{ $json.first }}" }.
Shown when mode === "json"
Other input fields
include
select "all" Which fields from the input to keep alongside the ones you set. Set fields always override.
allnoneselectedexcept
Fields to keep
includeFields
string Comma-separated field names/paths to keep from the input (empty = keep none of the others).
Shown when include === "selected"
Fields to drop
excludeFields
string Comma-separated field names/paths to remove from the input (empty = drop none).
Shown when include === "except"
Dot notation
dotNotation
boolean true Interpret dots in a field name as a nested path (user.name → { user: { name } }). Off = use the whole name literally.
Ignore type conversion errors
ignoreConversionErrors
boolean false If a value can't be converted to its chosen type, keep the raw value instead of failing the node.

Examples

Manual mapping with expressions

Each assignment has a name (dot-notation builds nested objects), a type, and a value that can be a {{ }} expression:

{
  "id": "shape",
  "type": "processing.set",
  "config": {
    "mode": "manual",
    "assignments": [
      { "name": "customer.name", "type": "string", "value": "{{ $json.body.results[0].name.first }}" },
      { "name": "total",         "type": "number", "value": "{{ $json.total * 2 }}" },
      { "name": "processedAt",   "type": "string", "value": "{{ $now }}" }
    ],
    "include": "none",
    "dotNotation": true
  }
}

include controls what happens to the other input fields: keep all, keep none (only your set fields), keep selected, or keep all except listed ones.

JSON mode — emit the whole object

{
  "mode": "json",
  "json": { "name": "{{ $json.first }} {{ $json.last }}", "source": "flowdrome" }
}

Tips

  • Expressions descend into JSON-in-a-string. {{ $json.body.results[0].name }} works even when body is a JSON string (an HTTP response) — the expression engine parses it on the way in.
  • Per-item by nature: over a list input, assignments apply to each item.
  • ignoreConversionErrors keeps the raw value instead of failing when, say, "abc" won’t become a number.
  • Set is the n8n Edit Fields (Set) equivalent at full parity — if you’re arriving from n8n, your habits transfer.

This page is generated from the node registry by gen-node-docs.mjs on every site build — ports, properties, defaults and visibility rules cannot drift from the code. The examples above are hand-authored and merged in.