← All articles
ENGINEJul 6, 2026 · 5 min

Batch vs Bundle: the execution model most tools get wrong

n8n runs downstream once with the whole array. Make runs it once per item. OpFlow does both — set per bot, override per node.

When a step returns a list — ten leads, fifty rows, a page of emails — the engine has to decide what "downstream" means. There are two honest answers, and most tools only give you one.

Batch: once, with the whole array

In batch mode the downstream node runs a single time and receives the entire list. This is what you want for rollups, digests, and bulk writes — compute a summary, post one Slack message, write fifty rows in a single API call. It's the n8n default, and it's efficient.

Bundle: once per item

In bundle mode the downstream node runs once for each item in the list, with that item's data. This is what you want for per-lead texts, per-row updates, per-invoice reminders — anything where each item needs its own decision, its own branch, its own side effect. It's the Make default, and it's expressive.

Batch is for the summary. Bundle is for the thousand individual actions. Real operations need both — often in the same bot.

OpFlow does both

You set the execution semantic per bot, then override it per node when a single step needs the other behavior. Read fifty rows as a batch, fan out to bundle for the per-row text, then collapse back to batch for the summary email — one bot, no glue, no second tool.

  • Set batch or bundle as the bot default.
  • Override on any node that needs the other mode.
  • Loops make the fan-out explicit when you want to see it on the canvas.

Picking one model and calling it the "right" one is how tools end up fighting their users. The right model is the one this step needs.

BUILD IT ON OPFLOW
Full engine, free to start, no credit card.
Start free