Reference · Tools

Item Lists

Sort, limit, deduplicate, split, concatenate, and summarize item arrays.

Action Core Nodes v1

Item Lists performs bulk operations across every item in a branch: sorting, limiting, removing duplicates, splitting a nested array out into separate items, concatenating, and summarizing. It needs no credentials. A typical build is deduplicating a merged list of leads by email before anything downstream contacts them.

Node type
Action
Parameters
19
Outputs
Output, Error
Credentials
None required

Item Lists

Sort, limit, deduplicate, split, concatenate, and summarize items

Overview

The Item Lists tool provides 6 bulk operations on item collections: sort (simple or random), limit (first/last N), removeDuplicates (by all/selected/excluded fields), splitOutItems (explode arrays into separate items), concatenateItems (merge fields from all items into one), and summarize (aggregate with count, sum, min, max, average, concatenate, append, countUnique — grouped by split-by fields). These are bulk operations that process ALL input items at once.

Category: Core Nodes
Tool Name: item_lists
Version: 1

Appearance: Icon: lucide-List | Color: #ff6d5a

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool does not require any credentials.

Operations

OperationValueDescription
Concatenate ItemsconcatenateItemsMerge fields from all items into one
LimitlimitRemove items if there are too many
Remove DuplicatesremoveDuplicatesRemove duplicate items
SortsortChange the order of items
Split Out ItemssplitOutItemsTurn array into separate items
SummarizesummarizeAggregate items (pivot table)

Parameters

Concatenate Items (concatenateItems)

ParameterTypeRequiredDefaultDescription
AggregateoptionsNoaggregateIndividualFieldsHow the items are merged together.
Options: aggregateIndividualFields (collect named fields into arrays), aggregateAllItemData (put every input item into one field)
Fields To AggregatefixedCollectionNo{}The fields to collect from every item, and how to name them on the output. (shown when Aggregate is aggregateIndividualFields)
— Input Field NamestringNoName of the field to read from each item. Supports dot-notation for nested fields.
— Rename FieldbooleanNofalseGive the collected values a different name on the output item.
— Output Field NamestringNoThe name to write the collected values under. (shown when Rename Field is true)
— Merge ListsbooleanNofalseIf the field is an array, merge into the aggregate instead of nesting.
Destination Field NamestringNodataName of the field that receives the full list of input items. (shown when Aggregate is aggregateAllItemData)

Limit (limit)

ParameterTypeRequiredDefaultDescription
Max ItemsnumberNo10The maximum number of items to keep.
KeepoptionsNofirstItemsWhich items to keep when there are more than Max Items.
Options: firstItems, lastItems

Remove Duplicates (removeDuplicates)

ParameterTypeRequiredDefaultDescription
CompareoptionsNoallFieldsHow two items are compared to decide whether they are duplicates.
Options: allFields, allFieldsExcept, selectedFields
Fields To ComparestringNoComma-separated list of the only fields to compare. (shown when Compare is selectedFields)
Fields To ExcludestringNoComma-separated list of fields to ignore when comparing. (shown when Compare is allFieldsExcept)

Sort (sort)

ParameterTypeRequiredDefaultDescription
Sort TypeoptionsNosimpleSort by field values, or shuffle the items into a random order.
Options: simple, random
Sort FieldsfixedCollectionNo{}The fields to sort by, applied in the order you list them. (shown when Sort Type is simple)
— Field NamestringNoName of the field to sort on. Supports dot-notation for nested fields.
— OrderoptionsNoascendingSort direction for this field.
Options: ascending, descending

Split Out Items (splitOutItems)

ParameterTypeRequiredDefaultDescription
Field To Split OutstringYesThe field holding the array (or object) to turn into separate items.
IncludeoptionsNonoOtherFieldsWhich of the item’s other fields to carry onto each new item.
Options: noOtherFields, allOtherFields, selectedOtherFields
Fields To IncludestringNoComma-separated list of the other fields to carry over. (shown when Include is selectedOtherFields)

Summarize (summarize)

ParameterTypeRequiredDefaultDescription
Fields to SummarizefixedCollectionNo{}The aggregations to compute for each group.
— AggregationoptionsNocountThe aggregation to apply to the field.
Options: append, average, concatenate, count, countUnique, max, min, sum
— FieldstringNoField to aggregate (leave empty for count).
Fields to Split BystringNoGroup items by these fields before summarizing.

All Operations

ParameterTypeRequiredDefaultDescription
OptionscollectionNo{}Extra settings; which ones apply depends on the operation.
— Disable Dot NotationbooleanNofalseIf true, field names with dots are treated literally.
— Remove Other FieldsbooleanNofalseWhen deduplicating by selected fields, only keep those fields. (shown when Operation is removeDuplicates and Compare is selectedFields)
— Destination Field NamestringNoWrite each split-out element under this name instead of the original field name. (shown when Operation is splitOutItems)
— Put Output in FieldstringNoWrite the merged list under this name instead of Destination Field Name. (shown when Operation is concatenateItems)
— Output FormatoptionsNoseparateItemsWhether each group becomes its own item or all groups land on one item. (shown when Operation is summarize)
Options: separateItems, singleItem
— SeparatorstringNo,Separator for concatenate aggregation. (shown when Operation is summarize)
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

This node is a bulk node: it reads every input item, applies the operation to the whole collection in memory, and writes a fresh set of output items. Output items carry JSON only — binary data is not forwarded, so attach files after this node, not before it.

How many items come out depends on the operation:

OperationOutput items
sortThe same items, reordered. Count is unchanged.
limitAt most Max Items — the first or last of them, per Keep.
removeDuplicatesOne item per distinct value. Duplicates after the first are dropped.
splitOutItemsOne item per element of the split field, so one input item can become many. An item whose field is neither an array nor an object passes through untouched.
concatenateItemsExactly one item for the whole run.
summarizeOne item per group with separateItems, or a single item with singleItem.

Field naming, per operation:

  • concatenateItems with aggregateIndividualFields — the single output item has one field per entry in Fields To Aggregate, each holding an array of the values found across all items. The field keeps its input name unless Rename Field is on, in which case Output Field Name is used. With Merge Lists on, an array value is spread into the aggregate rather than nested. If Fields To Aggregate is empty the items pass through unchanged.
  • concatenateItems with aggregateAllItemData — the single output item is { "<Destination Field Name>": [ …every input item… ] }, or the name from Put Output in Field when that is set.
  • splitOutItems — each element is written to Destination Field Name when set, otherwise to the name of Field To Split Out. With allOtherFields the rest of the item is copied alongside it; with selectedOtherFields only Fields To Include are copied; with noOtherFields the element is the only field.
  • summarize — each output item carries the Fields to Split By values plus one field per aggregation, named <aggregation>_<field> (for example sum_revenue, average_score). An aggregation with no Field is named after the aggregation alone (count). min, max, sum and average consider numeric values only and return null when a group has none. With singleItem the whole set is wrapped as { "results": [ … ] } on one item.
  • removeDuplicates — the surviving item is the original item, unless Remove Other Fields is on with selectedFields, in which case only the compared fields are kept.

Usage Examples

  • Sort items by price descending
  • Keep only first 10 items
  • Remove duplicate contacts
  • Split array field into separate items
  • Summarize sales by region

Example Configuration

Sort by two fields, most important first:

{
  "type": "item_lists",
  "parameters": {
    "operation": "sort",
    "sortType": "simple",
    "sortFieldsUi": {
      "sortField": [
        {
          "fieldName": "priority",
          "order": "descending"
        },
        {
          "fieldName": "name",
          "order": "ascending"
        }
      ]
    }
  }
}

Keep only the first five items:

{
  "type": "item_lists",
  "parameters": {
    "operation": "limit",
    "maxItems": 5,
    "keep": "firstItems"
  }
}

Deduplicate on two fields only:

{
  "type": "item_lists",
  "parameters": {
    "operation": "removeDuplicates",
    "compare": "selectedFields",
    "fieldsToCompare": "email,phone"
  }
}

Explode an array field, carrying two other fields onto each new item:

{
  "type": "item_lists",
  "parameters": {
    "operation": "splitOutItems",
    "fieldToSplitOut": "skills",
    "include": "selectedOtherFields",
    "fieldsToInclude": "name,department"
  }
}

Collect one field from every item into a single list:

{
  "type": "item_lists",
  "parameters": {
    "operation": "concatenateItems",
    "aggregate": "aggregateIndividualFields",
    "fieldsToAggregate": {
      "fieldToAggregate": [
        {
          "fieldToAggregate": "tags",
          "renameField": true,
          "outputFieldName": "allTags",
          "mergeLists": true
        }
      ]
    }
  }
}

Put every input item into one field:

{
  "type": "item_lists",
  "parameters": {
    "operation": "concatenateItems",
    "aggregate": "aggregateAllItemData",
    "destinationFieldName": "allData"
  }
}

Build a pivot table grouped by two fields:

{
  "type": "item_lists",
  "parameters": {
    "operation": "summarize",
    "fieldsToSplitBy": "department,status",
    "fieldsToSummarize": {
      "values": [
        {
          "aggregation": "count",
          "field": "employeeId"
        },
        {
          "aggregation": "sum",
          "field": "salary"
        }
      ]
    }
  }
}

Deduplicate while ignoring volatile fields:

{
  "type": "item_lists",
  "parameters": {
    "operation": "removeDuplicates",
    "compare": "allFieldsExcept",
    "fieldsToExclude": "id,createdAt",
    "options": {
      "disableDotNotation": false
    }
  }
}

Report on revenue by region and quarter:

{
  "type": "item_lists",
  "parameters": {
    "operation": "summarize",
    "fieldsToSplitBy": "region,quarter",
    "fieldsToSummarize": {
      "values": [
        {
          "aggregation": "count",
          "field": "orderId"
        },
        {
          "aggregation": "sum",
          "field": "revenue"
        },
        {
          "aggregation": "average",
          "field": "customerSatisfaction"
        }
      ]
    }
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Sort, limit, deduplicate, split, concatenate, and summarize item arrays — bulk operations on all items at once.

Behavior notes

  • This is a whole-branch operation. The node collects every item that reaches it before it does anything, so it cannot start producing output until the upstream branch has finished. Field names are read once for the node run, not per item.
  • Field names are literal, not expressions. Fields To Compare, Field To Split Out, Fields to Split By and the rest take plain field names — with dot-notation for nested paths — rather than {{ … }} expressions.
  • Dot-notation is on by default. A field whose name genuinely contains a dot is only reachable with Options → Disable Dot Notation turned on, which then applies to every field name in the node.
  • Deduplication compares values, not identity. Two items match when the compared portion is deeply equal, so field order does not matter but a differing timestamp or id does — use allFieldsExcept to ignore those.
  • Attach files after this node. Binary data does not survive the operation, so put Item Lists before the node that fetches or builds the file, not after it.

Frequently asked questions

Why does nothing emit until the branch finishes?

This is a whole-branch operation — the node collects every item that reaches it before doing anything. That is inherent to sorting and deduplicating, but it does mean it cannot stream partial results.

Can I use expressions in the field names?

No. Fields To Compare, Field To Split Out, Fields to Split By and the rest take literal field names, with dot-notation for nested paths, rather than `{{ }}` expressions.

Are field names read per item?

No, once for the node run. A batch whose items have differing shapes is handled against the field names configured, not re-inspected per item.

How do I turn one item's array into many items?

Use the split-out operation with Field To Split Out pointing at the array. Each element becomes its own item for the nodes that follow.

Build with the Item Lists 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.