Skip to main content

How to Send an Approval Request in Power Automate

· 9 min read
Jagdish Kumawat
Founder @ Dewiride

Start and wait for an approval sends someone a request to approve or reject, and pauses the flow until they answer. Choose the approval type, write a title, assign it, describe what's being approved, and the request reaches the approvers in Teams, Outlook and Power Automate.

Microsoft's approvals article says approvers can respond directly from an Outlook email, a Microsoft Teams adaptive card, or the Power Automate action center. The decision comes back to the flow as the action's outputs.

The example is the approval flow of the Overtime Timesheet app, which sends each overtime entry to its department's approvers.

Prerequisites​

  • A flow open in the new designer, with the details to show the approver.
  • The approvers' email addresses. Here, in a variable, ApproverEmails (How to Use Variables in Power Automate).
  • Approvals is a standard connector; nothing premium is needed.

Step 1: Add the Action​

Add an action, search for Start and wait for an approval, and choose it under Standard approvals:

The Add an action pane, under a banner We saved your draft flow. You can test and run it after you publish., searched for Start and wait for an approval, with the Standard approvals group showing Start and wait for an approval, outlined, Start and wait for an approval of text, Wait for an approval and Create an approval, and a SharePoint group below

The first time, the designer asks for a connection for Standard approvals; select Create new:

The Create connection pane for Start and wait for an approval, Create a new connection, Create a connection for Standard approvals., and a Create new button

I named the action Ask for approval.

Step 2: Choose the Approval Type​

Approval type lists five kinds:

The Approval type drop-down open with Approve/Reject - Everyone must approve, Approve/Reject - First to respond, Custom Responses – Wait for all responses, Custom Responses – Wait for one response, Sequential Approval, and Enter custom value

For a request that any one of several approvers can decide, choose Approve/Reject - First to respond. Microsoft's approval scenarios say: If only a response of one person from the group of people is enough to sign off the approval and continue with the flow run, use the Approve/Reject – First to respond or Custom Responses – Wait for one response action.

Step 3: Write the Title​

The title is the request's headline in every app. Make it say who, what and how much. Here, the person's name from the trigger, then two Compose outputs, the shift's date and its hours:

Ask for approval → Title
Overtime for @{triggerBody()?['Author/DisplayName']}, @{outputs('Shift_date')}, @{outputs('Hours_worked_out')} hours

For Maya Patel's shift, it read Overtime for Maya Patel, Saturday 07/11/2026, 3.75 hours.

Step 4: Assign It​

Assigned to is a people picker, which looks people up as you type. To put a variable or expression in it instead, select the gear to its right and choose Use dynamic content:

The Ask for approval pane with Approval type Approve/Reject - First to respond, a Title with tokens, an empty Assigned to that says Enter part of a name or email address to find people and 'Assigned to' is required., and the gear menu open with Use dynamic content, outlined, and Show guests

Then pick the variable, ApproverEmails. Several people go in one value, separated with a semicolon, as Microsoft's article says (How to Join an Array into Text in Power Automate).

Step 5: Describe What's Being Approved​

Details is the body of the request. Put each fact on its own line, with an empty line between them:

Ask for approval → Details
Department: @{outputs('Get_the_department')?['body/Department']}

Date: @{outputs('Shift_date')}

Time: @{outputs('Shift_times')}

Unpaid break: @{triggerBody()?['BreakMinutes']} minutes

Hours: @{outputs('Hours_worked_out')}

Reason: @{triggerBody()?['Reason']}

The box says Markdown supported, but Microsoft's Markdown article says Markdown isn't currently supported for the Approvals app on Microsoft Teams, and for Outlook on the desktop it says to use a blank line instead of a line break. Plain lines with empty lines between them showed as separate lines in both Teams and Outlook.

Step 6: Set the Requestor and Options​

Under Advanced parameters, select Show all:

FieldValue hereWhy
RequestorThe trigger's Created By EmailThe request says who it's for
Enable notificationsYesApprovers get an email
Enable reassignmentNoOnly the department's approvers decide

The finished action:

The Ask for approval pane: Approval type Approve/Reject - First to respond; Title Overtime for, Created By DisplayName, the two Outputs tokens and hours; Assigned to ApproverEmails; Details with Department, Date, Time, Unpaid break, Hours and Reason lines; an empty Item link and Item link description; Advanced parameters Showing 4 of 4 with Requestor Created By Email, Enable notifications Yes, Enable reassignment No and Attachments; and the line Connected to Standard approvals.

Step 7: Use the Decision​

The flow continues when an approver answers. The action's outputs include Outcome, Approve or Reject, and Responses, an array with each response's approver and comments (How to Get the First Item of an Array in Power Automate):

Expressions
outputs('Ask_for_approval')?['body/outcome']
first(outputs('Ask_for_approval')?['body/responses'])?['comments']

The Result​

The request reached the approvers in Teams, in Outlook and in Power Automate's Approvals page (How to Approve a Request in the Microsoft Teams Approvals App, How to Approve a Request from an Outlook Email and How to Respond to Approvals in Power Automate). Two things in the request came from the action, not from my text:

  • The email said Created by Admin User, the flow's maker, above Requested for Maya Patel. Microsoft's connector reference explains: The creator of the flow will always be shown in the Approval details (email content and all clients). This is to prevent spoofing of approval sender identities.
  • When the requestor was the maker, the email said only Requested by Admin User.

In the tests, approvers answered within a few minutes, and the flow carried on straight after.

How Long It Waits​

A run waits as long as it takes, within a limit. The limits page says: After 30 days, any pending steps time out. The approvals known issues page says An approval flow can wait for 28 days. The two pages disagree, so plan for the shorter one.

Common Mistakes​

MistakeWhat happensDo this instead
Typing a variable into the people pickerIt looks for a person by that textGear, then Use dynamic content
Commas between several emailsAssigned to wants semicolons, Microsoft's article saysSemicolons
Markdown in DetailsNot shown as formatting in TeamsPlain lines with empty lines between them
Everyone must approve when anyone may decideThe flow waits for every approverFirst to respond

Troubleshooting​

SymptomLikely causeFix
'Assigned to' is required.Nothing assignedAdd the people or the variable
The details run together on one lineNo empty lines between themAdd an empty line after each one
The flow never continuesNobody has answeredRemind the approvers; it times out within 28 to 30 days

FAQ​

Why does the request say it's created by me?​

The flow's maker always appears, by design, so nobody can make a request look as if it came from someone else. The Requestor field adds who it's for.

Where can approvers answer?​

Microsoft lists an Outlook email, a Teams adaptive card and the Power Automate action center. I tested all three in a browser: Teams and Outlook for department approvers, and Power Automate's Approvals page for a manager.

Conclusion​

Start and wait for an approval with Approve/Reject - First to respond, a clear title, Assigned to from dynamic content, details on separate lines and a requestor sends a request that approvers can answer in Teams, Outlook or Power Automate. The flow waits, then reads Outcome and Responses.

Additional Resources​