Delegate When an Approver is Out of Office in Power Automate
Have you ever kicked off an approval process, only to have it sit there waiting because the approver is on vacation? 😩 I have! In this blog and video, I show how to build a flow that automatically checks whether your approver has an out-of-office reply turned on. If they do, it routes the approval to someone else instead.
No form-filling, no manual intervention. It all happens automatically in the flow.
🎥 Watch the full Power Hour replay on YouTube and check out my Power Automate Advanced course at IW Mentor to dive even deeper into building smart approval processes.
🧩 How This Solution Works
Before we get into the steps, here’s the big picture. When a new item is created in SharePoint, the flow:
- Identifies who the approver should be (in our example, the submitter’s manager)
- Uses the action Get Mail Tips for a Mailbox action to check that person’s out-of-office status
- Sets a boolean variable — true if they’re out, false if they’re in
- If they’re out, looks up their delegate and routes the approval there instead
- Sends the approval using the Create an Approval Request for an Item or File SharePoint action
Let’s build it!
📋 What You’ll Need
- A SharePoint list to trigger approvals from (we used an Employee Onboarding list)
- A second SharePoint list to store approver-to-delegate mappings (two Person columns: Approver and Delegate)
- Power Automate (no premium connectors required)
- Approvals enabled on your SharePoint list. (Here’s my post that details this concept: SharePoint Approval Requests in Power Automate)
🔧 Step 1: Set Up Your SharePoint Trigger
- Create a new flow in Power Automate
- Choose the trigger SharePoint – When an item is created
- Select your site and list
This trigger will fire every time someone submits a new item — that’s what starts the approval process. You don’t have to use this trigger, yours could trigger on change or manually. It’s up to you per business requirements.
🗂️ Step 2: Initialize Your Variables
Before you can store the results, you need to set up three variables. Add Initialize Variable actions for each:
| Variable Name | Type | Default Value |
|---|---|---|
varOriginalApprover | String | (leave blank) |
varBooleanOOO | Boolean | false |
varMessage | String | (leave blank) |
varFinalApprover | String | (leave blank) |
The reason we initialize them up top is so they’re available throughout the entire flow.
👤 Step 3: Get the Approver’s Manager
In this example, the approver is whoever created the item’s manager. To get that dynamically:
- Add Office 365 Users – Get Manager (V2)
- For the User field, use the dynamic content Created By Email from your SharePoint trigger
This gives you the manager’s profile, including their email address, which you’ll use in the next step.

📬 Step 4: Get Mail Tips for the Approver’s Mailbox
This is the magic step. Power Automate has a built-in action that queries Outlook to see if someone has their automatic replies turned on.
- Add the action Office 365 Outlook – Get Mail Tips for a Mailbox
- For now, type in the approver’s email address directly (so that you can test it, and we’ll make this dynamic later)
- Rename this action to something short like Tips — you’ll reference it in expressions
When the flow runs, this action returns raw JSON data. If the person is out of office, the response includes an automaticReplies object with their message. If they’re not out of office, automaticReplies is just empty curly brackets {}. That difference is exactly what we’ll use to build our boolean.
📝 Step 5: Set the Original Approver Variable
- Add a Set Variable action
- Choose
varOriginalApprover - For the value, use the dynamic content Mail from the Get Manager action (that’s their email address). This is just one idea, of using the manager as the delegate. Approval processes and the people involved can vary greatly. So, whomever that approver is, that’s where you input their email address, statically or dynamically.
Now update your Get Mail Tips action to use varOriginalApprover. That way the whole flow is driven by whoever the approver happens to be.
✅ Step 6: Set the Boolean Variable
- Add another Set Variable action for
varBooleanOOO - In the Expression tab, enter:
not(empty(body('Tips')?['value'][0]?['automaticReplies']?['message']))
This returns true if a message exists (they’re out of office) and false if it doesn’t. Simple!
🔍 Step 7: Set the OOO Message Variable
Now use an expression to pull the out-of-office message out of the raw JSON:
- Add a Set Variable action for
varMessage - Click into the value field, switch to the Expression tab, and enter:
body('Mail_Tips')?['value'][0]?['automaticReplies']?['message']

🔀 Step 8: Add a Condition — Are They Out of Office?
- Add a Condition
- Set it to check:
varBooleanOOOis equal totrue
- Yes (true) branch → They’re out of office, so look up the delegate
- No (false) branch → Set
varFinalApproverequal tovarOriginalApproverand proceed normally
🧹 Step 9: Clean Up the OOO Message
The message comes back as HTML, so you’ll want to convert it to readable plain text. Here’s how to do it cleanly:
- Add HTML to Text action and pass it
varMessage - Add another Set Variable action for
varMessageto overwrite it with the cleaned version - In the Expression tab, use:
replace(body('Html_to_text'), decodeUriComponent('%0A'), '')
Why this expression? The HTML to Text action strips the tags, but leaves behind \n newline characters — especially at the end of the message. The trick is that these aren’t true newlines, they’re escaped newlines, so a plain replace with \n won’t catch them. Using decodeUriComponent('%0A') targets the actual newline character, and trim cleans up anything left on the edges.

📂 Step 10: Look Up the Delegate from Your SharePoint List
One way of building an approval process would be to just make it manager-based, so that if any person is out, their manager gets approvals delegated to them. Another way would be to just have the delegate be the same person every time. Yet another way would be to set up a separate list, where approvers and their delegates are all defined. Here’s how to set up a list, and this is also demonstrated in the video below.
List:

Inside the Yes branch:
- Add SharePoint – Get Items
- Point it to your Approver Delegation list
- Notice that I named my column Approver. In Filter Query, enter this:

⚠️ Case matters here! The column name (
Approver) must match exactly how it appears in SharePoint, and
- Add a Set Variable action inside the loop that Power Automate automatically creates, and set
varFinalApproverto Delegate Email from the Get Items results
📨 Step 11: Send the Approval
After the condition (in the main flow, not inside either branch), add your approval action. With this, there are several ways that approvals can be kicked off, but this is my favorite:
- Action: SharePoint – Create an Approval Request for an Item or File
- Set your site, list, and the ID from the trigger
- For Assigned To, use
varFinalApprover
This action is great because it ties directly to the built-in Approvals setting that you enabled in SharePoint and sends a Teams notification to the approver — without leaving the flow running and waiting.
🔁 Bonus: Loop Through Multiple Approvers
In the below video, I added this at the end, as another option. What if you have a multi-person column and want to check each approver’s OOO status individually? Create a loop that goes through each approver and appends each one to a string variable.
This gives you a semicolon-separated string of email addresses. All of them are either the original approver or their delegate. Then, you can drop this straight into the approval action’s Assigned To field.
💡 Tips & Variations
Different ways to determine who the delegate is:
- 🏢 Hard-code a single backup — simplest option, one person gets all delegated approvals
- 👆 Use the manager’s manager — automatically escalates up the chain
- 📋 SharePoint delegation list — most flexible, maps each approver to their specific delegate
Things to keep in mind:
- This solution is based on Outlook’s built-in automatic replies. It only works if your approvers actually use their out-of-office settings!
- If you want to get the OOO message into your approval notification, you already have it in
varMessage— just drop it into the approval details field - The approval action I used doesn’t pause the flow waiting for a response, which keeps your run history clean
🎯 Wrap Up
Out-of-office approval delegation is one of those things that sounds complicated. It becomes really manageable once you understand the building blocks. The key pieces are:
- Get Mail Tips for a Mailbox to check OOO status
- A boolean variable to branch your logic
- A SharePoint delegation list to look up the right backup approver
Once you have those in place, you can plug this pattern into virtually any approval process you’re building.
Here is the important part of the flow. I put it in a scope so that I can easily copy the whole scope to another flow and reuse. Watch the video to see the details of how every action is set up.

Want to learn more about building advanced approval flows in Power Automate? Check out my Power Automate Advanced course at iwmentor.com! And join us live every Wednesday at 11 AM Central for Power Hour at iwmentor.com/schedule. 🎉
You voted for this topic — keep voting for upcoming Power Hours by subscribing to the Power Hour newsletter!