← Al Davies, 250 High Street

Require every approver to approve in Power Automate

Short answer: in the Start and wait for an approval action, set Approval type to "Approve/Reject - Everyone must approve". Then add a Condition on the response, and send an email or update your list with who answered and what they wrote. If you leave the type on "First to respond", the first answer ends the request, and the other people never get a vote that counts.

This guide is for a flow that asks two or more people to sign off on one item, such as a purchase request that needs a manager and finance. You can build it in Power Automate at https://make.powerautomate.com with a SharePoint list as the trigger. Exact names of buttons and cards may differ in your tenant.

What the four approval types do

Microsoft lists the approval types on its approvals page. For the first one, it says: "A response is needed from each approver before the flow run is completed. The actions that follow the Start and wait for an approval action run after all the approvers respond, or when a single rejection occurs."

For "First to respond", Microsoft says: "Approval or rejection by any approver completes the request."

Microsoft also lists "Custom Responses - Wait for all responses", "Custom Responses - Wait for one response" and "Sequential approval". Sequential approval asks one person at a time, in order. Use it when the second person should only see the request after the first person says yes.

Plain words, in short:

  1. Everyone must approve: the flow waits for all people, but a single rejection also ends the wait.
  2. First to respond: the first answer wins.
  3. Custom responses: you write the answer options, for example Approve, Reject, Need more info.
  4. Sequential: one person after another.

Why the first answer sometimes ends your request

If your team expects two sign-offs and the request closes after one, check the Approval type on the action first. The type is a dropdown on the Start and wait for an approval card, and Microsoft says you can also create your own value by selecting Enter custom value. A wrong type is a simple thing to check before you look at anything else.

Step 1. Build the list

Create a SharePoint list for the requests. Use the Title column as the short name of the request. Rename it to something like "Request" if that reads better for your team.

Add these columns:

  1. Amount or Details (Number or Multiple lines of text).
  2. Status (Choice): 1 Waiting, 2 Approved, 3 Rejected. Set the default value to 1 Waiting, so a new row never shows a blank status.
  3. Decision notes (Multiple lines of text).
  4. Decided by (Multiple lines of text), used later to store the names.

Number the Choice values so they stay in the order you want. The number is there to keep your order. It is not something SharePoint needs.

Step 2. Add the approval action

  1. Open https://make.powerautomate.com and create an automated cloud flow.
  2. Pick the trigger "When an item is created" for SharePoint, and choose your site and list.
  3. Add the action "Start and wait for an approval". Microsoft's steps say to type approval in the search box and select it under Standard approvals.
  4. In Approval type, choose "Approve/Reject - Everyone must approve".
  5. In Title, type a short name for the request. Insert the list item's Title from the dynamic content list.
  6. In Assigned to, enter the email addresses of everyone who must approve.
  7. In Details, say what the person is approving. Microsoft says you can use Markdown to format this field.

Microsoft's connector page says how to enter more than one person: "To specify multiple users, use a semi-colon (;) to separate user identifies. User types may be mixed." It also says the Assigned To field accepts an email address, a User Principal Name, or a Microsoft Entra ID user id.

Step 3. Read the result

After the action runs, the dynamic content list shows what came back. Microsoft's connector page lists these output fields for an approval: Outcome, Responses, and inside each response the approver name, approver email, the approver's response, the response date, and Comments.

Microsoft's tutorial adds a Condition after the approval. In the tutorial, the first box is the Responses Approver response value, the middle box is "is equal to", and the last box is Approve. Microsoft's parallel approvals page says of that text: "Enter Approve (this text is case-sensitive) into the last box." The connector page says the same about the two valid answers: "Valid responses to a Basic or Await all approval type are "Approve" and "Reject". These responses are case-sensitive."

Because Responses holds one entry for each approver, Power Automate may wrap your next steps in an Apply to each loop when you use these fields. Our advice, not a Microsoft rule: put the Condition and the list update inside that loop, so every approver is read one at a time.

Step 4. Show who rejected

One way to start:

  1. Inside the loop over Responses, add a Condition. Left side: the Approver response value. Operator: is equal to. Right side: Reject.
  2. In the Yes branch, add a SharePoint "Update item" action. Microsoft says the Site Address, List Name, Id, and Title fields are required on that action, so fill Title with the item's Title.
  3. Put the Approver name and Comments values into your Decision notes column.
  4. After the loop, add a final "Update item" that sets Status to 2 Approved or 3 Rejected, depending on the Outcome.

Our advice, not a Microsoft rule: keep one Update item that writes the final status, and let the loop only collect names and comments. Several updates to the same item in a row are harder to follow.

Because Microsoft says the flow can continue "when a single rejection occurs", some approvers may not have answered when the flow moves on. Run a test where one person rejects first, then open the run history in Power Automate and look at which responses came back. Build your emails around what you see there.

If your flow edits the same list item

Updating the item that started the flow can start the flow again when the trigger is "created or modified". This guide uses "When an item is created", so the update does not start a new run. If you switch to a modified trigger, read "Power Automate flow keeps running itself over and over" and add a guard condition.

Step 5. Test with real people

  1. Create one test item and assign it to two coworkers who agree to help.
  2. Have the first person approve and the second reject, then repeat with the order swapped.
  3. Repeat with both approving.
  4. Check the list row each time: status, notes and names.

Microsoft's tutorial says approvers can respond "from their email inbox, the approvals center in Power Automate, or the Power Automate app". Ask your testers which place they used, so you know what to tell the rest of the team.

What to avoid

Known limits to plan for

Microsoft's connector page lists these in its known issues and limits:

  1. "Approvals that rely on custom responses can fail if sent to many users with the type set to "Everyone must approve", due to data size limitations of the results field."
  2. "The creator of the flow will always be shown in the Approval details (email content and all clients)." Tell approvers who the flow owner is, so they are not surprised.
  3. "Approvals timestamps will always be shown in UTC."
  4. "Actionable Approval mails in Outlook are not supported for Guest users in a tenant. Guest users will need to go to the Power Automate portal in order to act on an approval."

For a record of who approved what and when, read "Keep an audit trail of every approval".

When to get help

You can build all of this yourself in Microsoft 365. If you would rather have it built and tested for your team, I do that. A tracker like this is a fixed price: $5,000 for one, built in 2 weeks. See "What a SharePoint tracker costs to build". Bring one example of the problem to a free call.

Tell me what's still manual

I am Al Davies. I run 250 High Street LLC and build SharePoint trackers and Power Automate flows for operations teams. I work remotely. The first call is free, and I will not try to sell you anything.

See trackers I built: Tools I built

FAQ

What is the difference between Everyone must approve and First to respond?

Microsoft says that with Everyone must approve, "A response is needed from each approver before the flow run is completed." With First to respond, "Approval or rejection by any approver completes the request."

Does one rejection stop the wait?

Microsoft says the actions after the approval run "after all the approvers respond, or when a single rejection occurs." Plan for a rejection that arrives before the others answer.

How do I add several approvers?

Put their addresses in the Assigned to field, separated by semicolons. Microsoft says the field accepts an email address, a User Principal Name or a Microsoft Entra ID user id.

Can approvers outside my company approve?

Microsoft says you can send approval requests to people outside your organization by using Microsoft Entra guest users. Guests must go to the Power Automate portal to act, because actionable Outlook mails are not supported for them.

What if I need one person after another?

Choose the Sequential approval type. Microsoft describes it as: "Approvals are requested one at a time, in a specific order." Check the exact option name in the dropdown, since names may differ.

Sources