- Home
- Guides
- Power Automate
- How to send automatic reminder emails for pending approvals in Power Automate
How to send automatic reminder emails for pending approvals in Power Automate
Build an approval flow that sends the approver a daily reminder with a direct Respond Link while the request is pending, stops as soon as they approve or reject, and expires the request after the event date.
Jump to a step (12)
Approval requests sit unanswered in busy inboxes, and the person who asked ends up sending follow-up emails by hand or missing a deadline. Power Automate has no single setting for "remind until approved". This flow adds that behavior with a parallel branch and a loop.
An employee submits a training request through Microsoft Forms. Power Automate uses Create an approval, which creates the approval and lets the flow keep going. The flow then splits into two parallel branches. One branch uses Wait for an approval to capture the decision and email the requester. The other branch runs a Do until loop that sends a reminder every day while the approval is still pending.
Both branches share one variable, Approval Status. When the approver responds, or the event date passes, the variable changes from Pending and the reminder loop stops. Everything uses standard connectors.
What you need
- Microsoft 365 Business Basic or Standard
- Power Automate with the Approvals, Microsoft Forms and Office 365 Outlook connectors
- A Microsoft Form with Name, Email, Event Name and Event Date fields
- The approver's email address
Step by step
0 of 12 done-
01
Prepare the request form
Create a Microsoft Form (in the video: Training Request Form) with four fields:
Name,Email,Event NameandEvent Date. Any form works for this pattern. The date field is used to decide when reminders should stop. -
02
Create the flow and get the response
In Power Automate, select Create, then Automated cloud flow. Name it and choose the Microsoft Forms trigger When a new response is submitted. Select your form.
Add Get response details, choose the same form, and set Response Id to the
Response Idfrom the trigger. -
03
Initialize the two control variables
Add Initialize variable. Name it
Approval Status, set Type toStringand Value toPending. This one variable controls when the reminder loop stops. It will later change toApprove,RejectorExpired. Rename the action to the same name so it is easy to spot.Add a second Initialize variable named
Reminder End Date, typeString, and set its value toEvent Datefrom the form response. Reminders only make sense until the event. If your form has no date, set any end date you like here. -
04
Create the approval (do not wait yet)
Add the Approvals action Create an approval. Set Approval type to
Approve/Reject - First to respond. For Title, typeTraining Request:and addEvent Name. Put the approver's email in Assigned to.In Details, write a short summary such as "A new training request needs your approval" followed by labels with the
Name,Email,Event NameandEvent Datevalues.Use Create an approval, not Start and wait for an approval. Create an approval sends the request and moves on immediately, which is what lets the reminder branch run while the approval is pending. Start and wait blocks the flow until someone responds.
-
05
Wait for the response and record it
Add Wait for an approval and set Approval ID to the
Approval IDfrom Create an approval. This captures the response whether the approver answers from the original email or from a reminder.After it, add Set variable: choose
Approval Statusand set the value toOutcomefrom Wait for an approval. The outcome isApproveorReject, and changing the variable is what tells the reminder loop to stop. -
06
Email the requester with the decision
Add a Condition:
Approval Statusis equal toApprove.In True, add Send an email (V2). For To, click the gear icon, choose Use dynamic content and pick
Emailfrom Get response details. Subject:Your training request has been approved. In the body, greet the requester byNameand includeEvent NameandEvent Date.In False, add another Send an email (V2) to the same
Emailwith the subjectYour training request has been rejectedand a message asking them to contact their manager. -
07
Add a parallel branch with a Do until loop
Above Wait for an approval, right-click the plus icon and choose Add a parallel branch. In the new branch, add Do until from Control.
Set the loop condition to
Approval Statusis not equal toPending. The loop exits when the approver approves, when they reject, or when the event date passes and the status is set toExpired. -
08
Add a daily delay and a pending check
Inside the loop, add a Delay with Count
1and UnitDay, so the approver gets one reminder per day. For testing, set it to 1 minute and change it back afterwards.After the delay, add a Condition:
Approval Statusis equal toPending. This stops a reminder going out if the approver responded during the delay. -
09
Check whether the event date has passed
In the True branch of the pending check, add another Condition. On the left, insert the expression
formatDateTime(utcNow(),'yyyy-MM-dd'). Set the operator tois less than. On the right, insert the expressionformatDateTime(variables('Reminder End Date'),'yyyy-MM-dd').Formatting both sides as
yyyy-MM-ddmakes the two dates comparable. If today is before the event date, there is still time to send reminders. -
10
Send the reminder with the Respond Link
In the True branch of the date check, add Send an email (V2) to the approver's email (the same address used in Create an approval). Subject:
Reminder: Training Request PendingplusEvent Name. In the body, list the requester'sName,Email,Event NameandEvent Date, then add a line such as "Please use the link to open the approval request directly" followed byRespond linkfrom Create an approval.The Respond Link opens the approval page, where the approver can approve or reject. The other branch captures that response right away.
-
11
Expire the request after the event date
In the False branch of the date check (the event date has passed), add Set variable and set
Approval StatustoExpired. This breaks the Do until loop because the status is no longerPending.Then add Send an email (V2) to the requester's
Emailwith the subjectYour training request has expired, including theirName,Event NameandEvent Date. -
12
Test the reminder flow
Save the flow, click Test, choose Manually, and submit the form. Both branches start after Create an approval. Do not respond to the first approval email. With the 1-minute delay, a reminder arrives with the Respond Link. Open the link, choose Approve and confirm.
Back in the run history, Wait for an approval captures the response,
Approval StatusbecomesApprove, the Do until loop exits, and the requester receives the approved email.
Tips and common problems
- Use Create an approval plus Wait for an approval instead of Start and wait for an approval. Start and wait pauses the whole flow, so a reminder branch could never run while the approval is pending.
- Format both dates with
formatDateTime(...,'yyyy-MM-dd')before comparing them, otherwise the event date from Forms and the current time will not compare reliably. - Set the Delay to 1 minute while testing so you can see reminders quickly, then switch it back to 1 day before you use the flow for real.
- In the video the Respond Link could not be clicked directly in the test mailbox, so I copied it into the browser. It opens the same approval page either way.
- Do until loops have Count and Timeout limits in the loop's settings. If reminders stop early for long waits, raise those limits so the loop can run until the event date.
Expressions used in this flow
| Where | Expression | Purpose |
|---|---|---|
| Date check, left side | formatDateTime(utcNow(),'yyyy-MM-dd') | Today's date as yyyy-MM-dd |
| Date check, right side | formatDateTime(variables('Reminder End Date'),'yyyy-MM-dd') | The event date in the same format |
How the two branches talk to each other
- Left branch: Wait for an approval, then Set variable
Approval Statusto the Outcome and email the requester. - Right branch: Do until
Approval Statusis notPending. Each day it checks the status and the date, then sends a reminder or marks the requestExpired.
Related builds: sequential approval (manager, then IT), multi-level expense approval and PTO leave request approval.
Questions
Can Power Automate send reminder emails for pending approvals?
There is no single built-in "remind until approved" setting, but you can build it. Create the approval with Create an approval, wait for the response in one branch, and in a parallel branch use a Do until loop with a daily Delay that emails the approver while a status variable is still Pending.
How do I stop approval reminders after the approver responds?
Store the status in a variable that starts as Pending. After Wait for an approval, set the variable to the approval Outcome. The Do until loop runs until the variable is not equal to Pending, so it stops on the next check.
How do I include a direct approval link in a reminder email?
Add the Respond link dynamic value from the Create an approval action to the email body. It takes the approver straight to the approval page where they can approve or reject.
What is the difference between Create an approval and Start and wait for an approval?
Create an approval creates the request and lets the flow continue immediately. Start and wait for an approval creates it and pauses the flow until someone responds. For reminders you need the first, followed by a separate Wait for an approval action.
