Someone submits a request. The right person says yes or no. The answer gets recorded, and everyone who needs to know finds out. That's an approval workflow — and in Power Automate you can build one in an afternoon, without writing code and, in most cases, without buying a single extra license.
Most companies run approvals over email, which means they don't really run them at all. Requests get buried, nobody knows whose turn it is, and the only audit trail is a thread someone will delete in six months. When the person who approves invoices goes on holiday, everything stops and nobody notices until a supplier calls.
This guide walks through the whole build, step by step: the trigger, the Approvals action, single vs sequential vs parallel approvers, reminders and escalation, writing the outcome back, and notifying people in Teams — plus the pitfalls that stall real-world flows and the licensing question everyone asks.
What you need before you start
The list is short, and only the last item is hard:
- A Microsoft 365 subscription that includes Power Automate — most Business and Enterprise plans do
- Somewhere for requests to live: a SharePoint list or document library, or a Microsoft Form
- A clear answer to one question: who approves what, and in what order
The software is the easy part. If two managers both think they sign off on purchases, no flow will fix that — settle the question before you open the designer.
01Choose your trigger
Where the workflow beginsEvery flow starts with a trigger — the event that wakes it up. For approvals there are two natural choices:
- When an item is created (SharePoint) — use this when the thing being approved already lives in SharePoint: a document dropped into a library, or a request added to a list. Document approvals almost always start here.
- When a new response is submitted (Microsoft Forms) — use this when people need a simple front door: expense claims, leave requests, access requests. Add the "Get response details" action right after the trigger so the answers become fields you can use.
A good rule of thumb: if you're approving a document, trigger on the library it lands in. If you're approving a request, collect it with a form or a list so the data arrives structured instead of buried in an email.
02Add the Approvals action
The engine of the whole flowAdd the "Start and wait for an approval" action. This is the heart of the workflow: the flow pauses here, sends the request to the approver, and does nothing else until someone responds. Fill in four things:
- Approval type — "Approve/Reject – First to respond", "Approve/Reject – Everyone must approve", or custom responses if you need options beyond yes and no
- Title — what the approver sees first, so make it specific: "Purchase request: new laptop for the Sydney office"
- Assigned to — who decides (more on this in the next step, and again in the pitfalls)
- Details and item link — the context the approver needs to decide without emailing anyone, plus a link straight to the document or item
The approver gets the request three ways at once: an actionable email, the Approvals app in Teams, and the Power Automate portal. They can approve from a phone in a lift.
03Pick single, sequential or parallel
Match the flow to the decisionThis is where most people overcomplicate things. There are only four patterns, and the simplest one that matches how the decision is actually made is the right one:
| Pattern | How it works | Use it for |
|---|---|---|
| Single approver | One person — or the first to respond from a group — decides for everyone. | Everyday requests: leave, small purchases, document sign-off. |
| Everyone must approve | All named approvers respond; one approval action waits for them all. | Decisions that need consensus: policy changes, contract terms. |
| Sequential | Chain approval actions one after another — stage two only starts if stage one approves. | Manager first, then finance; spend thresholds that escalate. |
| Parallel branches | Separate branches run at the same time; the flow continues when all are done. | Independent reviews — legal and IT checking the same document. |
Sequential approval is nothing exotic: it's literally two "Start and wait" actions stacked, with a condition between them that checks the first outcome. If the manager rejects, the flow updates the record and stops — finance never sees it. Start with a single approver and add stages only when the process genuinely demands them.
04Add reminders and an escalation route
Because people ignore emailHere's the honest bit nobody puts in tutorials: approvers ignore approval emails exactly the way they ignore every other email. A flow with no reminder plan just moves the bottleneck from an inbox into Power Automate.
Two mechanisms fix it. First, open the settings on the approval action and set a timeout — how long the flow waits before giving up on this approver. Second, use "Configure run after" on the next action so that when the timeout fires, the flow doesn't just die: it escalates to the approver's manager, or reassigns to a backup group, or at minimum tells someone a request is going stale.
For gentler nudges before the deadline, add a parallel branch with a Delay action that sends a reminder if the approval is still pending after a couple of days. And know the hard limit: a flow run won't wait forever — after roughly thirty days it times out and the request dies silently. Every approval flow needs an answer to "what happens if nobody responds?", because eventually nobody will.
05Write the outcome back
Your audit trail lives hereWhen the approval completes, don't let the result evaporate into email. Add a Condition that checks whether the outcome equals "Approve", and in each branch use "Update item" (or "Update file properties") to stamp the record: status set to Approved or Rejected, who responded, when, and any comments they left.
This one step is what turns a convenience into a system. The SharePoint list becomes the audit trail — anyone can check the status of any request without asking, and when someone questions a decision a year later, the answer is a filter away, not a mailbox archaeology project.
06Notify the team in Teams
Close the loopFinish with the "Post message in a chat or channel" action. At minimum, message the requester with the outcome and any comments — the difference between a process people trust and one they route around is whether they ever find out what happened. For visibility, post approved requests to a channel: a running feed of "approved: X, by Y" quietly kills the "what happened to my request?" messages.
Approvers already see pending requests in the Approvals app inside Teams, so the whole workflow — request, decision, notification — can live in the tools your team already has open.
The pitfalls that actually stall flows
These four account for most of the broken approval flows we're asked to rescue.
The leaver problem
An approval assigned to a named person stalls the day that person leaves. The account is disabled, the approval sits unanswered, nobody is notified, and requests pile up invisibly. Months later someone asks why purchases stopped going through.
Assign approvals to a Microsoft 365 group or security group, not an individual. Anyone in the group can respond, and when people join or leave the group membership changes — the flow doesn't. The same applies to flow ownership: a flow owned solely by a leaver gets orphaned, so add a co-owner or run it under a service account.
No error handling
By default, a failed action just stops the flow. The requester assumes it's in progress, the approver never saw it, and the failure email — if anyone gets it — goes to whoever built the flow two years ago.
Use "Configure run after" to add a failure branch that posts to a Teams channel or emails a shared mailbox when something breaks. Ten minutes of work, and failures become visible the day they happen instead of the month they're discovered.
Hard-coded people everywhere
Flows that name specific approvers in a dozen places become maintenance traps — every reorganisation means editing every flow, and the one you miss is the one that matters.
Look people up instead of naming them. The "Get manager (V2)" action finds the requester's manager from your directory, and groups handle the rest. The org chart should live in Microsoft 365, not inside your flows.
No timeout, no plan B
A flow that assumes every approver responds promptly is a flow that will eventually strand a request. The default behaviour — wait until the run expires, then fail silently — is the worst possible outcome.
Every approval action gets a timeout, and every timeout gets a destination: escalate, reassign or alert. If you can't say what happens when nobody responds, the flow isn't finished.
Do you need premium licensing? Usually not.
This surprises people, so it's worth being plain: everything in this guide runs on standard connectors. The SharePoint trigger, the Forms trigger, the Approvals action, the Outlook and Teams notifications — all included in most Microsoft 365 Business and Enterprise plans. A document approval workflow for a team already on Microsoft 365 typically costs nothing extra to run.
Premium licensing only enters the picture when a flow reaches outside that boundary: premium connectors like SQL Server, Dataverse or Salesforce, calling external systems over HTTP, custom connectors, or desktop automation. If someone quotes you extra per-user licensing for a plain SharePoint approval flow, ask them to point at the premium connector — there usually isn't one.
When to build it yourself — and when to get help
If your process is one stage and one list — a leave request, a document sign-off — build it yourself. Follow the six steps above, test it with a colleague, and you'll have something genuinely useful by the end of the day. There are more practical guides like this one on our blog, including a look at the Microsoft 365 tools you're already paying for.
It's worth bringing in help when the stakes or the complexity climb: multi-stage routing that depends on amounts or departments, approvals that have to update finance or HR systems, compliance requirements where a missed sign-off has real consequences, or a tangle of a dozen half-built flows nobody fully owns. That's exactly what our Power Automate workflow service covers — scoped, built, documented and handed over with your team trained to run it. If you're not sure which side of that line you're on, ask us — it's a five-minute conversation.
Want your approval workflow built properly the first time?
Book a free 30-minute call. We'll map your approval process, tell you exactly which patterns and connectors it needs — and whether it needs any extra licensing at all. No obligation.
Book a free 30-min call →Frequently asked questions
Do I need a premium Power Automate license for approval workflows? +
Usually not. The Approvals action and the SharePoint, Forms, Outlook and Teams connectors are all standard connectors, included in most Microsoft 365 Business and Enterprise plans. Premium licensing only enters the picture when a flow uses premium connectors — SQL Server, Dataverse, HTTP and similar — or robotic process automation.
What happens to an approval assigned to someone who has left the company? +
It stalls. The approval sits on a disabled account, nobody is notified, and the request quietly waits until the flow run times out. Assign approvals to a Microsoft 365 group or security group instead of a named person, add an escalation branch with a timeout, and give every flow a second owner or a service account.
Can I have more than one approver in a single flow? +
Yes. The Approvals action supports first-to-respond and everyone-must-approve modes for a group of approvers, you can chain approval actions one after another for sequential sign-off, and parallel branches let several people review at the same time. Pick the simplest pattern that matches how the decision is really made.