By Sahil Kataria, Chief Executive Officer, QServices
Published June 12, 2026
Sahil Kataria is the CEO of QServices, a Microsoft Solutions Partner delivering AI agents and custom software for regulated industries. He leads enterprise AI strategy and FinTech delivery. LinkedIn ↗
Written from QServices' hands-on delivery work and reviewed by Rohit Dabra, Chief Technology Officer, QServices, before publishing.
A Power Automate approval workflow replaces email-and-spreadsheet approvals with a tracked, auditable flow: requests route automatically to the right approvers, every decision is recorded, and all parties are notified without manual follow-up. This guide, part of the QServices automation guides, walks you through building one end-to-end.
What you need before you start
Confirm the following before you create your first approval flow:
- Microsoft 365 account with Power Automate access. Standard flows using SharePoint, Teams, and Outlook run on the M365-included license. No additional purchase needed for those connectors.
- Power Automate Premium license: required if your flow connects to Dataverse or any premium connector. For the full connector list by license tier, see the Microsoft Power Automate licensing documentation. Budget this before you design the flow, not after.
- SharePoint list or Dataverse table to store requests. Know your site URL and list name. The trigger reads fields from this source and passes them into the approval action as dynamic content.
- Microsoft Teams configured, if you want approval cards delivered in Teams rather than Outlook. Approvers can respond directly from the Teams card without opening a browser.
- Approver list: names and email addresses for each stage. Sequential multi-stage approvals require the stage order to be defined before you start building.
- Owner or site admin rights on the SharePoint list, or System Administrator role in Dataverse, so the flow can write approval results back to the source record.
- Rejection path defined: decide whether a rejection returns to the requester with a reason, routes to a different approver, or ends the process. Leaving this undefined mid-build means rebuilding the branching logic later.
Step-by-step: automate approval workflows in Power Automate
- Map the current approval path. Before opening Power Automate, document who submits requests, who approves at each stage, and what the rejection path looks like. Draw this out explicitly, including what happens on a tie or partial approval. A clear map prevents discovering a missing approver or undefined rejection branch mid-build, which means rebuilding the branching logic from scratch.
- Choose the trigger. In Power Automate, create a new automated cloud flow and select your trigger: When an item is created (SharePoint), When a row is added (Dataverse), or When a new response is submitted (Microsoft Forms). Connect it to the specific list, table, or form collecting requests. The trigger determines which fields are available as dynamic content in every subsequent action.
- Add the Approvals action and configure the approval type. Add Start and wait for an approval from the Approvals connector. Choose Approve/Reject - Everyone must approve for sequential multi-stage sign-off, or Approve/Reject - First to respond for a single-approver stage. Set the Assigned to field using the approver's email address, which can be a dynamic value pulled from the request record. For multi-stage flows, chain multiple Approvals actions in sequence: each action starts only if the prior stage returns Approve, and each carries its own title (e.g., Stage 1: Department Head) so the Microsoft 365 Approvals hub stays readable.
- Branch on the outcome. After the Approvals action, add a Condition control. Set the left value to the approval Outcome field and the right value to
Approve. In the Yes branch, continue the process and update the source record's status field. In the No branch, send the requester a notification that includes the Response comments field so the rejection reason is always on record, not buried in an approver's inbox.
- Notify and record. In the approved branch, post an Adaptive Card to Microsoft Teams using Post a message in a chat or channel, and update the source SharePoint item or Dataverse row to reflect the approved status. Approval details (approver name, timestamp, and comments) are stored automatically by the Approvals connector and visible in the Microsoft 365 Approvals hub. Recording back to the source record means the audit trail is in the system of record, not just in email history.
- Handle reassignment, timeouts, and out-of-office. In the Start and wait for an approval action, set a Request expires value (48 or 72 hours is typical). Enable the Reassignment toggle so approvers can delegate to a colleague without contacting a flow owner. After the approval action, add a Condition branch that checks for the Timeout outcome and routes it to an escalation step, typically a manager email or a Teams alert, so no request stalls silently while an approver is out.
Choosing the right approval configuration
Power Automate's Approvals connector offers three built-in types. Picking the wrong one is the most common source of rework on early builds, since changing it later requires rewiring the branching logic.
| Approval type | How it works | Best for |
| Approve/Reject - First to respond | Any assigned approver can approve or reject; the first response closes the request for all approvers. | Low-stakes requests with a pool of approvers where speed matters more than unanimity |
| Approve/Reject - Everyone must approve | All assigned approvers must respond; one rejection closes the request as rejected regardless of other responses. | Financial sign-offs, compliance checkpoints, multi-department approvals requiring full consensus |
| Custom responses | You define the response options (e.g., Approve, Approve with conditions, Reject). The flow branches on the specific response text. | Procurement workflows where a conditional approval routes to a second review stage before final sign-off |
For multi-stage workflows, where a department head approves first and finance approves second, chain sequential Approvals actions rather than assigning multiple approvers to one action. Chaining gives each stage its own timeout window, comment field, and audit entry, making it straightforward to see exactly where a request is in the process at any point.
Where this gets tricky
Three problems appear regularly on approval flow projects, usually discovered after the flow is already running in production:
- Personal flows owned by one employee. Flows created under an individual Microsoft account stop running when that person leaves the organization or their license is removed. Any approval flow that handles a shared business process must run under a service account or a shared mailbox, not an individual's credentials. This also affects who receives error notifications if the flow fails.
- Premium connector licensing that was never budgeted. Flows connecting only to SharePoint, Teams, and Outlook run on the M365-included Power Automate license. The moment you add Dataverse, SAP, or any premium connector, every user whose actions trigger the flow needs a Power Automate Premium per-user license, or a per-flow license assigned to that specific flow. This cost is rarely part of the original request, and discovering it post-build creates delays.
- Approvals with no timeout. If an approver is on leave and no timeout is configured, the request sits in a pending state indefinitely with no visibility for the requester or their manager. Set an expiry window on every approval action and define an explicit escalation branch for the Timeout outcome so requests surface rather than disappear.
For exception cases where the right approval path depends on context a rule cannot encode, a human review point is necessary. QServices implements Human-in-the-Loop checkpoints at these junctures: the flow pauses, flags the item, and routes it to a named reviewer before continuing rather than forcing a binary outcome.
How QServices can help
QServices builds Power Automate approval workflows as part of our Power Automate development service. Most approval workflow projects fall in the 80 to 200 hour range for a straightforward multi-stage flow, and 200 to 600 hours when the flow integrates with ERP, CRM, or a custom data source. See our Power Automate cost guide for a full cost breakdown including premium connector licensing considerations.
Every flow we build runs under a service account, documents license requirements before any work starts, and includes timeout and reassignment handling by default, the three things most self-built flows omit. We also document the flow for the people who will maintain it after the build is done.
For a manufacturing client, we built a multi-warehouse inventory system with supervisor approval workflows at each stage, replacing spreadsheet-based tracking entirely:
Case Study
Manufacturing Inventory ERP Portal Integrated with Syspro (Hyspan)
Manufacturing and stocking company
Digitized full lifecycle of inventory operations with barcode and QR scanning, replacing error-prone spreadsheet tracking
Multi-warehouse management with FIFO/LIFO valuation, batch tracking, and supervisor approval workflows
Power Apps.NET Framework 4.7.2MySQLSyspro ERP
Typical timelines run 3 to 8 weeks depending on the number of approval stages and the systems involved.
Can a Power Automate approval flow handle more than two approvers?
Yes. Assign multiple approvers to a single Approvals action for parallel approval, where any one or all must respond depending on the type you choose, or chain multiple Approvals actions in sequence for multi-stage sign-off where each stage has a distinct approver set. Each sequential stage has its own timeout window and response comments field, giving you a clean per-stage audit trail. There is no hard limit on the number of stages a flow can include.
Ready to discuss your project?
Share your requirements with QServices. Our engineers will give you a straight answer on fit, timeline, and cost — no sales scripts.
Book a Free Consultation
Frequently Asked Questions
Do I need a Power Automate Premium license to build an approval flow? +
Standard approval flows using SharePoint, Teams, and Outlook work with the Microsoft 365-included Power Automate license. Adding Dataverse or any premium connector requires a Power Automate Premium per-user license for every user whose actions trigger the flow, or a per-flow license assigned to that specific flow. Check each connector's license tier before you design the flow, not after.
Can I use a SharePoint list as the trigger for a Power Automate approval flow? +
Yes. The When an item is created or When an item is modified trigger on a SharePoint list is the most common starting point for approval flows. The flow reads list fields such as requester name, amount, and department as dynamic content and passes them into the Approvals action. SharePoint-triggered flows run on the standard M365-included license with no premium license required.
What happens if an approver does not respond in Power Automate? +
Set a Request expires duration on the Start and wait for an approval action. When the time runs out, the Outcome field returns Timeout instead of Approve or Reject. Add a Condition branch that catches the Timeout outcome and routes it to an escalation step, typically a manager email or Teams alert, so the request does not sit indefinitely in a pending state.
How many approval stages can a Power Automate flow have? +
There is no hard limit. For multi-stage workflows, chain sequential Start and wait for an approval actions. Each action handles one stage with its own approver, timeout window, and response comments field. A later stage starts only if the prior stage returns Approve. This gives you a clean per-stage audit trail and independent timeout control for each approver in the process.
How does Power Automate store approval history for audit purposes? +
The Approvals connector records all responses automatically in the Microsoft 365 Approvals hub: approver name, decision, timestamp, and comments. You can also map the Outcome, Response summary, and Response comments outputs to update actions in your flow to write these values back to the source SharePoint list or Dataverse record, keeping the audit trail in your system of record.