Skip to main content
Buckets a list by a key computed from each item — one group per distinct key. The counterpart to Flow Each: group first, then loop the groups. Use it when a flat list carries a repeating identifier and you need one downstream record per identifier — expense rows sharing a report reference, time reports sharing an employee, invoice rows sharing a cost centre.

Configuration

  • Source — where the collection lives (usually an Assign holding a list). Anything that isn’t a list is treated as a single item, and an empty or missing source produces no groups.
  • Key source — how to compute each item’s group key. Resolved against a single binding named item holding the current element — use Extract with key item and a path, or Dated property with key item for dated-property fields.
  • Value source — optional; what to put in each group’s items. Leave it blank to keep the whole item. Set it when the list holds wrappers and you want the inner record: group a list of {key, row} pairs by key and pull row out in the same step.
  • Output assign — where the group list is written. Each group is a map with key, items and count.
  • On nil keyGroup (default) keeps items with no key in their own bucket; Drop silently discards them; Halt flow stops the run. Prefer Drop or Halt flow when a missing key means the item can’t produce a valid record.

Tips

  • Point a Flow Each at the output, then use Extract with path items to feed an inner Flow Each — the outer loop walks groups, the inner walks that group’s rows.
  • Group headers live on the first item: Extract with path items / 0 / … reaches them without an extra node.
  • Groups come out in first-appearance order, so sort the source first if you need a specific ordering.

Ports