Power Automate

Configure Run After = try/catch for flows

Configure Run After gives Power Automate flows a practical try/catch pattern.

Click image to enlarge

Did you know that every action in Power Automate already has a built-in try/catch? It’s hidden behind the “Configure run after” setting, and once you see it, you’ll never write a flow without it again.

The pattern in 30 seconds

  • Wrap your business logic in a Scope named Try.
  • Add a second Scope named Catch right after it.
  • Open Catch’s three-dot menu → Configure run after → check has failed, is skipped, and has timed out.

That’s it. If anything inside Try fails, the flow jumps to Catch. If everything succeeds, Catch is skipped. It behaves exactly like try/catch in any programming language.

Why a Scope, not just “Configure run after” on a single action?

You can set Configure run after on any single action, but that only handles failures of that specific action. With a Scope, you’re catching failures from any of the dozens of actions inside it. That’s how you avoid the “add error handling to 40 actions individually” trap.

What the Catch scope should actually do

A good Catch is more than just “send email on error”:

  • Capture the failure context with result('Try'). That expression returns an array with status, error code, and message for every action inside the Try scope, so you can see exactly which step failed.
  • Log it somewhere durable — a Dataverse table, a SharePoint list, or Application Insights — so you can audit and trend failures.
  • Notify the right channel. Teams adaptive cards work great because they include the run URL.
  • Decide on retry vs. terminate. For idempotent operations, you can re-run the Try block once. For everything else, terminate with a clear status so the parent system knows it failed.

Add a Finally

A third Scope after Catch with run after set to is successful, has failed, is skipped, has timed out acts like a finally. Use it to release locks, clean up temporary records, or update a “last run” status — guaranteed to execute regardless of outcome.

Why this matters

Most flows in production fail silently because no one sees the run history until something is already broken. Adding Try/Catch/Finally takes about two minutes per flow and gives you actionable alerts, audit trails, and the option to retry safely. It’s the single highest-ROI pattern you can apply to every flow you own.

Share this tip

Did this tip help you?

Vote once and classify what made this tip valuable.

Try this now

Quick checklist to apply this tip immediately.

💬 Comments & Suggestions

Share your thoughts, tips, or drop a useful link below.