RIO Ready: QR Attendance Functionality
Generate a QR code, have students scan it, and mark attendance automatically.
Table of Contents
Overview
The QR Attendance functionality gives faculty a fast, contactless way to take attendance in class. Faculty generate a short-lived QR code from the class's Booking record; students scan it with their phone camera and their attendance is recorded automatically — no manual roll call, no paper sign-in sheet.
Who Can Use This
| Role | Access |
| Faculty | Generates, refreshes, and expires QR codes for their own class Bookings; sees the live scan count and expiry countdown |
| Student (Portal) | Scans a QR code to mark their own attendance for a class they are enrolled in |
How It Works
Faculty Generates a QR Code
- Open the Booking record for the class in progress.
- Click Generate QR Code on the QR Attendance Generator component.
- The QR code appears on screen for projection, along with a live scan count and an expiry countdown that update automatically.
- Generating a new code deactivates any code already active for that Booking — only one code can be active at a time.
- Faculty can click Expire QR at any point to close attendance early. A confirmation shows how many enrolled students have not yet checked in before this happens.


Note: Clicking Generate QR Code for a class that hasn't started yet asks faculty to confirm first. Generating a code is blocked entirely once the class, or its configured expiry window, has already passed. By default, a scan counts as On Time within 10 minutes of the class start, and the code stays valid until the class's scheduled end time — both can be adjusted per placement.
Student Scans the QR Code
- Open the phone camera and scan the QR code displayed in class.
- The scan opens the Experience Cloud student portal, prompting a login first if the student is not already signed in.
- The landing page reads the scanned code and marks attendance automatically — there is no form to fill in.
Attendance Outcomes
The student sees one of the following results immediately after scanning:
- Attendance Marked (On Time): scanned within the configured grace period of the class start time.
- Attendance Marked (Late): scanned after the grace period has passed.
- Already Recorded: the student has already checked in for this class — no duplicate record is created.
- Unable to Mark Attendance: a clear message explains why the scan was blocked — not enrolled, class already ended, the code expired, or (if configured) not connected to the campus WiFi network.




Automatic Absent Marking
A QR code expires automatically once its configured expiry time passes — a scheduled job checks for this every few minutes. When a code expires, whether automatically or via Expire QR, every enrolled student who has not yet checked in for that Booking is marked Absent.

Optional: WiFi/Location Restriction
A class's Facility can be linked to a WiFi Network record — a named set of allowed IP address ranges. When linked, a student can only mark attendance while their device's IP falls within one of those ranges, preventing a student from checking in remotely for a class they are not physically attending. If a Facility has no WiFi Network of its own, it automatically falls back to its Parent Facility's, or its Account's, WiFi Network, so classrooms under the same building or campus can usually share one configuration. A Facility with no WiFi Network resolved anywhere in that chain has no restriction.



Optional: Check Other As Late
By default, a late scan is recorded as Attended + Late. Institutions that track late arrivals using a different status field can turn on Check Other As Late when generating a code — a scan after the grace period then sets the configured Other field to true and a configured additional field to the institution's own late code instead of the standard Late flag. A student who never scans before the code expires is always marked plain Absent regardless of this setting — it only changes how a late scan is recorded, not how an unscanned student is. The student still sees a normal success result either way.


Error Investigation
Automatic Absent Marking is best-effort: if one student's Attendance record fails to save, that failure is logged rather than blocking the token's deactivation or the marking of other students. Any such failure, along with a summary of every scheduled auto-expiry run, is logged as an Error record (hed__Error__c) rather than failing silently.
To investigate, open the Error (hed__Error__c) list view or related list and look for a Context Type starting with redu_QR, sorted by Date/Time with the most recent first:
| Context Type | What It Means |
| redu_QRAbsentMarker_UTIL.markAbsentForBookings | One specific student's Absent record failed to save during automatic marking. The message includes the Booking Id and the underlying error — that student will need to be marked manually. |
| redu_QRTokenAutoExpiry_BATCH | A summary written after every scheduled run — how many codes were expired, how many had errors, and which Bookings triggered absent-marking. Useful for confirming the scheduled job is actually running on time. |
Tip: No Error record for a given run or Booking is itself a good sign — it means everyone was marked successfully with nothing to follow up on.
What's Included
- QR Token (new object) — one active code per Booking; tracks its own expiry, active status, and the configuration it was generated with
- QR Settings (new custom setting) — org-wide defaults such as the scan landing page URL and the auto-expiry batch size
- WiFi Network (new custom metadata type) — named sets of allowed IPv4/IPv6 address ranges, used by the optional WiFi/location restriction
- QR Attendance Generator (Lightning component) — the faculty-facing component placed on the Booking record page
- QR Attendance Landing (Lightning component) — the student-facing scan-result page in Experience Cloud
- Two permission sets — one granting faculty full token-management access, one granting students attendance-marking access only
For deployment/setup steps, see RIO Ready: QR Attendance Setup. For the full technical component list, see RIO Ready: QR Attendance Components.