If your Power Automate flow is only processing 100 items and quietly stopping, you’ve hit the default Get Items limit. It’s one of the most common mistakes I see, and it doesn’t throw an error, so people don’t even realize it’s happening.
In this tutorial, I’ll show you exactly how to loop through all SharePoint list items in Power Automate. I’ll cover two real-world examples — looping through all items to update a status field, and looping through filtered items to send event reminder emails. I’ll also show you how to handle lists with more than 100 items, more than 5,000 items, and how to avoid some nasty mistakes that can silently break your flow.
Quick Pre-Flight Checklist
Before building this flow, make sure you have these in place:
- Your SharePoint list is created with all the columns you need
- You have Edit permissions on the SharePoint list
- If your list has more than 100 items, you must enable Pagination (I’ll show you exactly how)
- The Status column is set as a Choice type, not a single line of text
- Any column you plan to filter on is indexed in the list settings (critical if your list has more than 5,000 items)
- Concurrency Control in Apply to Each is OFF if your loop is updating items (more on why below)
The 100-Item Trap (Read This First)
This is something nobody tells beginners, and it causes a lot of confusion.
When you add a Get Items action in Power Automate, it returns 100 items by default. That’s it. If your list has 500 items, your loop will only process the first 100 — no warning, no error, just silent data gaps.
Here’s how to fix it based on your list size:
| List Size | What to Do |
|---|---|
| Up to 100 items | Default settings are fine — no changes needed |
| 100 to 5,000 items | Enable Pagination in Get Items settings, set Threshold to 5000 |
| 5,000 to 100,000 items | Set Top Count to 5000 AND enable Pagination with Threshold 100000 |
To enable pagination, click the three dots (⋯) on the Get Items action → Settings → toggle Pagination to ON → enter your threshold value.
Which Approach Should You Use? (Decision Guide)
Here’s a simple way to decide how to set up your loop:
How many items are in your list?
│
├── Less than 100
│ └── Default Get Items — no changes needed
│
├── 100 to 5,000
│ └── Enable Pagination, Threshold = 5000
│
└── More than 5,000
├── Set Top Count = 5000
├── Enable Pagination, Threshold = 100000
└── Make sure the column you filter on is INDEXED in SharePoint
Loop Through SharePoint List Items in Power Automate
Let’s discuss how to loop through SharePoint list items in Power Automate by taking some real examples.
Example 1: Loop Through All Items to Update Product Status in Power Automate
The Scenario
I have a SharePoint list called Inventory Data that tracks product quantities. Every Monday, I want a flow to automatically loop through all products and update the Status column based on how many units are left:
- Total Quantity ≥ 10 → Status = In Stock
- Total Quantity between 1 and 9 → Status = Low Stock (send email alert)
- Total Quantity = 0 → Status = Out of Stock (send email alert)
SharePoint List Setup
Here’s the list structure I’m working with:
| Column Name | Data Type |
|---|---|
| Department (Title) | Single line of text |
| Product Name | Single line of text |
| Price | Single line of text |
| Stock | Number |
| Status | Choice (In Stock, Low Stock, Out of Stock) |

Step-by-Step Flow
Step 1: Create a Scheduled Cloud Flow
- Go to Power Automate → click + Create → select Scheduled Cloud Flow
- Give your flow a name, set the start date and time
- Set Repeat every 1 Week on Monday
- Click Create

Step 2: Add Get Items Action
- Click + New step → search for and select Get items
- Set Site Address to your SharePoint site
- Set List Name to Inventory Data

⚠️ Important: If your list has more than 100 products, stop here and enable Pagination. Click the three dots on Get Items → Settings → Pagination ON → Threshold = 5000. If you skip this, your flow will only update the first 100 products.
Step 3: Add the Status Condition (This Auto-Creates Apply to Each)
When you reference a field from Get Items inside a Condition, Power Automate automatically wraps everything in an Apply to Each loop. This is the loop that processes each item one by one.
- Click + New step → select Condition
- Left value: Select Stock from dynamic content (Apply to Each will appear automatically)
- Operator: is greater than or equal to
- Right value: 100

Step 4: Handle the “In Stock” Branch (If Yes)
In the If Yes section:
- Click Add an action → select Update item
- Site Address: your SharePoint site
- List Name: Inventory Data
- Id: select ID from dynamic content
- Title: select Title from dynamic content
- Status: select In Stock from the dropdown

Step 5: Handle Low Stock and Out of Stock (If No)
In the If No section, add another Condition:
- Left value: Stock
- Operator: is less than
- Right value:
100 - Click + Add → Add row → select AND
- Left value: Stock
- Operator: is greater than
- Right value:
1
If Yes (Low Stock — quantity between 2 and 99):
- Add Update item → set Status to Low Stock
- Add Send an email (V2) → fill in the To, Subject, and Body to alert the sales team
If No (Out of Stock — quantity is 0 or 1):
- Add Update item → set Status to Out of Stock
- Add Send an email (V2) → alert the sales team

Step 6: Test the Flow
- Click the Test icon (top right) → select Manually → click Test
- Confirm the connection and click Run flow → click Done
- Check your SharePoint list — the Status column should now be updated for every product

Example 2: Loop Through Filtered Items for Event Reminders in Power Automate
The Scenario
A company tracks all its events (webinars, workshops, conferences) in a SharePoint list. The organizers keep missing upcoming events, so they want automatic email reminders — one on the day of the event and one the day before.
This flow runs every day, filters only the relevant events (today or tomorrow), and loops through them to send emails.
SharePoint List Setup
Here’s the Event list structure:
| Column Name | Data Type |
|---|---|
| Title | Single line of text |
| Organizer | Person |
| Event Date | Date and Time |
| Location | Location |
| Description | Multiple lines of text |
| Event Type | Choice |
| Event Status | Choice |

Step-by-Step Flow
Step 1: Create a Scheduled Cloud Flow
- Go to Power Automate → + Create → Scheduled Cloud Flow
- Name your flow and set start date and time
- Set Repeat every 1 Day
- Click Create

Step 2: Get Only Upcoming Events (Filtered)
Rather than pulling all events into the loop, filter at the source. This speeds up your flow and avoids unnecessary processing.
- Click + New step → select Get items
- Site Address: your SharePoint site
- List Name: Event Details
- Filter Query: paste this expression:
EventDate ge '@{formatDateTime(utcNow(),'yyyy-MM-dd')}'This pulls only events from today onward. No point looping through past events.
- Top Count: Set to 100 (or increase with Pagination if you have many upcoming events)

💡 Tip: The column name in your OData filter must match exactly what’s in SharePoint — no spaces, use the internal column name if needed.
Step 3: Extract the Event Date Using Compose
- Click + New step → select Compose
- Input: select EventDate from dynamic content
This adds Apply to Each automatically. The Compose action stores the date of each event so we can compare it cleanly in the next step.

Step 4: Check If the Event Is Today
- Click Add an action → select Condition
- Left value: use the expression: formatDateTime(outputs(‘Compose’),’yyyy-MM-dd’)
- Operator: is equal to
- Right value: use the expression: formatDateTime(utcNow(),’yyyy-MM-dd’)
If Yes (event is today):
- Add Send an email (V2)
- To: select Organizer Email from dynamic content
- Subject: something like Reminder: Your event “@{items(‘For_each’)?[‘Title’]}” is TODAY
- Body: include event name, date, location, and any other useful details

Step 5: Check If the Event Is Tomorrow (If No Branch)
In the If No section, add another Condition:
- Left value: formatDateTime(outputs(‘Compose’),’yyyy-MM-dd’)
- Operator: is equal to
- Right value: formatDateTime(addDays(utcNow(),1),’yyyy-MM-dd’)
If Yes (event is tomorrow):
- Add Send an email (V2) with a subject like Reminder: Your event “@{items(‘Apply_to_each’)?[‘Title’]}” is TOMORROW

Step 6: Test the Flow
- Click Test → Manually → Test → Run flow → Done
- Check whether the organizer received the email for any events falling today or tomorrow

Troubleshooting: Common Issues and Fixes
I’ve seen these problems come up again and again. Here’s a quick reference:
| Symptom | Most Likely Cause | Fix |
|---|---|---|
| Flow only processes 100 items | Default Get Items limit | Enable Pagination, Threshold = 5000 |
| Flow runs but nothing gets updated | Wrong list name or column name | Double-check the internal column name |
| “List view threshold exceeded” error | List has 5,000+ items, no indexed column | Index the column you’re filtering on in List Settings |
| Items seem to get skipped randomly | Concurrency Control enabled during Update Item | Disable Concurrency in Apply to Each settings |
| Flow times out on large lists | No filter, processing every item | Add an OData Filter Query to Get Items |
| Emails send duplicates | Flow triggered twice | Check if the trigger fires on item modification caused by the flow itself |
The Concurrency Control Warning (Important)
Apply to Each has a Concurrency Control setting that lets you process multiple items in parallel rather than one at a time. It can make loops much faster — I’ve seen flows speed up 10–20x with it enabled.
But here’s the thing: if your loop includes an Update Item action, be careful with this setting.
Running too many parallel updates on the same SharePoint list can cause “item is locked” errors and conflicts. If your loop is updating items, keep Concurrency off or set the degree of parallelism low (I recommend 5 or less).
If your loop is only reading data or sending emails — go ahead and turn it on. It’s a big time saver for those use cases.
Handling Lists With More Than 5,000 Items in Power Autoamte
If your list is large — say, 10,000 or 50,000 items — here’s what you need to do:
- In the Get Items action, set Top Count to 5000
- Open Settings on Get Items → enable Pagination → set Threshold to 100000
- Go to your SharePoint list → List Settings → Indexed Columns → add an index on any column you use in a Filter Query
- If you’re filtering with OData, make sure the filter uses an indexed column — otherwise, SharePoint will block the query once the list exceeds 5,000 items

This setup lets Power Automate retrieve up to 100,000 items by fetching 5,000 at a time across multiple internal pages.
Frequently Asked Questions
Does Apply to Each have an item limit?
Apply to Each itself doesn’t have a hard limit, but it can only loop through what Get Items retrieves. Since Get Items maxes out at 5,000 items per call (or up to 100,000 with Pagination enabled), that’s your effective ceiling.
What is the default item limit for Get Items in Power Automate?
By default, Get Items returns only 100 items. To increase this, you need to enable Pagination in the action’s settings and optionally increase the Top Count.
What’s the difference between Top Count and Pagination?
Top Count tells Get Items how many items to return in a single call (max 5,000). Pagination tells Power Automate to keep making multiple calls until it hits the Pagination Threshold. You use both together when your list has more than 5,000 items.
Can I use Apply to Each in parallel?
Yes — go to the three dots on Apply to Each → Settings → Concurrency Control → turn it on and set a degree of parallelism. For sending emails, I’ll usually go up to 10. For updating SharePoint items, keep it low (3–5) to avoid throttling.
My OData filter query isn’t working. Why?
A few things to check: make sure the column name in your filter matches the internal column name in SharePoint (not the display name), make sure the column is indexed if your list has more than 5,000 items, and double-check the date format — Power Automate uses ISO 8601 format (yyyy-MM-ddTHH:mm:ssZ).
Will this work on SharePoint On-Premises?
The examples here use SharePoint Online. If you’re on SharePoint On-Premises, the Get Items action works similarly but the connector and some options may differ depending on your gateway setup.
Related Tutorials You Might Find Useful
- Add an Item to a SharePoint List Using Power Automate
- Power Automate Excel to PDF
- Delete All Rows From a SharePoint Online List Using Power Automate
- Remove Duplicate Items From a SharePoint List Using Power Automate
- Get More Than 100 Items Using the Get Items Action in Power Automate

After working for more than 18 years in Microsoft technologies like SharePoint, Microsoft 365, and Power Platform (Power Apps, Power Automate, and Power BI), I thought will share my SharePoint expertise knowledge with the world. Our audiences are from the United States, Canada, the United Kingdom, Australia, New Zealand, etc. For my expertise knowledge and SharePoint tutorials, Microsoft has been awarded a Microsoft SharePoint MVP (12 times). I have also worked in companies like HP, TCS, KPIT, etc.