PowerLens
All posts
Power AutomateJune 15, 2025· 4 min read

How to Build a Complete Approval Workflow in Power Automate: A Step-by-Step Guide

J

Juan Carlos Santiago

How to Build a Complete Approval Workflow in Power Automate: A Step-by-Step Guide

Introduction

Approval workflows are among the most requested automation scenarios in enterprise environments. Whether you're managing document approvals, expense reports, or purchase requests, Power Automate makes it straightforward to build robust approval processes. In this guide, I'll walk you through building a complete approval workflow from scratch, including multi-level approvals and proper notification handling.

Step 1: Setting Up Your SharePoint List

Before creating the workflow, establish a solid foundation in SharePoint. Create a list with these essential columns:

  • Title (default)
  • Requestor (Person or group)
  • Amount (Currency or Number)
  • Description (Multi-line text)
  • Approval Status (Choice: Pending, Approved, Rejected)
  • Approver Comments (Multi-line text)

This structure ensures you have all necessary information captured before approval routing.

Step 2: Creating the Trigger

Start by creating a cloud flow triggered when items are created in your SharePoint list:

  1. Go to Power Automate and select "Create" → "Cloud flow" → "Automated cloud flow"
  2. Choose "SharePoint - When an item is created"
  3. Select your Site and List
  4. Name your flow descriptively, such as "Approval Workflow - [List Name]"
Trigger: When an item is created
Site: [Your SharePoint Site URL]
List: [Your List Name]

Step 3: Adding the Approval Action

The core of any approval workflow is the Approval action. Add it after your trigger:

  1. Click "New step" and search for "Approval"
  2. Select "Start and wait for an approval"
  3. Choose approval type: "Approve/Reject - First to respond" (most common)
  4. Configure these fields:
    • Approval type: Approve/Reject - First to respond
    • Title: Create a meaningful summary (e.g., "Approval Required: [Title]")
    • Assigned to: Select your approver (can be dynamic using expressions)
    • Details: Include relevant information from the trigger
Title: Approval Required: @{triggerOutputs()['body/Title']}
Assigned to: [email@company.com]
Details: Amount: @{triggerOutputs()['body/Amount']} | Requestor: @{triggerOutputs()['body/Requestor']?['DisplayName']}

Step 4: Handling Approval Responses

Now comes the critical part—handling what happens after approval. Add a conditional action:

  1. Click "New step" and add "Condition"
  2. Set up the condition: If the Approval Response equals "Approve"

For Approved Items:

In the "If yes" branch:

  • Update the item status to "Approved"
  • Send approval notification email
  • Trigger any downstream processes

For Rejected Items:

In the "If no" branch:

  • Update the item status to "Rejected"
  • Add approver comments
  • Send rejection notification with feedback

Step 5: Sending Notifications

Proper communication is essential. Add Send an email action in both branches:

For Approval:
To: @{triggerOutputs()['body/Requestor']?['Email']}
Subject: Your Request Has Been Approved
Body: Your request "[Title]" has been approved by the approver.

For Rejection:
To: @{triggerOutputs()['body/Requestor']?['Email']}
Subject: Your Request Requires Revision
Body: Your request "[Title]" was not approved. Comments: @{body('Start_and_wait_for_an_approval')['comments']}

Step 6: Updating SharePoint Item Status

After sending notifications, update your SharePoint item with the decision:

  1. Add "Update item" action in both approval branches
  2. Set Approval Status field to "Approved" or "Rejected"
  3. Set Approver Comments field (copy from approval response)
  4. Optionally update a Approval Date field
Update Item Settings:
Site: [Same as trigger]
List: [Same as trigger]
Id: @{triggerOutputs()['body/ID']}
Approval Status: Approved
Approver Comments: @{body('Start_and_wait_for_an_approval')['comments']}

Multi-Level Approvals

For workflows requiring multiple approval levels, extend your process:

  1. Add sequential conditions for approval tiers based on thresholds (e.g., amounts)
  2. Use dynamic approver assignment with expressions to route to appropriate managers
  3. Create nested conditions for each approval level
  4. Track approval history by adding timeline entries to a separate list

Example structure:

  • Amount < $5,000 → Manager approval only
  • Amount $5,000-$50,000 → Manager + Director approval
  • Amount > $50,000 → Manager + Director + VP approval

Use the "Parallel approval" type for simultaneous approvals or "Serial approval" for sequential approvals.

Best Practices

  • Always include context in approval titles and details
  • Set timeout policies (default 30 days) to prevent stuck approvals
  • Add error handling with "Configure run after" for failed email sends
  • Use descriptive variable names for maintainability
  • Test with sample data before deploying to production
  • Monitor flow runs regularly for failures or performance issues

Pro Tip

Create a companion flow that sends reminder emails if approvals aren't completed within 48 hours. Use a scheduled flow that queries items still in "Pending" status and sends nudges to approvers. This dramatically improves approval turnaround times and prevents bottlenecks in your business processes. Additionally, implement approval analytics by logging all approvals to a separate tracking list—this provides valuable insights into approval patterns and cycle times across your organization.

#power-automate#approval-workflow#sharepoint#automation#business-process