"Apply to each" in Power Automate: understanding, controlling, and avoiding the loop

"Auf alle anwenden" processes lists item by item and often appears unintentionally. How the loop works, why it slows things down, and when it can be removed.

"Apply to each", in the German interface "Auf alle anwenden", is the loop of Power Automate: it runs the contained steps for each element of a list individually, for every email, every row, every attachment. Two peculiarities make it the most discussed building block of the platform: it often appears automatically, without having been inserted, and it is the most common reason why flows become slow. Both have the same cause, and both can be controlled. As of: July 2026.

Why does "Apply to each" appear by itself?

Power Automate inserts the loop automatically as soon as you use dynamic content that is a list, even if you only expect a single element. The classic case: a SharePoint query technically always delivers a list, even if only one match exists, and the designer immediately wraps the following step in an "Auf alle anwenden". Anyone who wants to address the single element specifically avoids the loop with a formula such as first over the query result, or filters the list beforehand down to exactly one match. The loop is therefore not an error, but the honest answer of the system to a list, just not always the intended one.

What makes the loop slow and what helps

  • By default it runs sequentially: one element after another. In the loop's settings, concurrency can be activated, up to 50 simultaneous runs, which drastically shortens long runs. Caution only when order matters or a variable is being written, that does not work well with concurrency.
  • Every step in the loop counts as an action: with 500 elements and 4 steps that is 2,000 actions against the daily quota of the license. Lean loops save real money.
  • By default only the first elements arrive: many connectors deliver only part of the list without pagination, often 100 entries. Anyone processing more activates pagination in the settings of the query step and sets the limit accordingly.

The high art: avoiding the loop entirely

The fastest loops are the ones that never run. Three patterns replace "Apply to each" in many cases: "Filter array" reduces a list to the matching elements without a loop, "Select" transforms all elements in a single step, and formulas such as join or concat build a text directly from a list, for example for a collective email. A flow that first filters, then transforms with Select, and sends the result in one step, accomplishes in three actions what the loop variant needs hundreds for. Such patterns are the difference between a tinkered flow and one that also runs through with 5,000 records, and this exact kind of craft is what we teach in our Power Automate consulting. Our article on Compose.

Frequently asked questions about "Apply to each"

How do I get a value out of the loop?

Filling a variable inside the loop is the usual way: initialize it before the loop, append to it or increment it inside, continue using it after the loop. With loops running in parallel, however, this is risky, because simultaneous write accesses can overtake each other, so it is better to work sequentially or to generate the result using "Select" and join entirely without a variable.

Why does my loop process only 100 elements?

Because the upstream query step, without pagination activated, delivers only the first page of results, for many connectors that is 100 entries. The solution does not lie in the loop, but in the query step: activate pagination in its settings and set the threshold to the expected quantity.

Can I nest loops inside each other?

Yes, "Apply to each" can be nested, for example for orders with line items. However, the number of actions then multiplies, and readability suffers quickly. It has proven effective to outsource the inner processing into a separate child flow, or to reshape the data structure beforehand using "Select" so that a single level is sufficient.

Simon Glowik, founder of NordFlux
About the author

Founder of NordFlux. Spent four years automating processes at enterprise scale at Dräger, and now brings that depth to the mid-market — pragmatic and with full data sovereignty.

Certifications

  • Microsoft certified — PL-900 and AZ-900
  • UiPath certified — Automation Developer Associate
  • UiPath zertifiziert — Automation Developer Associate
All articles
Read more

Related guides

Free initial analysis

Apply to each slowing your flow: avoid it or tame it?

The loop that appears automatically looks harmless, until it multiplies a flow's runtime with large data volumes and blows past action limits. NordFlux optimises existing flows with Filter Array, Select and targeted parallelism so Apply to each doesn't become a silent performance killer. In an initial conversation, we analyse your slowest flows.

Power Automate Consulting

  • A performance analysis of your existing Apply to each loops
  • A rebuild using Filter Array and Select wherever the loop can be avoided
  • Protection against action limits as data volumes grow
Apply to each in Power Automate explained (German)