Approval flows are one of the most-used Power Automate features — automating the process of sending a request to a manager or team, waiting for their response, then taking different actions based on whether they approved or rejected. Here's how to build one properly from scratch.
How approvals work in Power Automate
The Approvals connector sends a request to one or more people, then pauses the flow and waits for a response. The approver receives an email with Approve/Reject buttons (and optionally a comments field), and can also respond from the Power Automate Approvals center or from Teams if your organization uses it. Once someone responds, the flow resumes and can branch based on the outcome.
Building a basic approval flow
- Set your trigger — commonly "When an item is created" in SharePoint (for request lists), "When a response is submitted" in Forms, or a manual button trigger
- Add a "Start and wait for an approval" action — search for "Approvals" and select this action. This is the step that sends the request and pauses the flow.
- Configure the approval:
- Approval type: choose "Approve/Reject - First to respond" (any one approver can decide) or "Approve/Reject - Everyone must approve" (all approvers must approve)
- Title: a clear description of what's being approved — use dynamic content to include relevant details like the requester's name or item title
- Assigned to: the email address(es) of the approver(s)
- Details: any additional context the approver needs to make a decision
- Add a Condition after the approval step — check if the outcome equals "Approve." The "Yes" branch handles approved requests, the "No" branch handles rejected ones.
- Add actions in each branch — for example: if approved, update the SharePoint item status to "Approved" and email the requester; if rejected, update status to "Rejected" and email the requester with the approver's comments.
Tip: in the "No" branch, use outputs('Start_and_wait_for_an_approval')?['body/responseSummary'] as dynamic content to include the approver's comments in the rejection notification — so the requester knows why it was rejected without having to follow up separately.
Setting a timeout / deadline
By default, an approval flow waits indefinitely for a response. To set a deadline, click the three dots on the "Start and wait for an approval" action and go to Settings. Set a timeout duration. When the timeout is reached, the flow continues — you can check for a timeout by seeing if the outcome is neither "Approve" nor "Reject" and handle it as a separate branch (such as sending a reminder or escalating to a different approver).
Sequential approvals (multiple approvers in order)
If you need multiple people to approve in sequence — manager first, then director — chain multiple "Start and wait for an approval" steps, one after another. Each step waits for its approver before moving to the next. Add a condition after each step so that if anyone rejects, the flow stops and notifies the requester rather than continuing to the next approver unnecessarily.
Parallel approvals (all must approve)
For cases where multiple people must all approve but can do so simultaneously, use the "Approve/Reject - Everyone must approve" type and list all approvers in the "Assigned to" field. The flow waits until everyone has responded. Note that if any one person rejects, the outcome is "Reject" regardless of whether others approved.
Common approval flow problems and fixes
Approver doesn't receive the email
Check the "Assigned to" field — it must be a valid email address. If you're using dynamic content from a form or list, confirm the field actually contains an email address, not a display name. Also confirm the approval email hasn't landed in the approver's Junk folder, which can happen the first time.
Flow times out before anyone responds
If you set a short timeout and the approver is slow to respond, the flow continues without a decision. Either increase the timeout duration, or build a reminder branch that sends a nudge email partway through the waiting period using a parallel branch with a Delay action.
Approval outcome not matching the condition
The outcome value from the Approvals connector is "Approve" (not "Approved") and "Reject" (not "Rejected"). This exact spelling matters for the condition. Check Peek code on your condition to confirm you're comparing against the right string — this is a common source of conditions always going to the wrong branch.
Approver can't find the approval request
Approvers can see all pending requests in the Power Automate Approvals center at make.powerautomate.com, under the Approvals section. If Teams is configured, requests also appear as adaptive cards in Teams. This is worth telling approvers upfront so they're not solely relying on finding the email.
The bottom line
Approval flows follow a consistent structure: trigger → send approval → wait → condition on outcome → action. The most common issues are wrong approver email addresses, timeout settings being too short, and the outcome value spelling mismatch in conditions. Getting those three right handles the large majority of approval flow problems.