How to Build an Attendance Tracker Using Power Apps, SharePoint, and Power Automate

Share
How to Build an Attendance Tracker Using Power Apps, SharePoint, and Power Automate

How to Build an Attendance Tracking Canvas App Using Power Apps, SharePoint, and Power Automate

Attendance tracking sounds simple until the organization grows.

At first, a spreadsheet, paper sign-in sheet, or email update may feel enough. But once employees work from different locations — office, remote, hybrid, and field sites — manual attendance tracking becomes difficult to manage.

Supervisors lose visibility. HR spends time cleaning records. Employees forget to check out. Missing attendance entries create reporting issues. Field workers may need location-based check-ins. Managers need a faster way to know who is present, late, absent, or missing check-out.

This is where Microsoft Power Platform can make a real business impact.

In this guide, we will walk through how to build an Attendance Tracking Canvas App using Power Apps, SharePoint, and Power Automate.

The app will allow employees or supervisors to check in, check out, record attendance status, capture location when needed, view attendance history, and send automated reminders for missing check-outs.


Why Build an Attendance Tracking App?

Many businesses still manage attendance using disconnected methods such as:

Spreadsheets
Paper sign-in sheets
Email updates
Teams messages
Manual supervisor reports
Shared documents

These methods may work for a small team, but they become risky when the business needs accurate records, real-time visibility, and HR reporting.

A modern attendance app can help answer important questions:

Who checked in today?
Who checked out?
Who is late?
Who is absent?
Who forgot to check out?
Which employees are working remotely?
Which field workers checked in from a job site?
What is the attendance history for each employee?
Can HR report attendance by department, location, or status?

A Power Apps Canvas App gives the business a simple mobile-friendly solution, while SharePoint stores the records and Power Automate handles reminders and notifications.


Business Use Case

The main business use case is to create a centralized attendance tracking system for office, remote, and field workers.

The app should allow:

Employees to check in and check out
Supervisors to monitor team attendance
HR to review attendance records
Power Automate to send missing check-out reminders
SharePoint to store all attendance history
Optional GPS capture for field or remote work scenarios

This type of app is useful for:

Office teams
Hybrid employees
Remote workers
Field service teams
Contractors
Training programs
Retail teams
Healthcare support staff
Construction or job-site workers
School or program attendance tracking

The goal is not only to record time. The real goal is to improve visibility, reduce manual work, and create reliable attendance data.


Solution Overview

The solution uses three main Microsoft 365 tools:

Power Apps

Power Apps provides the front-end Canvas App that employees, supervisors, and HR users interact with.

The app includes screens for check-in, check-out, history, supervisor review, HR dashboard, and reports.

SharePoint Online

SharePoint Online stores the attendance records.

Every check-in creates a SharePoint item, and every check-out updates the same item.

Power Automate

Power Automate sends reminders when employees forget to check out.

It can also send supervisor alerts, daily attendance summaries, or escalation notifications.

The basic architecture looks like this:

Employee checks in
Power Apps creates a SharePoint record
Employee checks out
Power Apps updates the SharePoint record
Power Automate checks for missing check-outs
Supervisor and HR review attendance data


Target Users

A realistic attendance tracking app should support three main user groups.

1. Employees

Employees use the app to:

Check in
Check out
View today’s status
View attendance history
Add notes
Select work location
Capture GPS location if required

For employees, the app should be very simple. The main actions should be large, clear, and mobile-friendly.

2. Supervisors

Supervisors use the app to:

View team attendance
See who is present, late, absent, or missing check-out
Review attendance by date
Follow up with employees
Receive missing check-out alerts

Supervisors do not need to see every employee in the company. They should mainly see their own team.

3. HR

HR users need broader visibility.

HR can use the app to:

Review all attendance records
Filter by department
Filter by location
Review attendance status
Identify repeated late or missing check-out patterns
Export or report attendance data
Open Power BI reports if available

HR access must be controlled because attendance data can be sensitive.


SharePoint List Structure

Create a SharePoint list named:

AttendanceRecords

This list stores all check-in and check-out records.

Each row represents one employee attendance record for one day.

Required Columns

Column NameData TypePurpose
TitleSingle line of textRecord title
EmployeeNameSingle line of textEmployee full name
EmployeeEmailSingle line of textEmployee email
EmployeeIDSingle line of textEmployee ID
AttendanceDateDate onlyWork date
CheckInTimeDate and timeCheck-in timestamp
CheckOutTimeDate and timeCheck-out timestamp
StatusChoiceAttendance status
LocationChoice or textOffice, Remote, Field, Client Site
NotesMultiple lines of textEmployee or supervisor notes
Column NameData TypePurpose
DepartmentChoiceEmployee department
SupervisorEmailSingle line of textSupervisor email
WorkModeChoiceOffice, Remote, Field, Hybrid
LatitudeNumberOptional GPS latitude
LongitudeNumberOptional GPS longitude
LocationAddressMultiple lines of textOptional readable address
ReminderSentYes/NoTracks missing check-out reminder
CreatedByAppYes/NoIdentifies records created from Power Apps

Use clean and consistent status values:

Checked In
Checked Out
Late
Absent
Missing Check-Out
Pending Review
Manual Adjustment

Do not create too many variations of the same status. For example, avoid using “Check In,” “Checked-in,” “Clocked In,” and “Present Today” at the same time. That will make filtering and reporting messy.


Optional Employee Directory List

For a more realistic app, create another SharePoint list named:

EmployeeDirectory

This list helps with role-based access and supervisor filtering.

Recommended columns:

EmployeeName
EmployeeEmail
EmployeeID
Department
SupervisorName
SupervisorEmail
Role
WorkMode
Status

Recommended Role values:

Employee
Supervisor
HR
Admin

This list allows the app to know who the current user is and what screens they should access.


App Screens

The app should include six main screens.


1. Home Screen

The Home Screen is the first screen users see.

It should show:

Welcome message
Current date
Today’s attendance status
Check-in time
Check-out time
Location
Quick action buttons

Recommended buttons:

Check In
Check Out
My History
Supervisor View
HR Dashboard
Reports

The Home Screen should immediately answer one question:

“What is my attendance status today?”

If the employee has not checked in, show the Check In button.

If the employee has checked in but not checked out, show the Check Out button.

If the employee already checked out, show a message such as:

“Attendance completed for today.”


2. Check In / Check Out Screen

This is the main working screen.

It should include:

Employee name
Employee ID
Today’s date
Location dropdown
Work mode dropdown
Notes field
Check In button
Check Out button
Optional GPS capture
Status message

Business rules:

An employee can check in only once per day.
An employee cannot check out before checking in.
An employee cannot check out twice.
The app should update the same SharePoint record during check-out.
The app should show a confirmation message after each action.

This screen should be designed for mobile use. The buttons should be large and easy to tap.


3. My Attendance History

This screen allows employees to view their own attendance records.

It should include:

Date filter
Status filter
Attendance gallery
Check-in time
Check-out time
Location
Status
Notes

Employees should only see their own attendance history, not everyone else’s records.

Example gallery fields:

Date
Check In Time
Check Out Time
Status
Location
Notes


4. Supervisor View

This screen allows supervisors to view team attendance.

It should include:

Date picker
Employee search
Status filter
Team attendance gallery
Late employees count
Missing check-out count
Absent employees count

Supervisors should be able to quickly answer:

Who checked in today?
Who is late?
Who forgot to check out?
Who is absent?

Supervisor filtering should be based on the supervisor email or manager relationship stored in the EmployeeDirectory list.


5. HR Admin Dashboard

The HR Admin Dashboard gives HR a full view of attendance records.

It should include filters for:

Date range
Department
Employee
Status
Location
Work mode

HR should be able to review:

All attendance records
Missing check-out records
Late records
Absent records
Remote and field attendance
Department-level patterns

HR may also need a manual adjustment option, but that should be restricted to authorized users only.


6. Reports Screen

The Reports Screen gives managers and HR a quick visual summary inside Power Apps.

Recommended report cards:

Total present today
Total late today
Total absent today
Missing check-outs
Remote check-ins
Field check-ins

For more advanced reporting, connect SharePoint data to Power BI.

Power BI can show:

Attendance trends by month
Attendance by department
Late count by employee
Missing check-out patterns
Remote vs office attendance
Field worker attendance summary


Power Fx Formula Examples

The following formulas are examples. You may need to adjust column names and control names based on your app.


App Start Formula

Use the App OnStart property to store the current user and role.

Set(varCurrentUser, User());

Set(
    varEmployeeProfile,
    LookUp(
        EmployeeDirectory,
        EmployeeEmail = varCurrentUser.Email && Status.Value = "Active"
    )
);

Set(
    varUserRole,
    Coalesce(varEmployeeProfile.Role.Value, "Employee")
);

This formula looks up the current user from the EmployeeDirectory list and stores their role.


Check-In Button Formula

Use this on the Check In button OnSelect.

With(
    {
        ExistingRecord: LookUp(
            AttendanceRecords,
            EmployeeEmail = User().Email &&
            AttendanceDate = Today()
        ),
        CurrentTime: Now(),
        LateCutoff: DateTimeValue(
            Text(Today(), "[$-en-US]yyyy-mm-dd") & " 09:00 AM"
        )
    },
    If(
        !IsBlank(ExistingRecord),
        Notify(
            "You have already checked in today.",
            NotificationType.Warning
        ),
        Patch(
            AttendanceRecords,
            Defaults(AttendanceRecords),
            {
                Title: User().FullName & " - " & Text(Today(), "[$-en-US]yyyy-mm-dd"),
                EmployeeName: User().FullName,
                EmployeeEmail: User().Email,
                EmployeeID: varEmployeeProfile.EmployeeID,
                AttendanceDate: Today(),
                CheckInTime: CurrentTime,
                Status: {
                    Value: If(
                        CurrentTime > LateCutoff,
                        "Late",
                        "Checked In"
                    )
                },
                Location: ddLocation.Selected.Value,
                WorkMode: {Value: ddWorkMode.Selected.Value},
                Notes: txtNotes.Text,
                Latitude: Location.Latitude,
                Longitude: Location.Longitude,
                CreatedByApp: true
            }
        );
        Notify(
            "Check-in recorded successfully.",
            NotificationType.Success
        );
        Reset(txtNotes)
    )
)

What this formula does:

It checks whether the employee already has a record for today.
If a record already exists, it prevents duplicate check-in.
If no record exists, it creates a new SharePoint item.
It captures employee name, email, employee ID, date, check-in time, status, location, notes, and optional GPS coordinates.
It marks the employee as Late if check-in happens after the cutoff time.


Prevent Duplicate Check-In

Use this formula on the Check In button DisplayMode.

If(
    IsBlank(
        LookUp(
            AttendanceRecords,
            EmployeeEmail = User().Email &&
            AttendanceDate = Today()
        )
    ),
    DisplayMode.Edit,
    DisplayMode.Disabled
)

This disables the Check In button after the employee has already checked in for the day.


Check-Out Button Formula

Use this on the Check Out button OnSelect.

With(
    {
        TodayRecord: LookUp(
            AttendanceRecords,
            EmployeeEmail = User().Email &&
            AttendanceDate = Today()
        ),
        CurrentTime: Now()
    },
    If(
        IsBlank(TodayRecord),
        Notify(
            "You must check in before checking out.",
            NotificationType.Error
        ),

        !IsBlank(TodayRecord.CheckOutTime),
        Notify(
            "You have already checked out today.",
            NotificationType.Warning
        ),

        Patch(
            AttendanceRecords,
            TodayRecord,
            {
                CheckOutTime: CurrentTime,
                Status: {Value: "Checked Out"},
                Notes: If(
                    IsBlank(txtNotes.Text),
                    TodayRecord.Notes,
                    TodayRecord.Notes & Char(10) & "Check-out note: " & txtNotes.Text
                )
            }
        );
        Notify(
            "Check-out recorded successfully.",
            NotificationType.Success
        );
        Reset(txtNotes)
    )
)

What this formula does:

It finds today’s attendance record.
If no check-in record exists, it tells the user to check in first.
If check-out already exists, it prevents duplicate check-out.
If the record is valid, it updates the existing SharePoint item with the check-out time and status.


Filter Attendance by Current User

Use this formula for the My Attendance History gallery Items.

SortByColumns(
    Filter(
        AttendanceRecords,
        EmployeeEmail = User().Email
    ),
    "AttendanceDate",
    SortOrder.Descending
)

This ensures employees only see their own attendance history.


Show Late, Absent, and Missing Check-Out Status

Use this formula for a status label Text.

Switch(
    ThisItem.Status.Value,
    "Late",
    "Late",
    "Missing Check-Out",
    "Missing Check-Out",
    "Checked Out",
    "Present",
    "Checked In",
    "Checked In",
    "Absent",
    "Absent",
    "Pending Review"
)

Use this formula for a status label Color.

Switch(
    ThisItem.Status.Value,
    "Checked Out",
    Color.Green,
    "Checked In",
    Color.Blue,
    "Late",
    Color.Orange,
    "Missing Check-Out",
    Color.Red,
    "Absent",
    Color.Red,
    Color.Gray
)

A simple color system makes the app easier to understand:

Green = checked out or present
Blue = checked in
Orange = late
Red = absent or missing check-out
Gray = pending or unknown


GPS and Location Capture

For field workers or remote workers, the app can optionally capture location during check-in or check-out.

Recommended GPS fields:

Latitude
Longitude
LocationAddress
Location

Example formula:

Set(varLatitude, Location.Latitude);
Set(varLongitude, Location.Longitude);

You can also patch the location directly into the attendance record:

Patch(
    AttendanceRecords,
    Defaults(AttendanceRecords),
    {
        EmployeeName: User().FullName,
        EmployeeEmail: User().Email,
        AttendanceDate: Today(),
        CheckInTime: Now(),
        Latitude: Location.Latitude,
        Longitude: Location.Longitude,
        Location: ddLocation.Selected.Value,
        Status: {Value: "Checked In"}
    }
)

Important Privacy Note

Location capture should be used carefully.

The app should clearly tell employees when location is being captured and why. GPS should normally be captured only during check-in or check-out, not continuously.

Use GPS only when there is a real business need, such as:

Field worker attendance
Client site verification
Remote site check-ins
Safety or compliance tracking

Do not add GPS tracking just because it is technically possible.


Power Automate Reminder for Missing Check-Out

Power Automate can help solve one of the most common attendance issues: employees forget to check out.

Create a scheduled flow called:

Attendance Missing Check-Out Reminder

Flow Trigger

Use a Recurrence trigger.

Recommended schedule:

Every weekday at 5:30 PM or 6:00 PM

Flow Logic

  1. Trigger the flow on a schedule.
  2. Get items from the AttendanceRecords SharePoint list.
  3. Filter records where:
    • AttendanceDate is today
    • CheckInTime is not empty
    • CheckOutTime is empty
    • Status is Checked In or Late
    • ReminderSent is No
  4. Send an email reminder to the employee.
  5. Optionally notify the supervisor in Teams.
  6. Update the SharePoint item:
    • Status = Missing Check-Out
    • ReminderSent = Yes

Reminder Email Example

Subject:

Reminder: Please Check Out for Today

Body:

Hello [Employee Name],

Our attendance system shows that you checked in today but have not checked out yet.

Please open the Attendance Tracking App and complete your check-out.

Thank you.


Security and Privacy Considerations

Attendance data is sensitive because it can reveal employee work patterns, absence behavior, and location information.

A good app must protect this data.

Security Best Practices

Use role-based access
Restrict employee visibility to their own records
Limit supervisor access to direct reports
Restrict HR dashboard access
Use SharePoint permissions carefully
Avoid exposing sensitive columns unnecessarily
Protect exported reports
Keep audit history
Use Microsoft 365 groups where possible

Important Truth

Hiding a screen or button in Power Apps is not enough security by itself.

If users can access the SharePoint list directly, they may still see data they should not see. The SharePoint permissions and data access model must be designed correctly.


Mobile-First Design Best Practices

Attendance apps are used frequently from mobile devices. That means the app must be simple, fast, and easy to use.

Design Tips

Use large Check In and Check Out buttons
Keep the home screen clean
Show today’s status clearly
Use color-coded status pills
Minimize typing
Use dropdowns for location and work mode
Make the app responsive
Test on mobile devices
Use clear confirmation messages
Avoid too many fields on one screen

The employee should be able to check in or check out in just a few seconds.


Delegation and Performance Best Practices

If your attendance list grows over time, performance matters.

A company with 100 employees can create thousands of attendance records quickly.

Recommended indexed SharePoint columns:

EmployeeEmail
AttendanceDate
Status
SupervisorEmail
Department
Location
WorkMode

Performance Tips

Filter by date first
Filter by current user email
Avoid loading all records into collections
Keep galleries limited to a date range
Use Power BI for large reporting
Archive older records if necessary
Consider Dataverse for enterprise-scale solutions

SharePoint is a practical starting point, but for large enterprise, payroll-connected, or heavily audited systems, Dataverse or a dedicated HR/timekeeping system may be better.


Common Mistakes to Avoid

1. Allowing Duplicate Check-Ins

Always check whether today’s record already exists.

2. Allowing Check-Out Without Check-In

Check-out should only update an existing record.

3. Letting Employees See Everyone’s Records

Employees should only see their own attendance data unless they have supervisor or HR access.

4. Ignoring Missing Check-Outs

Missing check-outs create incomplete attendance records. Use Power Automate reminders.

5. Capturing GPS Without Policy

Location tracking must be transparent, approved, and limited to a valid business need.

6. Using Too Many Status Values

Keep status values simple and consistent.

7. Designing Only for Desktop

Attendance tracking should be mobile-first.

8. Ignoring Delegation

A formula may work during testing but fail when the SharePoint list grows.

9. No Audit Trail

Keep created by, modified by, check-in time, check-out time, and status fields.

10. Not Planning Reports Early

Build your SharePoint list with reporting in mind from day one.


Final Architecture Workflow

The final solution works like this:

Employee opens the Power Apps Attendance App.
Employee checks in.
Power Apps creates a record in SharePoint.
Optional GPS location is captured.
Employee checks out.
Power Apps updates the same SharePoint record.
Power Automate checks for missing check-outs.
Employee and supervisor receive reminders if needed.
Supervisor reviews team attendance.
HR monitors attendance reports and trends.

This creates a complete attendance tracking process using Microsoft 365 tools.


Why This Is a Strong Power Apps Project

An Attendance Tracking Canvas App is a great beginner-to-intermediate Power Apps project because it teaches real business logic.

You learn how to work with:

SharePoint list design
Patch formulas
Check-in and check-out logic
Duplicate record prevention
User-based filtering
Role-based access
Mobile-first design
Power Automate reminders
GPS/location capture
HR reporting concepts

This is the kind of project that shows more than technical skill. It shows that you understand business process automation.


Final Thoughts

Attendance tracking should not depend on spreadsheets, paper logs, or scattered messages.

With Power Apps, SharePoint, and Power Automate, businesses can create a modern attendance solution that supports office, remote, and field workers.

Employees get a simple check-in and check-out experience.
Supervisors get better visibility.
HR gets reliable records and reporting.
Power Automate reduces manual follow-up.

The key is to design the app with security, privacy, performance, and mobile usability in mind.

This is not just an attendance app.

It is a practical Microsoft 365 business process solution.

Share MS Tech Solutions LLC
Share • Automate • Innovate • Transform

Read more

Build an Enterprise Asset Tracking & Maintenance Management Solution with SharePoint, Power Apps & Power Automate.

Build an Enterprise Asset Tracking & Maintenance Management Solution with SharePoint, Power Apps & Power Automate.

How to replace spreadsheets, email-based maintenance requests, and disconnected asset records with a centralized Microsoft 365 solution Organizations often invest heavily in equipment, technology, facilities, and operational assets—but still manage those assets through spreadsheets, emails, shared folders, and manual follow-ups. That creates a familiar set of problems:

By Lemi Roba