Create approval workflow turning inbox requests into tracked decisions.
Power Automate mastery here means move from scattered admin to controlled, measurable workflows.. This guide is written for operations leaders, analysts using microsoft 365.
This draft was generated for the Power Automate track. Review content accuracy, add screenshots where useful, then mark it reviewed or publish it.
Who this is for
Operations leaders, analysts using Microsoft 365.
The business problem
Shared inbox approvals have no ownership or tracking.
Build the smallest repeatable workflow that removes friction first, then scale once the output is trusted.
Before you start
- Microsoft 365 with shared mailbox.
How to build it
1Set up your SharePoint audit list
Create a SharePoint list called "Approval Log" with these columns:
| Column | Type |
|---|---|
| RequestSubject | Single line of text |
| RequesterEmail | Single line of text |
| Amount | Currency |
| Decision | Choice (Approved/Rejected) |
| ApproverEmail | Single line of text |
| DecisionDate | Date/Time |
| Comments | Multiple lines of text |
2Create the Power Automate flow
- Go to make.powerautomate.com
- Create a new Automated cloud flow
- Trigger: When a new email arrives (V2)
- Set the mailbox address to your shared inbox
- Add a condition:
Subjectcontains"approval" (or your trigger keyword)
3Parse the email for request details
If your emails follow a template, use Parse JSON to extract fields:
{
"type": "object",
"properties": {
"amount": { "type": "number" },
"requester": { "type": "string" },
"description": { "type": "string" }
}
}
If no template, use expressions like:
float(replace(json(decodeBase64(triggerOutputs()?['body']['bodyPreview'])))?['amount'], '£', ''))
4Add the approval action
- Add Start and wait for an approval action
- Approval type: Approve/Reject - First to respond
- Title:
Approval Request: @{triggerOutputs()?['body']['subject']} - Assign to: your approver email (or use a dynamic value)
- Details: include the requester, amount, and description
5Log the decision
Add a Create item action (SharePoint):
- RequestSubject:
triggerOutputs()?['body']['subject'] - RequesterEmail: from your parsed JSON or email From
- Amount: from your parsed JSON
- Decision:
if(equals(outputs('Start_and_wait_for_an_approval')?['body']['outcome'], 'Approve'), 'Approved', 'Rejected') - ApproverEmail:
outputs('Start_and_wait_for_an_approval')?['body']['responder']['email'] - DecisionDate:
utcNow() - Comments:
outputs('Start_and_wait_for_an_approval')?['body']['comments']
6Send confirmation back to requester
Add a Send an email (V2) action:
- To: requester email
- Subject:
Your request has been @{outputs('Start_and_wait_for_an_approval')?['body']['outcome']} - Body: Include decision, approver comments, and any next steps.
Common mistakes
Watch out
Automating without audit logging.
What good looks like
Approval flow with trail.
Next steps
Once the first version is trusted, fold it into the weekly or daily operating routine that owns the outcome. A guide without a standing cadence becomes a forgotten document.
Relevant Digital Adaption links
Planned next guides in this track
- How to Build a Supplier Chase Workflow in Power Automate
- How to Automate a Daily Operations Pack with Power Automate
Need this built for your business?
If you need the workflow mapped, validated, or turned into a working report/app/process, use the linked service page to start the conversation.
Book a fractional delivery slotFrequently Asked Questions
The best owner is the person who understands both the business pain and the operational decision that must improve after the guide is used.
Run the proposed steps against a handful of live examples, then confirm the output with the team that already trusts the current process or source system.
It should answer a real operational problem with a repeatable workflow, clear ownership, and an outcome the reader can measure.