1. Home
  2. Guides
  3. Power Automate
  4. How to send automatic reminder emails for pending approvals in Power Automate
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.

  • By Nur Islam
  • 19:50 video
  • 12 steps
  • 1.2K views
Jump to a step (12)
Who this is for

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
  1. 01

    Prepare the request form

    Create a Microsoft Form (in the video: Training Request Form) with four fields: Name, Email, Event Name and Event Date. Any form works for this pattern. The date field is used to decide when reminders should stop.

  2. 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 Id from the trigger.

  3. 03

    Initialize the two control variables

    Add Initialize variable. Name it Approval Status, set Type to String and Value to Pending. This one variable controls when the reminder loop stops. It will later change to Approve, Reject or Expired. Rename the action to the same name so it is easy to spot.

    Add a second Initialize variable named Reminder End Date, type String, and set its value to Event Date from the form response. Reminders only make sense until the event. If your form has no date, set any end date you like here.

  4. 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, type Training Request: and add Event 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 Name and Event Date values.

    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.

  5. 05

    Wait for the response and record it

    Add Wait for an approval and set Approval ID to the Approval ID from 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 Status and set the value to Outcome from Wait for an approval. The outcome is Approve or Reject, and changing the variable is what tells the reminder loop to stop.

  6. 06

    Email the requester with the decision

    Add a Condition: Approval Status is equal to Approve.

    In True, add Send an email (V2). For To, click the gear icon, choose Use dynamic content and pick Email from Get response details. Subject: Your training request has been approved. In the body, greet the requester by Name and include Event Name and Event Date.

    In False, add another Send an email (V2) to the same Email with the subject Your training request has been rejected and a message asking them to contact their manager.

  7. 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 Status is not equal to Pending. The loop exits when the approver approves, when they reject, or when the event date passes and the status is set to Expired.

  8. 08

    Add a daily delay and a pending check

    Inside the loop, add a Delay with Count 1 and Unit Day, 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 Status is equal to Pending. This stops a reminder going out if the approver responded during the delay.

  9. 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 to is less than. On the right, insert the expression formatDateTime(variables('Reminder End Date'),'yyyy-MM-dd').

    Formatting both sides as yyyy-MM-dd makes the two dates comparable. If today is before the event date, there is still time to send reminders.

  10. 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 Pending plus Event Name. In the body, list the requester's Name, Email, Event Name and Event Date, then add a line such as "Please use the link to open the approval request directly" followed by Respond link from 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. 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 Status to Expired. This breaks the Do until loop because the status is no longer Pending.

    Then add Send an email (V2) to the requester's Email with the subject Your training request has expired, including their Name, Event Name and Event Date.

  12. 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 Status becomes Approve, 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.
Still stuck? Ask AI to help you fix itChatGPTClaudeGeminiCopilotPerplexityGrok

Expressions used in this flow

WhereExpressionPurpose
Date check, left sideformatDateTime(utcNow(),'yyyy-MM-dd')Today's date as yyyy-MM-dd
Date check, right sideformatDateTime(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 Status to the Outcome and email the requester.
  • Right branch: Do until Approval Status is not Pending. Each day it checks the status and the date, then sends a reminder or marks the request Expired.

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.

Video chapters
Ask a question in the comments Last checked 26 Sep 2026. Screens change: if a step looks different, tell me in the comments.