Title text Power Apps Attendance App for Colleges: Build It Without Coding on a CertTulen branded background
Back to Blog
Power Apps Power Automate SharePoint Education PL-900

Power Apps Attendance App for Colleges: Build It Without Coding

By Abirami Seeni7 min read

If your college uses Microsoft 365 Education, you can build an attendance app with Power Apps without buying premium licences: three SharePoint lists hold the data, a canvas app lets faculty mark a class or scan student ID cards, and a scheduled Power Automate flow emails a daily absentee summary. There is no programming, only a few Excel-style formulas that you can copy from this guide.

At a glance

PieceToolLicence it needs
DataSharePoint listsIncluded with Microsoft 365
AppPower Apps canvas appPower Apps for Microsoft 365
ID card scanningBarcode reader controlSame, on a phone or Windows device
Daily summaryPower Automate scheduled flowPower Automate for Microsoft 365

Check licensing before you build

Microsoft's education licence tables show Power Apps for Microsoft 365 and Power Automate for Microsoft 365 across the Microsoft 365 and Office 365 A1, A3 and A5 plans, with A1 limited to cloud flows. Those rights cover standard connectors such as SharePoint and Office 365 Outlook. Premium connectors, including Microsoft Dataverse, need a standalone Power Apps or Power Automate licence for every user, according to the Power Platform licensing FAQs. That is why this design uses SharePoint.

Two dates matter this term:

  • Dataverse for Teams is closing. Microsoft's deprecation notice says new Dataverse for Teams environments cannot be created from 15 November 2026. Existing ones that are not upgraded are suspended on 15 September 2027 and decommissioned on 30 October 2027. Do not start a new attendance app there.
  • The free Developer Plan is changing. From 15 November 2026, signing up for the Power Apps Developer Plan no longer creates a developer environment, so students who planned to practise there should check with their college IT team for an environment instead.

Before you begin, ask your IT administrator which environment to build in and whether any data policy blocks the SharePoint or Outlook connectors. Five minutes now saves a rebuild later.

Design three SharePoint lists

Create a SharePoint site for the department and add three lists. Rename each list's default Title column to the first key shown below, and use single line of text columns for every key.

ListColumnsOne row per
StudentsRegisterNo (Title), StudentName, ClassCode, EmailStudent
SessionsSessionKey (Title), CourseCode, AttDate, Period, FacultyEmailClass taught
AttendanceRecordKey (Title), SessionKey, AttDate, RegisterNo, Status, Method, MarkedByStudent per class

Store ClassCode in one agreed format such as CSE-3-A, and AttDate as text in yyyy-mm-dd form. SessionKey joins date, class, course and period, for example 2026-10-26|CSE-3-A|CS301|P2, and RecordKey adds the register number, which gives every attendance row a unique, readable key. Status holds Present, Absent or OD (on duty).

Why plain text keys matter

Power Apps hands a query to SharePoint only when SharePoint can run it, which Microsoft calls delegation. When it cannot, Power Apps works on the first 500 records by default, and the setting goes no higher than 10,000, per Microsoft's delegation guidance. An Attendance list passes 500 rows within days. Filtering with an equals sign on a text column delegates to SharePoint; counting a whole list does not. So filter by SessionKey or ClassCode first, keep calculations to one class at a time, and do semester percentages in Power BI or Excel rather than inside the app.

Build the app

Open Power Apps, create a blank canvas app in phone layout, then choose Data, Add data, SharePoint, and add the three lists. (Microsoft Lists can also generate a starter app from a single list through Integrate, Power Apps, Create an app, but a blank app is cleaner for three lists.)

Build three screens:

  1. Home: dropdowns for class and period, a text box for the course code, and a Start button. For a pilot, type the classes into the dropdown's Items as a small table, such as ["CSE-3-A", "CSE-3-B"].
  2. Mark: a gallery of students in that class, each row with a toggle that defaults to present.
  3. Scan: a barcode reader and a list of scanned register numbers.

The Start button builds the session key, creates the session once, and opens the Mark screen:

Set(varToday, Text(Today(), "yyyy-mm-dd"));
Set(varSessionKey, Concatenate(varToday, "|", ddClass.Selected.Value, "|", txtCourse.Text, "|", ddPeriod.Selected.Value));
If(
    IsBlank(LookUp(Sessions, SessionKey = varSessionKey)),
    Patch(Sessions, Defaults(Sessions), {
        SessionKey: varSessionKey, CourseCode: txtCourse.Text, AttDate: varToday,
        Period: ddPeriod.Selected.Value, FacultyEmail: User().Email })
);
Navigate(scrMark)

Set the gallery's Items to Filter(Students, ClassCode = ddClass.Selected.Value), add a label for register number and name, and a toggle named tglPresent with Default set to true. The Save button writes one row per student, and refuses to save twice:

If(
    !IsBlank(LookUp(Attendance, SessionKey = varSessionKey)),
    Notify("Attendance for this class is already saved", NotificationType.Warning),
    Collect(Attendance,
        ForAll(galStudents.AllItems,
            { RecordKey: Concatenate(varSessionKey, "|", ThisRecord.RegisterNo),
              SessionKey: varSessionKey, AttDate: varToday,
              RegisterNo: ThisRecord.RegisterNo,
              Status: If(tglPresent.Value, "Present", "Absent"),
              Method: "List", MarkedBy: User().Email }));
    Notify("Attendance saved", NotificationType.Success);
    Navigate(scrHome)
)

Collect adds each record of a table as a separate row in the data source, so one tap saves the whole class.

Add ID card scanning

If your college ID cards carry a QR code or barcode of the register number, faculty can scan students as they walk in. The barcode reader control reads QR codes, Code 128, Code 39 and other formats on Android, iOS and Windows devices, opening the device's native scanner, and its Scan multiple mode lets one session pick up many cards. It does not scan inside a web browser, so faculty should run the app in the Power Apps mobile app.

Set the reader's OnScan so repeated scans of the same card count once:

ForAll(brIDCard.Barcodes As b,
    If(IsBlank(LookUp(colScanned, RegisterNo = b.Value)),
        Collect(colScanned, { RegisterNo: b.Value })))

The Save button on this screen follows the same pattern as before, with Filter(Students, ClassCode = ddClass.Selected.Value) as the table, Status set by If(RegisterNo in colScanned.RegisterNo, "Present", "Absent"), and Method set to "Scan". Clear colScanned after saving.

A trainer's warning: avoid student self-check-in with one QR code on the projector. A photo of it reaches the class WhatsApp group in seconds, and proxy attendance follows. Faculty-led scanning keeps the teacher in control and means students do not need the app or a licence at all.

Send a daily summary with Power Automate

In Power Automate, choose Create, then Scheduled cloud flow, and repeat every day. Microsoft's guide to running a flow on a schedule shows where to set the time zone on the Recurrence trigger; pick (UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi and a time such as 5 pm, after the last period.

Then add these actions:

  1. Get items from the Attendance list, with the Filter Query AttDate eq '@{convertFromUtc(utcNow(), 'India Standard Time', 'yyyy-MM-dd')}'. Get items returns a limited number of rows by default, so open the action's settings and turn on pagination with a threshold above a full day's rows.
  2. Filter array to keep rows where Status is Absent.
  3. Create HTML table from the filtered rows, choosing SessionKey and RegisterNo as columns.
  4. Send an email (V2) to the head of department with the table in the body.

Note the two date formats: Power Apps writes months as mm, while Power Automate expressions use MM, because lowercase mm means minutes there. Mixing them up is the most common reason the flow finds nothing.

Share it and roll it out

  • Publish, then share with a group. Share the app with a faculty security group, not person by person. Sharing an app does not grant access to its data, so also give that group edit permission on Sessions and Attendance and read permission on Students in SharePoint, as Microsoft's sharing guide reminds you.
  • Pilot one class for a week. While testing, set the app's data row limit to 1, a trick Microsoft recommends, so any formula that is not delegated fails visibly instead of quietly reading partial data.
  • Report outside the app. Connect Power BI Desktop or Excel to the Attendance list for monthly and semester percentages against your university's minimum attendance rule.
  • Treat attendance as personal data. Keep permissions tight, store only what you need (no phone or Aadhaar numbers), and read our guide to the DPDP Act and AI tools for the wider data protection picture.

For engineering and MCA students, a well-documented version of this app makes a solid project; see our list of final-year project ideas.

How CertTulen Academy can help

If this is your first Power Platform build, Microsoft Power Platform Fundamentals (PL-900) covers canvas apps, SharePoint data, Power Automate flows and sharing in live, MCT-led online sessions with hands-on labs; our PL-900 exam guide explains the certification. Colleges and staff who want to go further, with Dataverse, custom connectors and solution deployment, can move on to Power Platform Developer (PL-400). Course pages show prices in INR with UPI, card and netbanking checkout. Contact us for a batch that suits your time zone.

Frequently Asked Questions

Is Power Apps free for colleges with Microsoft 365 Education?+

Microsoft 365 and Office 365 A1, A3 and A5 education plans include Power Apps for Microsoft 365 and Power Automate for Microsoft 365. Those rights cover standard connectors such as SharePoint and Outlook, which is enough for this attendance app. Premium connectors, including Dataverse, need separate Power Apps or Power Automate licences.

Should I build the attendance app on Dataverse for Teams?+

No. Microsoft has deprecated Dataverse for Teams environments: new ones cannot be created from 15 November 2026, and environments that are not upgraded are decommissioned on 30 October 2027. A SharePoint list works with Microsoft 365 licences, while full Dataverse needs premium licences for every user.

Can students mark their own attendance with a QR code?+

Technically yes, with the barcode reader control in the Power Apps mobile app, but a single displayed QR code is easy to photograph and share, which invites proxy attendance. Having faculty scan ID cards or tick a class list is more reliable and means students need neither the app nor a licence.

How many records can a SharePoint attendance list handle in Power Apps?+

SharePoint lists hold far more rows than a college produces, but Power Apps only processes non-delegable formulas on the first 500 records by default, up to a maximum of 10,000. Filter with an equals sign on text columns such as SessionKey, keep calculations per class, and do semester totals in Power BI or Excel.

Does the barcode reader work on a laptop browser?+

No. Microsoft supports the barcode reader control on Android, iOS and Windows devices, and it does not scan inside a web browser. Faculty should open the app in the Power Apps mobile app on a phone or a Windows device with a camera. Supported formats include QR codes, Code 128 and Code 39.

Written by

Abirami Seeni

Microsoft Certified Trainer (MCT), founder of CertTulen Academy

CertTulen Academy · Microsoft Training Services Partner · Microsoft AI Cloud Partner

Read next

Chat with us