The short version
Make's help center defines the Iterator as a module that converts an array into a series of bundles, with each array item output as a separate bundle [1]. An aggregator does the reverse: it accumulates the bundles it receives during the source module's run and outputs a single bundle containing an array with one item per accumulated bundle [2].
That pair solves a common small-business job: an invoice arrives with several line items, you need to do something per line (log it, look up a product, check stock), then send one summary. Getting the shape right also decides the cost, because Make counts each module run per bundle [3].
The example invoice
Assume an invoice arrives by webhook from your billing tool with a line_items array. All values are invented for the example.
| Line | Description | Qty | Unit price | Line total |
|---|---|---|---|---|
| 1 | Website audit | 1 | $400 | $400 |
| 2 | Copy edits (hours) | 3 | $60 | $180 |
| 3 | Stock photos | 4 | $15 | $60 |
| 4 | Hosting setup | 1 | $120 | $120 |
| 5 | Rush fee | 1 | $75 | $75 |
Build it step by step
- Step 1, trigger: a Custom webhook receives the invoice. One run per invoice.
- Step 2, Iterator: set the Array field to line_items [1]. If the mapping panel only shows Total number of bundles and Bundle order position, run the scenario once with a sample invoice so Make learns the item structure [1].
- Step 3, per-line work: for example, Google Sheets Add a Row to log each line with the invoice number, or a lookup of the product code. Every module here runs once per line item.
- Step 4, Array aggregator: set Source module to the Iterator [2]. In Aggregated fields, include description, quantity and line total, plus anything later modules need [2].
- Step 5, one action: send one email or Slack message listing all lines, or write all lines at once with Google Sheets Bulk Add Rows (Advanced), which appends multiple rows [4].
- Step 6, empty invoices: decide whether an invoice with no lines should stop. Make's Stop processing after an empty aggregation option stops the flow when no bundles arrive [2].
Credits per bundle: two designs compared
Make's operations page says modules process each bundle separately and gives worked examples: 5 emails sent is 5 operations, and in a Google Forms scenario a trigger returning 10 bundles used 1 operation while each of three later modules used 10, for 31 in total [3]. It also shows a Text aggregator combining 10 contacts into one email, cutting a run from 11 operations to 3 [3]. Make's billing FAQ says most actions use 1 credit and routers do not consume credits [5].
Applying those rules to the 5-line invoice gives the estimates below. They assume 1 credit per module run; check one live run before relying on them.
| Module | Design A: write each line | Design B: aggregate, then bulk write |
|---|---|---|
| Webhook trigger | 1 | 1 |
| Iterator (receives 1 invoice) | 1 | 1 |
| Google Sheets Add a Row (per line) | 5 | Not used |
| Array aggregator | 1 | 1 |
| Google Sheets Bulk Add Rows | Not used | 1 |
| Email summary | 1 | 1 |
| Total per 5-line invoice | 9 | 5 |
| Per 12-line invoice | 16 | 5 |
| 300 invoices/month averaging 5 lines | 2,700 | 1,500 |
When you cannot avoid per-line modules
Design B only works when the next step accepts a list. If you need to look up each product in an inventory app that only accepts one item per call, every line costs a module run, and the honest saving is to remove lines you do not need: filter out zero-value lines or fees before the lookup. Filters sit between modules; budget for the modules a bundle actually reaches.
When one trigger run returns several invoices, the Iterator runs once per invoice and the aggregator, with the Iterator as source, outputs one bundle per invoice [2]. If you instead want one daily total across invoices, use Group by in the aggregator, which emits one bundle per distinct value, such as customer ID [2].
Mistakes that break the totals
- Wrong source module: aggregating from the trigger instead of the Iterator can merge lines from separate invoices.
- Lost context: invoice number and customer are unavailable after the aggregator unless included in Aggregated fields [2].
- Silent empties: without the stop option, Make says the aggregator outputs its result even when no bundles reached it, so an empty invoice may send a blank summary [2].
- Hidden multipliers: a search module inside the loop that returns several results multiplies every later module again [3].
- Retries: a failed run that is retried repeats the per-line modules; add an error handler route and check what already succeeded.
Watch demos / Official walkthroughs
See how the tools work.
Videos load from YouTube only when you press play. These are provider videos, not our own product tests.

Make / Official video
Make—Building Your First Automated Workflow from Scratch
What to look for: Follow how modules connect and how data moves through the first workflow.
Watch on YouTubeQuestions before you decide
Does the Iterator use a credit for every item?
By Make's operations rule, a module runs once per bundle it receives. The Iterator receives one invoice bundle, so it runs once; the items it outputs are what make later modules run once each. Confirm with the run history of your scenario.
Why can't I see invoice fields after the aggregator?
Make's aggregator documentation says items from bundles upstream of the aggregator are not accessible to modules after it unless you include them in the aggregator's setup, such as the Aggregated fields setting. Add the invoice number and customer to the aggregated fields or map them from a module before the iterator.
What does the Source module setting do?
It tells the aggregator where aggregation starts, usually the Iterator. Make says the aggregator accumulates all bundles it receives during the source module's run and then outputs one bundle. Picking the wrong source module merges line items from different invoices.
Sources & verification
Product details and prices can change. Check the linked provider before buying.
- Make Help Center: Iterator Accessed 29 Oct 2026
- Make Help Center: Aggregator Accessed 29 Oct 2026
- Make Help Center: Operations Accessed 29 Oct 2026
- Make integrations: Google Sheets modules Accessed 29 Oct 2026
- Make pricing and billing FAQ Accessed 29 Oct 2026
Sources link directly to providers. Product buttons may use separately labeled affiliate links. Read our disclosure.
