A Power Automate flow that works in a demo and a flow you can run a business on are different things. The gap is almost entirely boilerplate: the parts that handle the day something goes wrong. These are the patterns we add to nearly every flow we ship.
Wrap the work in a scope with a fallback
Put the real work inside a Scope action. Add a second Scope configured to run only after the first one fails, times out, or is skipped. That second scope posts a message to a Teams channel with the flow name, the run link and the error, and — where it matters — opens a ticket. Nobody finds out about a broken flow from an angry user two days later.
Make retries deliberate
Turn off the default automatic retry on actions where a repeat could double-process something (a payment, an email, a record creation). Where a retry is safe, set an explicit policy with a sensible count and interval. Idempotency first: check whether the work is already done before doing it.
Validate the trigger input early
The first thing a flow should do is check its own input. Is the record in the expected state? Are the required fields present? Is the requester who they say they are? Bounce bad input back to the source with a specific message instead of failing halfway through.
Log every run to a list
Write one row per run to a SharePoint list or Dataverse table: timestamp, trigger, key identifiers, outcome. It costs one action and gives you an audit trail, a way to answer "did it run for this person?", and the raw material for a Power BI view of how the automation is actually performing.
Keep approvals out of the critical path
For anything that needs a human decision, use a first-response approval, capture the outcome, and let the flow resume from where it paused. Route by value or type so routine items don't sit in an executive's inbox.
Put it in a template
Once these are in place, save the flow as a solution and a template. The next automation starts from a known-good baseline instead of a blank canvas — which is most of why our later projects ship faster than the first one.