logo
Forms
Sep 23

Set up SharePoint approval flows in Power Automate with multiple approvers, sequential approvals, and external users

Customer Support Engineer

Power Automate offers a variety of tools for creating approval workflows, including a number of ways to trigger the flow. In this article, we'll focus on two scenarios:

  • Internal approval requests: when a SharePoint form is submitted, create a new list item and trigger the flow
  • External approval requests: since SharePoint doesn't allow external users to create or modify list items, we'll use the free plan of Plumsail Public Forms, which connects directly to SharePoint

We'll also look at advanced scenarios such as:

  • Adding multiple approvers
  • Setting up sequential approvals
  • Handling rejections with requested adjustments and resubmissions

In case the default SharePoint forms don't work for you (e.g., the form has to be filled in by someone outside of your organization), you can modify the setup to use Plumsail Public Forms. More on that later.

In this article:

SharePoint list approval flow for internal requests

In this use case, both the requester and the approver are members of our organization. We can use a default SharePoint form to add an item to the purchase request list, but first, we need to set up said list.

Set up the SharePoint list for approval workflow

Navigate to the home page of your SharePoint site and create a new list. Add all the columns a purchase request should have, but skip on Requester and Approval status. We will enable item approvals separately in list settings and use the default Created By field to track the requester.

List columns  

To enable item approvals, first open list settings.

List settings  

Then, versioning settings.

Versioning-settings  

And finally, tick the Require content approval box.

Content-approval  

That's it, the SharePoint list is all set.

Set up the Power Automate flow for SharePoint list approval

Here's what we will build by the end of this section:

Full approval workflow  

This Power Automate flow will create a form approval request for each new item added to the list we've just configured, then send a message to the item's creator if the request was denied.

First things first, create a new Automated cloud flow.

New flow  

Choose a fitting name and pick When an item is created SharePoint action as the trigger:

Choose trigger  

After the flow is created, you need to set up the trigger action. Simply enter the names of the SharePoint site and list. If you're doing this for the first time, you'll have to log in with your SharePoint account.

When an item is created  

If you try to add a new action to the flow and put "approval request" into the search box, you will notice that an approval request can be created by three different actions:

Alternative actions  

Unfortunately, Create an approval request for an item doesn't allow us to get the approval result in the same flow. We need to use one of the Standard approvals, and I chose Start and wait for an approval as the most convenient one.

The customization of this action is generally very intuitive, but pay attention to the Approval type and Assign to properties. In this example, Approval type should be First to respond.

Start and wait for an approval  

Now we need to change the flow behavior depending on the approval result. A Condition block is ideal for this:

Add condition  

Inside the Condition, simply check that the approval outcome is equal to "Approve". Note that the outcome is a string, so the word must be spelled exactly as in the screenshot.

Condition  

Add a Set content approval status to each branch of the condition. Use the item ID from the trigger action. For True, the Action property should be Approve. For false, it should be Reject.

Set status  

Now it's time to notify the item's creator that they need to change the item if it was rejected.

I'll use Microsoft Teams for this example, but you can do this via email, mobile notification, or even SMS.

Post message in a chat or channel  

Pick Flow bot in the Post as dropdown, Chat with Flow bot in Post in, and the email of the person you want to be notified. I will use the item creator's email:

Post message in a chat or channel  

If you try to add the approver's comments to the body of the message, you will notice that the action gets automatically wrapped in a For each cycle. This is because there might be several approver comments, which means that they can't be processed in a single action.

Automatic For each  

To fix this, we need to save all comments in a variable before inserting them into the message. Add an Initialize variable action before the condition block, making sure you choose String as its Type. You can put anything into the Name field, I'll use Comments:

Initialize variable  

Add an Append to string variable action to the flow and pick the name of your variable from the Name dropdown. The Value should be Responses Comments from the approval action. Make sure to add </br> at the end, this way each next comment will start with a new line.

Append to string variable  

That's it, add the variable contents to the Teams message, and the flow is ready to go:

Add comments to Teams message  

If you like instructions in video format better, feel free to follow along with this great video by Vlad Catrinescu.

   

Power Automate form approval for external requests with Plumsail Public Forms

If you need a workflow for external purchase requests, standard SharePoint forms won't do. Giving every requester access to your tenant is unsafe and impractical. Thankfully, Plumsail Forms allows external users to create new SharePoint items without exposing your tenant.

Set up the web form in Plumsail Forms

Go to plumsail.com to create a free account in the Plumsail Public Forms app. Create a new form and connect to your SharePoint list in Connection settings. Make sure to switch on the "Allow editing records" option.

Connect to SharePoint  

Now you can drag and drop the fields from the SharePoint list to your new form. Arrange them however you like and save the form.

Drag and drop  

After a review, it will become accessible to anyone with the link:

Form URL  

Now that the form is set up, anything the user submits will automatically appear in SharePoint. The good news is that this will also trigger the flow we've already set up, so you don't have to make any adjustments to it.

Advanced approval workflows in Power Automate

Let's take a look at some more advanced use cases that can be implemented without much sweat.

Power Automate approval flow with multiple approvers

What if you need a SharePoint approval workflow with multiple approvers?

Don't fret, you can change how many of the reviewers need to approve the item in order for the request to come through. Go back to the flow and adjust the Approval type property of the Start and wait for an approval action:

Change approvers  

SharePoint list sequential approval workflow in Power Automate

In many cases, it's not enough to get the green light from just one approver. For example, some requests need to be pre-approved before being reviewed by higher management. For these cases, you can use sequential approvals.

You can modify the flow from the previous example by changing Approval Type to Sequential Approval in the Start and wait for an approval action. After that, enter the work email of each assignee into the list, starting with the one who should receive the request first.

Set up sequential approval  

Now, when a new item is added to the list and the flow triggers, an approval request will be sent to the first assignee. If the item gets approved, another request will be sent to the second one, and so on.

The body/outcome variable that we check inside the condition block will be true only if every assignee approves.

Condition check  

Handling rejections and resubmissions in approval workflows

The flows we've built so far will only trigger when an item is created. This means that if the item is rejected and later modified according to the feedback, Power Automate will not generate a second approval request for it. To fix this, we need to trigger the flow not only when an item is created, but also when it is changed.

Unfortunately, Power Automate doesn't allow a flow to have multiple triggers, unlike some alternatives (e.g., make.com). We can't use Item is created and Item is modified in the same flow.

We will have to use the submission of the Plumsail form as a trigger, since this event is the same regardless of the item being modified or created. This way, any modification of the SharePoint list will trigger sequential approval requests.

Make a copy of the flow from the Set up the Power Automate flow section, but use the Plumsail Form is submitted trigger action when creating the flow:

Form is submitted  

Once you get to configuring the Teams notification, add an item edit link found in the form settings of your Plumsail account to the message body.

Copy form link  

You can simply replace the {itemID} with @{triggerBody()?['ID'] in the body of the link, or wrap the link in an tag if you're feeling fancy.

Here's an example of how your link might look: Item "@{triggerBody()?['Title']}"

Message link  

And here's the resulting link in the Teams message:

Teams message  

When to use which approval workflow

For simple internal requests, the flow with a single approver should be enough. Add more approvers if your workflow doesn't require an approval from a specific person.

For more complex approval workflows, consider using sequential approvals.

Finally, if you need to allow external users to create approval requests, like vendors or clients, then use Plumsail Public Forms instead of the default SharePoint forms.

Try Plumsail Forms for approval workflows

There's a lot more to Plumsail Forms than the SharePoint integration. For example, the app integrates with Airtable and Zapier.

Create a free Plumsail account and follow this guide to build your first form.

Happy automation!