The “Action failed” error in Power Automate means that one of the actions in your flow did not complete successfully, often without a detailed error message. This can be frustrating, but the issue usually falls into one of these categories:
- Incorrect or Missing Data (e.g., empty fields, wrong formats)
- Connection or Authentication Issues (e.g., expired credentials)
- Timeout or Service Limitations (e.g., API call took too long)
- Incorrect Expression Syntax (e.g., invalid formula in dynamic content)
This guide will walk you through step-by-step solutions to identify and fix the issue.
Step 1: Check Flow Run History for Errors
- Go to Power Automate → My flows.
- Find the flow that failed and click on Run history.
- Look for red X icons (failed actions) and click on them.
- Expand the action to see if any hidden error messages exist.
- If there’s an error message, take note of the error code (e.g., 400, 403, 500).
- If no specific error message appears, continue troubleshooting using the steps below.
Step 2: Check Action Inputs & Outputs
- Expand the failed action in the run history.
- Click on Inputs to see what data was passed into the action.
- Click on Outputs (if available) to check the response.
Common Issues in Inputs:
✅ Empty or incorrect data – The action may fail if required fields are missing.
✅ Wrong data format – Ensure the input matches what the action expects (e.g., dates, numbers).
✅ Incorrect dynamic content reference – Some fields may return “null” values, causing failures.
Solution:
- Add a Condition or Null Check before the action to validate inputs.
- Use default values for optional fields to prevent empty submissions.
- Test using hardcoded values first to ensure the action works.
Step 3: Check Connections & Authentication
- Go to Power Automate → Data → Connections.
- Look for any connections marked as “Needs attention”.
- Click on them and re-authenticate if necessary.
Common Connection Errors & Fixes:
Error Code | Cause | Fix |
---|---|---|
401 (Unauthorized) | Expired or invalid credentials | Reconnect the service |
403 (Forbidden) | Missing permissions to access data | Ensure user has correct access |
429 (Too Many Requests) | API rate limit exceeded | Wait before retrying or reduce API calls |
502/504 (Gateway Timeout) | Service is slow or unavailable | Retry later or optimize request |
Step 4: Verify Expression Syntax
If the action uses expressions (e.g., concat()
, if()
, length()
), check for:
✅ Typos or incorrect syntax
✅ Using null
values in expressions (e.g., length(null)
causes failure)
✅ Referencing missing dynamic content
Solution:
- Wrap expressions in error-handling functions e.g.:
if(empty(triggerBody()?['FieldName']), 'Default Value', triggerBody()?['FieldName'])
- Use “Configure Run After” settings to handle failures gracefully.
Step 5: Check for Service Limits & Timeout Issues
1. API Rate Limits
Some services (e.g., SharePoint, Dataverse, Outlook) have rate limits.
- If you get 429 (Too Many Requests), add a delay between actions.
- If your action makes multiple calls, consider batch processing.
2. Long Execution Times
- If a flow takes too long, it may timeout.
- Optimize performance by filtering data early instead of processing large sets.
Step 6: Test the Flow in Isolation
- Create a duplicate of the flow and remove unrelated actions.
- Test each step manually with static values.
- If the isolated test works, the issue is likely with a dependent action.
Step 7: Enable Debugging & Notifications
- Add “Scope” actions to group steps and isolate failures.
- Use “Terminate” actions to capture errors in logs.
- Set up email notifications when flows fail.