What an Action Does
An action is a single step in a flow that runs after the trigger fires, performing one discrete task such as sending an email, creating a SharePoint list item, calling an HTTP endpoint, or transforming data with a Compose action. Actions execute sequentially from top to bottom in the flow designer by default, and each action's outputs become available as dynamic content for every action below it, forming a chain where later steps can reference the results of earlier ones.
Cricket analogy: It's like a bowler's run-up broken into discrete steps — gather, load, delivery stride, release — each one executing in strict sequence, where the release stride depends on momentum built in the delivery stride before it.
Control-Flow Actions
Beyond simple connector actions, Power Automate provides control-flow actions that alter the linear execution path: Condition (If/Else, evaluating a Boolean expression to branch into Yes/No paths), Switch (multi-way branching on a single value), Apply to each (looping over an array, running its inner actions once per item), Do until (looping until a condition becomes true, with a configurable count/timeout limit), and Scope (grouping actions together, often used with 'configure run after' for structured error handling).
Cricket analogy: Condition branching is like a captain's decision tree after winning the toss — bat first if the pitch looks dry, bowl first if it looks green — only one path is taken based on that day's specific pitch report.
Apply to Each Example
{
"type": "Foreach",
"foreach": "@body('Get_items')?['value']",
"actions": {
"Send_an_email": {
"type": "ApiConnection",
"inputs": {
"host": { "connectionName": "shared_office365" },
"parameters": {
"emailMessage/To": "@items('Apply_to_each')?['ManagerEmail']",
"emailMessage/Subject": "Reminder: @{items('Apply_to_each')?['Title']}"
}
}
}
},
"runAfter": { "Get_items": ["Succeeded"] }
}Apply to each runs in parallel by default (up to 20 concurrent iterations), which speeds up execution but means iterations are not guaranteed to complete in order. If ordering matters — for example, appending rows to a log in sequence — set 'Concurrency Control' to off or to 1 in the loop's settings.
Configure Run After
Every action has a hidden 'Configure run after' setting that determines which status(es) of its preceding action(s) allow it to run: Succeeded (default), Failed, Skipped, or Timed Out. This is the mechanism behind structured error handling — you can add a Scope named 'Try', a second Scope named 'Catch' configured to run after 'Try' has Failed, and a 'Finally' scope configured to run after 'Try' has Succeeded, Failed, Skipped, or Timed Out, replicating a try/catch/finally pattern that isn't natively named that way in the designer but is fully achievable through this setting.
Cricket analogy: It's like a bowling change plan that only brings on the spinner if the pacer's over goes for more than 12 runs (a 'Failed' condition), otherwise the pacer continues — a conditional continuation based on the prior over's outcome.
If you don't explicitly configure a 'Catch' scope's run-after to include 'Failed', 'Skipped', and 'Timed Out', the entire flow run will simply be marked Failed the moment any action in the try scope fails, and your error-handling actions will never execute.
- Actions are the discrete steps that run after a trigger, executing sequentially by default.
- Each action's outputs become dynamic content available to every subsequent action.
- Control-flow actions (Condition, Switch, Apply to each, Do until, Scope) change the linear execution path.
- Apply to each runs iterations in parallel by default, up to 20 concurrent, unless concurrency control is limited.
- Configure run after determines whether an action runs based on Succeeded, Failed, Skipped, or Timed Out status of prior actions.
- Try/Catch/Finally error handling is built using Scopes combined with configure-run-after settings.
- Omitting Failed/Skipped/TimedOut from a catch scope's run-after means error handling never executes.
Practice what you learned
1. In what order do actions in a flow execute by default?
2. Which control-flow action loops over every item in an array?
3. How can you implement try/catch/finally-style error handling in Power Automate?
4. What is the default concurrency behavior of Apply to each?
5. What happens if a Catch scope's run-after setting only includes 'Succeeded'?
Was this page helpful?
You May Also Like
Automated Triggers
Learn how automated triggers detect events in connected services and kick off Power Automate flows without any manual action.
Dynamic Content
Learn how to pass outputs from triggers and earlier actions into later steps using Power Automate's dynamic content picker and underlying expressions.
Expressions in Flows
Master Power Automate's Workflow Definition Language expressions to transform data, build conditions, and manipulate strings, dates, and arrays.
Related Reading
Related Study Notes in Programming
Browse all study notesApache Spark Study Notes
Programming · 30 topics
ProgrammingApache Flink Study Notes
Programming · 30 topics
ProgrammingHadoop Study Notes
Programming · 30 topics
ProgrammingSnowflake Study Notes
Programming · 30 topics
ProgrammingApache Airflow Study Notes
Programming · 30 topics
Programmingdbt (Data Build Tool) Study Notes
Programming · 30 topics