Introduction
Microsoft Power Automate is a powerful platform for automating business processes, integrating applications, and reducing manual work. We can create simple approval flows, notifications, data migration processes, and complex enterprise-level automation.
However, while developing cloud flows, we need to understand some important Power Automate limits.
Sometimes a flow works perfectly during development but starts failing, slowing down, or timing out when it handles large amounts of production data.
In this article, we will explore 12 important Power Automate limits, understand why they matter, and learn how to design flows to avoid common production issues.
1. Actions Per Flow – 500
A single cloud flow can contain a maximum of 500 actions.
When a flow contains too many actions, it can also become difficult to maintain and edit.
Example:
Imagine an Invoice Approval flow that performs the following operations:
Get invoice details.
Validate invoice information.
Check approval levels.
Send approval notifications.
Update invoice status.
Update GL coding details.
Generate an approval report.
Send confirmation emails.
If we continue adding more actions into the same flow, it can become difficult to manage.
Solution:
Divide the business logic into reusable child flows.
For example:
Parent Flow – Invoice Approval.
Child Flow 1 – Invoice Validation.
Child Flow 2 – Approval Processing.
Child Flow 3 – Email Notification.
Child Flow 4 – Audit Logging.
This approach makes the solution easier to maintain and troubleshoot.
2. Nesting Depth – 8 Levels
Power Automate supports a maximum nesting depth of 8 levels for nested actions.
Example:
Suppose we have multiple conditions inside an Apply to each loop, followed by additional conditions and Switch actions.
As the business logic grows, the flow structure becomes difficult to understand.
Solution:
Move complex business logic into separate child flows or simplify nested conditions.
Avoid creating unnecessary nested Apply to each and Condition actions.
3. Switch Cases – 25
A Switch action supports a maximum of 25 cases.
Example:
Suppose an Invoice Approval application supports 30 different invoice categories.
Creating a separate Switch case for every category may exceed the supported limit.
Solution:
Instead of creating too many Switch cases, maintain the category information in a SharePoint configuration list.
Use Get items and Filter array to retrieve the relevant configuration.
This makes the solution data-driven and easier to update.
4. Variables Per Flow – 250
A single cloud flow supports a maximum of 250 variables.
Example:
Suppose we create separate variables for invoice number, vendor name, invoice amount, approval status, approver email, department, and other information.
As the flow grows, managing individual variables becomes difficult.
Solution:
Use an Object variable to group related information.
For example:
{
"InvoiceNumber": "INV-1001",
"VendorName": "ABC Technologies",
"InvoiceAmount": 25000,
"ApprovalStatus": "Pending",
"ApproverEmail": "[email protected]"
}
This approach helps organize related data in one variable.
5. Expression Length – 8,192 Characters
Power Automate expressions support a maximum length of 8,192 characters.
Example:
Suppose we write a complex expression containing multiple conditions, string operations, and calculations to validate invoice approval.
Maintaining a very long expression can become difficult.
Solution:
Break complex expressions into multiple Compose actions.
For example:
Compose – Get Invoice Amount.
Compose – Calculate Tax.
Compose – Calculate Total Amount.
Compose – Validate Approval Amount.
This improves readability and makes troubleshooting easier.
6. Flow Run Duration – 30 Days
A cloud flow run can execute for a maximum of 30 days.
This duration includes waiting periods, such as pending approval responses.
Example:
Suppose an invoice approval request is sent to a manager. The manager does not respond for several days.
If the approval process remains pending for 30 days, the flow run times out.
Solution:
Implement reminder notifications and escalation logic.
For long-running approval processes, consider designing a state-based workflow that saves the current approval status and resumes processing when the next response arrives.
7. Apply to Each – 100,000 Items
The maximum number of items that an Apply to each action can process is:
5,000 items for the Low performance profile.
100,000 items for other performance profiles.
Example:
Suppose we need to archive 50,000 paid invoice records from a SharePoint list.
Retrieving and processing all records without filtering can increase execution time.
Solution:
Use Filter Query in the Get items action to retrieve only the required records.
For example:
InvoiceStatus eq 'Paid'
You can also use pagination and process records in manageable batches.
8. Apply to Each Concurrency – 1 to 50
By default, Apply to each processes iterations sequentially.
Power Automate allows concurrency settings between 1 and 50.
Example:
Suppose we need to send notifications to 100 vendors.
Processing every vendor sequentially may increase execution time.
Solution:
Open Apply to each settings and enable Concurrency Control.
Set the degree of parallelism based on your requirements.
For example, configure concurrency to 10 to process multiple vendor notifications simultaneously.
Important: Be careful when updating the same SharePoint records in parallel because it can create data conflicts.
9. Do Until – 60 Default Iterations
The Do Until action has a default iteration limit of 60 and supports a maximum of 5,000 iterations.
Example:
Suppose we are checking whether an invoice approval status has changed to Approved.
We can use Do Until to check the status repeatedly.
Solution:
Configure the iteration count and timeout according to the business requirement.
Avoid unnecessary repeated checks. Use an event-based trigger whenever possible instead of continuously polling a record.
10. HTTP Request Timeout – 120 Seconds
Synchronous HTTP requests have a maximum timeout of 120 seconds.
Example:
Suppose a flow calls an external API to process a large document. The API takes more than two minutes to return a response.
The synchronous request may time out.
Solution:
Use an asynchronous processing pattern.
For example:
Send an HTTP request to start processing.
Receive a request ID.
Use a separate flow or polling mechanism to check processing status.
Continue when the operation is completed.
This avoids depending on one long-running synchronous request.
11. Message Size – 100 MB
The standard message size limit is 100 MB.
Example:
Suppose a vendor uploads a large proposal document containing multiple attachments.
Sending the complete file content through several actions can cause message-size errors.
Solution:
Use chunking where the connector and action support it.
For supported actions, enable chunking in the action's content transfer settings.
You can also store documents in SharePoint or OneDrive and pass file references instead of repeatedly transferring the entire file.
12. Flows Turned Off – 14 / 90 Days
Power Automate has automatic flow suspension rules.
Two important scenarios are:
14 days: A cloud flow that continuously fails can be turned off.
90 days: A cloud flow without trigger activity might be turned off, subject to licensing exceptions.
Example:
Suppose an Invoice Notification flow continuously fails because of an invalid SharePoint connection.
If the failure continues, Power Automate can automatically turn off the flow.
Solution:
Monitor flow run history.
Configure failure notifications.
Validate connections.
Review failed actions.
Check inactive flows periodically.
Do not wait until production users report that automation has stopped working.
Conclusion
Understanding Power Automate limits is important when developing reliable business automation solutions.
A flow that works with 10 records during development might behave differently when processing thousands of records in production.
By using child flows, filtering data, managing concurrency, handling errors, and monitoring executions, we can build scalable and maintainable Power Automate solutions.
Remember: Good flow design is not just about making automation work. It is about making automation reliable, scalable, and easy to maintain.
Join the conversation! Your thoughts help the community grow.