Power Automate is the process automation service of the Power Platform. Makers leveraging the solution can build both desktop and cloud flows, but each comes with their own considerations. Though, more people are likely building cloud flows than desktop flows. And for those cloud flow makers, there are some best practices, tips, and factors to keep in mind when building efficient, scalable automations.
Kicking things off, there are three types of cloud flows. Before automating any process, first determine whether the flow should run (1) when an external action happens, (2) when someone manually presses a button, or (3) on a schedule because flows can only have one trigger:

With the flow trigger chosen, budget for the run frequency. Resources are consumed in every flow run, so consider how often the flow really needs to run. Does it need to run when something is created AND modified? If running on a schedule, does it need to run hourly, daily, monthly, etc.? If a button press, how often is said person pressing the button?

Again, flows consume resources every time they run. The flow trigger and run frequency are both key pieces of the puzzle, but makers should also consider the automation’s data. If the process needs to query datasets, how large are these datasets? For the larger datasets, are all the records needed or can they be filtered? If the data can be filtered, then the flow doesn’t need to consume unnecessary resources. To reduce the data payload size, use the “Get” actions of a service, like SharePoint Online or SQL Server, and take advantage of the Filter Query property:
- SharePoint Online
- Excel for Business
- SQL Server

When needing to loop through data records, flow makers use the Apply to each action. Essentially, these actions are For-Each loops, for those familiar with “high-code” concepts.
Important to note, automations often have multiple Apply to each loops. How many loops are present? Is every loop necessary? Or are some loops only processed if another doesn’t get the job done? What can be done, if anything, to reduce the number of loops?

Often overlooked, but a good best practice, nonetheless, don’t create more variables than are necessary. Variables are useful for a number of reasons, even more so when reviewing flow runs. But are new variables needed for every step? Or can some of the variables be reused throughout the automation?

The Apply to each control was already touched on, but digging in a bit more, these controls are used to loop through arrays of data. This can be an array of strings, numbers, objects, or even arrays of arrays. Get creative:

Conditions are perfect status checkers and If-Then logic is helpful to determine process next steps. Use conditions to check the value of a variable, if an array is empty, if an object has a property, etc. If the check is TRUE, then do one thing. Otherwise, the check is FALSE, so do something else:

Makers, build your cloud flows to be dynamic as possible. What does this mean? Avoid hard-coding variables. Instead, create lookup tables that can be queried on flow run. Now, the lookup tables can be anything like a SQL table, SPO list, or Excel table, which are all easily accessible.
Also, use Scope controls to encapsulate and group these lookup actions, and create try-catch blocks just in case a lookup fails. The automation shouldn’t need to be modified every time a person’s role changes, a distribution group is renamed, or a person is hired:

Last tip, remove unnecessary connections. Sometimes connections are created accidentally, and this often duplicates connections in the environment for the same service. Removing these duplicates is good housekeeping, especially if the connections are broken. This also ensures flows are only using PROD connections, and not legacy connections from an old POC:

Conclusion:
The Power Platform is still evolving. Power Automate is still evolving. Even so, as the tools change, these are some best practices that’ll likely stand the test of time…
“In a typical history book, black Americans are mentioned in the context of slavery or civil rights. There’s so much more to the story.”
Kareem Abdul-Jabbar
#BlackLivesMatter