SharePoint PTO tracker: request, approve and see who is out
Short answer: build one SharePoint list for time-off requests, add a Calendar view so the team sees who is out, and add a Power Automate flow that sends each request to the manager. Keep day balances in a second list that only HR and managers can open. This page builds all three, then covers what to do on January 1.
This is a build guide. If your problem is that requests are scattered across email and chat today, start with "Time-off requests in email: one list, one approver, one calendar" and come back here when you are ready to build.
What you build
- A Requests list. One row per request.
- A Calendar view on that list. It shows each request as a span of days.
- An approval flow. It starts when a request is created, asks the manager, and writes the answer back to the row.
- A Balances list. One row per employee per year. It holds days granted, days carried over and days left.
Microsoft's approvals page lists "Approving vacation time requests" as a use of approvals. Its tutorial builds the same shape of flow from a vacation-request list.
Step 1. Create the Requests list
Open Microsoft 365 and create a blank list on the team site. Exact names may differ on your screen. Use these columns.
- Title. Use it for a request ID such as PTO-0412.
- Employee. Type: Person.
- Start date. Type: Date and time. Date only.
- End date. Type: Date and time. Date only.
- Leave type. Type: Choice. Our advice, not a Microsoft rule: keep the names the same as your HR policy.
- Status. Type: Choice, with the values 1 Requested, 2 Approved, 3 Declined.
- Manager. Type: Person.
- Manager comments. Type: Multiple lines of text.
Microsoft's approval tutorial uses these columns for its vacation list: Title, Start Date, End Date, Comments, Approved (Yes/No) and Manager Comments. Yours is the same idea with a Status choice in place of the Yes/No column.
Step 2. Add the team calendar view
Microsoft's page says any list or library with a date column can be viewed as a calendar. Follow its steps.
- In the command bar at the upper right, choose Add view.
- Give the view a name, for example Team calendar.
- For Show as, choose Calendar.
- Set Start date to your Start date column and End date to your End date column. Microsoft says that with two dates, each date column gets one setting and each item shows as a span of days.
- Open More options and pick the column that labels each entry. Pick Employee.
- Choose Create.
To make it the first thing people see, select the view name and then select Set current view as default.
Our advice, not a Microsoft rule: add a filter to this view so only Approved requests show. Then the calendar shows who is actually out, not who has asked. Open Edit current view and filter Status to 2 Approved. See "SharePoint calendar overlay will not show another list" if you plan to lay this calendar on top of another one.
Step 3. Build the approval flow
Microsoft's approvals tutorial builds a flow that starts when someone creates a vacation request in a SharePoint list, sends it to an approver, emails the requester the decision and writes the decision back to the list. Follow that shape.
- Sign in to Power Automate. Select My flows, then New flow, then Automated cloud flow.
- Name the flow. Under Choose your flow's trigger, select When an item is created - SharePoint, then select Create.
- Open the trigger. Select your Site Address and List Name.
- Add an action. Search for approval and select Start and wait for an approval, found under Standard approvals.
- In Approval type, select Approve/Reject - First to respond. Microsoft says any one approver's answer completes the request with this type. Use Approve/Reject - Everyone must approve only if two people must both sign.
- In Title, enter a title. In Assigned to, enter the manager's email address. Microsoft says the request goes to the address in Assigned to. In Details, build the sentence from the Employee, Start date and End date values.
- Add a Condition. Set the first field to the Responses Approver response value, choose is equal to, and type Approve. This is the check Microsoft's tutorial uses.
- In the True branch, add Send an email (V2) to tell the requester. Then add the SharePoint action Update item. Set Status to 2 Approved and Manager comments to the approver's comments.
- In the False branch, add Send an email (V2) and Update item. Set Status to 3 Declined.
- Select Save.
Microsoft says the Site Address, List Name, Id and Title fields are required on the Update item card.
Who can approve: Microsoft says the approvals connector is a standard connector, so any license that grants access to Power Automate and standard connectors is enough to create approval flows. It also says approvers can answer from an Outlook email, a Microsoft Teams adaptive card or the Power Automate action center, if they have a license that includes Power Automate.
Loop guard. This flow runs on item created, and the Update item step edits the same row. Microsoft's SharePoint connector page describes When an item is created as triggering when an item is created, and When an item is created or modified as triggering when an item is created and also each time it is modified. So if you switch the trigger to When an item is created or modified, the Update item step starts the flow again. Our advice, not a Microsoft rule: then add a Yes/No column named Decision sent. Have the flow check that it is not Yes before it asks the manager, and set it to Yes in the same Update item step. For a longer look at this problem, see "Power Automate flow keeps running itself over and over".
If the manager does not answer: Microsoft says that if a flow might run more than 30 days, you store approvals in Microsoft Dataverse with two flows. For a time-off request, the better fix is a person who covers when the manager is away. See "Approvals stuck when the approver is out".
Test it. Create one request in the list. Microsoft says the flow then creates a request in the approvals center and emails the approver.
Step 4. Keep balances private
Day balances are personal data. Do not put them on the list that everyone sees.
- Create a second list named Balances. Columns: Employee (Person), Year (Number), Days granted (Number), Days carried over (Number), Days taken (Number).
- Open the list. Select Settings, then List settings, then Permissions for this list.
- Select Stop Inheriting Permissions. Microsoft's page names this button for breaking inheritance from the parent.
- Remove the groups that should not see balances and keep only HR and managers.
Microsoft's page says that while it is not recommended, breaking inheritance "is a supported scenario within reasonable use." It recommends managing team site permissions through the site's Microsoft 365 group. It also says removing permissions has a lasting effect: "Restoring them will not be possible." Ask your admin before you change permissions on a list that others use.
If you want every person to see only their own balance row, see "Let each person see only their own items in a SharePoint list".
Step 5. Plan the January 1 carryover
Your carryover rule comes from your own HR policy. I do not set it for you, and I do not give HR or legal advice. What the list can do is hold the numbers.
- In late December, create one new row per employee in Balances with Year set to the new year.
- Enter Days carried over from the old row, using whatever limit your policy sets.
- Keep the old rows. Do not overwrite them. Our advice, not a Microsoft rule: last year's numbers are the proof when someone asks.
- Total the days taken from the Requests list. See "Show totals at the bottom of a SharePoint list" for a view that adds a column.
Our advice, not a Microsoft rule: add a Days column (Number) to Requests. Half days and weekends then count the way your policy says. The calendar view does not count days for you.
Troubleshooting
- A request shows on the calendar but the status is still 1 Requested: check the flow run history. Open My flows, open the flow, and look at the latest run.
- The flow ran but no one got the email: check the address in Assigned to. See "Approver never gets the Power Automate approval email".
- The Update item step fails: Microsoft says Site Address, List Name, Id and Title are required. Check that the Title is filled in.
What to avoid
- Do not collect requests in email and re-type them. The list is the record.
- Do not show balances on the team calendar.
- Do not store the approval answer only in the approver's inbox. Write it back to the row.
When to get help
You can build all of this yourself in Microsoft 365. If you would rather have it built and tested for your team, I do that. A tracker like this is a fixed price: $5,000 for one, built in 2 weeks. See "What a SharePoint tracker costs to build". Bring one example of the problem to a free call.
I am Al Davies. I run 250 High Street LLC and build SharePoint trackers and Power Automate flows for operations teams. I work remotely. The first call is free, and I will not try to sell you anything.
See trackers I built: Tools I built
FAQ
How do I make a PTO tracker in SharePoint?
Make a list with Employee, Start date, End date, Leave type and Status columns. Add a Calendar view, then a Power Automate approval flow.
Can I see who is on vacation in a SharePoint calendar?
Yes. Microsoft says any list with a date column can be shown as a calendar. Pick Start date and End date and the request shows as a span of days.
Can SharePoint send a time-off request to my manager for approval?
Yes. Microsoft's approvals tutorial builds this with the Start and wait for an approval action, started by When an item is created.
Do I need a special license for the approval flow?
Microsoft says the approvals connector is a standard connector, so a license that grants Power Automate access and standard connectors is enough. Check your own plan with your admin.
Can the PTO list use Microsoft Lists instead of a SharePoint site?
Yes, if the list is saved to a SharePoint site. Microsoft says all lists are saved to SharePoint and that personal lists cannot be added to Teams.
Sources
- Microsoft Learn, SharePoint connector
- Microsoft Support, Create a calendar view from a list
- Microsoft Learn, Create and test an approval workflow with Power Automate
- Microsoft Learn, Get started with Power Automate approvals
- Microsoft Support, Customize permissions for a SharePoint list or library
- Microsoft Support, Get started with Lists in Teams