

Why this exists: Flows fail—sometimes temporarily. Retries and error paths keep them from dying silently and give you visibility when something goes wrong.
For you if: You build Power Automate flows that need to handle 429, 500, timeouts, or intermittent connector failures gracefully.
Ground truth: Built from Employ robust error handling, Logic Apps error handling, and connector retry policies. Pairs with the Flow Troubleshooting Checklist and Error Codes Reference.
Retry policies automatically retry actions when they fail with timeouts or certain error responses (e.g., 408, 429, 5xx). Configure per action under Settings (⋯) → Retry policy.
| Policy | Behavior | When to use |
|---|---|---|
| Default | Exponential backoff: up to 4 retries, intervals between ~5–45 seconds | Most connector actions. Good for 429 and temporary 5xx. |
| Exponential Interval | Custom count and min/max interval. Intervals grow exponentially. | 429-throttled connectors. Give the service time to cool down. |
| Fixed Interval | Same delay between each retry (e.g., 30 seconds). | When you want predictable retry timing. |
| None | No retries. Fails immediately on error. | When retrying would make things worse (e.g., duplicate sends). |
Tip: For 429 (throttling), use Exponential Interval with a higher count (e.g., 5) and longer max interval. Respect the Retry-After header when connectors return it.
Run After controls when the next action runs based on the previous action's outcome. Default is "is successful." Use "has failed," "is skipped," or "has timed out" to create error branches.
| Option | Triggers when | Use case |
|---|---|---|
| is successful | Previous action succeeded | Default happy path |
| has failed | Previous action failed | Send alert, log error, notify owner |
| is skipped | Previous action was skipped (e.g., condition branch) | Handle alternate paths |
| has timed out | Previous action timed out | Separate timeout handling from other failures |
Pattern: Attach a "Send an email" or "Post to Teams" action with Run After = "has failed" or "has timed out" on your critical steps. Include workflow().run.name or run URL so you can jump straight to the failed run.
Wrap multiple actions in a Scope action. If any action inside fails, the Scope fails. Use Run After on the Scope to route to a single error handler instead of branching every step.
For each loops run in parallel by default. When each iteration hits the same connector (e.g., SharePoint), you can blow through rate limits fast.
result('ScopeName') or body('FailedAction'), and a link to the run (Power Automate run URL with workflow().run.id).failed() or equals(result('ScopeName'), 'Failed') if you need to branch on specific failure types.Part of the Quick Reference Kit from elijah.ai. Built for people who build resilient Power Automate flows. Pairs with the Troubleshooting Checklist and Error Codes Reference. All content pulls from Microsoft Learn.