If you pay for Microsoft 365, you own Power Automate, and most companies never touch it. That is a shame, because the classic first use case takes about half an hour: someone submits a request, the right person gets an approval on their phone, and everyone gets an email with the outcome. No more "did you see my email about the PTO request?"
In this guide we will build exactly that. Someone adds an item to a SharePoint list (a purchase request, a PTO request, whatever yours is), a manager approves or rejects it from Teams or email, and the flow emails the requester the result. By the end you will have a working approval flow and, more usefully, you will understand the trigger, action, and condition pattern that every other flow is built from.
Prerequisites
- A Microsoft 365 business account. Power Automate is included; this flow uses only standard connectors, so no extra license is needed.
- A SharePoint list to act as the request form. We will use one called Purchase Requests with columns for Title, Amount (number), and Justification (multiple lines of text). Create it on any site you have access to: from the site home page, choose New, then List.
- Ten minutes of an approver's time to test with. You can approve your own requests during testing.
Step 1: Create the flow and pick the trigger
Go to make.powerautomate.com and sign in with your work account. In the left menu choose Create, then Automated cloud flow. Automated means the flow starts by itself when something happens, as opposed to a button you press or a schedule.
Name it something you will recognize in a year, like Purchase request approval. In the trigger search box type SharePoint and pick When an item is created. Click Create.
The designer opens with your trigger as the first block. Click it and fill in two fields: Site Address (pick your site from the dropdown) and List Name (pick Purchase Requests). That is the whole trigger: any new item in that list now starts a run of this flow.
If your requests come from a Microsoft Form instead of a list, the only difference is the trigger: use When a new response is submitted from the Forms connector, followed by Get response details. Everything after this point is identical.
Step 2: Add the approval action
Click the + under the trigger and choose Add an action. Search for approval and pick Start and wait for an approval. The "and wait" part matters: the flow pauses here, for days if it has to, until a human responds.
Fill in the fields:
- Approval type: choose Approve/Reject - First to respond. If you list several approvers, the first response settles it. The "Everyone must approve" option exists for when you need all signatures.
- Title: this is the subject line the approver sees. Make it self-explanatory. Type
Purchase request:and then, from the dynamic content panel (the lightning-bolt icon on the field), insert Title from the trigger. Dynamic content is how you pull values from earlier steps into later ones; you will use it constantly. - Assigned to: the approver's email address. Start with yourself for testing.
- Details: the body of the approval request. Something like
Amount:plus the Amount dynamic content, a new line,Justification:plus the Justification field, andRequested by:plus Created By DisplayName.
The approver will get this in email, in the Teams Approvals app, and on their phone, with Approve and Reject buttons and a comments box. You build it once; Microsoft handles the delivery.
Step 3: Branch on the outcome
Add another action below the approval. Search for condition and pick Condition from the Control group. A condition is an if/else: it checks a value and splits the flow into a True branch and a False branch.
Click the left value box and, from dynamic content under the approval step, choose Outcome. Leave the middle dropdown as is equal to. In the right box type Approve. Spell it exactly like that, capital A, because the comparison is literal. The approval action returns the string Approve or Reject, and this condition sends approved requests down the True branch.
Step 4: Send the outcome emails
In the True branch, add an action, search for send an email, and pick Send an email (V2) from the Office 365 Outlook connector.
- To: from dynamic content, pick Created By Email so the reply goes to whoever made the request.
- Subject:
Approved:plus the Title dynamic content. - Body: a short note, plus Responses Comments from the approval step so the requester sees anything the approver wrote, like "approved, use the Amazon business account."
Now do the same in the False branch with a rejection email: Not approved: plus Title, and definitely include the comments, because "rejected" with no reason generates a walk to someone's desk.
If you want a paper trail on the list itself, add one more action in each branch: SharePoint's Update item, setting a Status column to Approved or Rejected. Then the list doubles as your log.
Click Save in the top right.
Step 5: Test it
Use the built-in tester. Click Test in the top right, choose Manually, then go add an item to your Purchase Requests list. Within a few seconds the test view lights up each step with a green check as it runs, then stops at the approval and waits.
Check your inbox or the Approvals app in Teams, approve your own request with a comment, and watch the flow finish: condition goes True, email goes out. Then submit a second item and reject it to prove the False branch works too. If a step fails it shows a red X; click it and the run history shows the exact inputs and outputs, which makes most failures obvious (a typo in the condition value is the classic).
Wrap-up
Once both branches have passed, swap the Assigned to field from your address to the real approver and tell the team the list is live. You now have the pattern behind nearly every business flow: a trigger fires, actions run, a condition branches, and dynamic content carries data between steps. The same skeleton handles invoice sign-offs, new-hire equipment requests, and content review. Change the list, change the approver, ship another one.
Stuck on this, or want it done for you? That's the job.
Email us →