What it does
Events created with attendance tracking enabled collect a per-person attendance record. Program staff mark each expected attendee from the attendance log, and — when check-in is enabled on an event, session schedule, or shift — rostered learners can mark themselves present or late with a rotating code, static QR, or a program standing QR.
Who it's for
Coordinators and program administrators with calendar attendance manage (calendar.attendance.manage) record attendance and configure check-in, program directors review it, and learners view their own history and can self check-in when enabled.
How it works
Enable tracking. Turn on Track Attendance in the event form's options when creating or editing an event, optionally marking attendance as mandatory for compliance. Only events with tracking enabled appear in the attendance workflow.
Check-in. On an existing event (or session schedule / shift date), staff can enable Allow learners to check in — rotating code + QR for a projector, or a static QR for a door poster. Program settings hold optional Standing check-in QRs: printable posters that resolve to whichever open, rostered check-in is live for that program.
Roster. The attendance log lists the program's tracked events for the current month. Expanding an event loads its resolved invitee roster with no separate setup step: manually assigned participants, plus people invited by role (within the event's programs), institution-level program membership where configured, invited groups, and individual participants or speakers.
Defaults. An unmarked invitee defaults to Absent. They default to Excused (Rotation) instead when a confirmed clinical block schedule covers the full event window, on a rotation marked excused-from-events, and the event isn't mandatory. Staff marks always override these defaults. Self check-in only writes Attended or Late, and never overrides Excused.
Five statuses are available per person: Attended, Absent, Excused Absence, Excused (Rotation) — for absences caused by a clinical rotation — and Late. Each saved mark records who marked it and when, and an existing mark can be changed later.
On the learner side, attendance records feed a personal history — event name, type, date, and status — and a summary: an attendance rate (events attended out of tracked events the learner was expected at) and a count of excused absences, filterable by academic period.
Before you start
You need calendar.attendance.manage on at least one program linked to the event to view or mark its roster.
Attendance tracking must be turned on for the event — enable it on the event form if it isn't already.
Know the resolved invitee set you're marking: role, group, institution-level, and individual invitees all count, not just people added as named participants.
Do this
Go to
/calendar/attendance→ you should see the Log Attendance page listing the program's tracked events for the current month.Select an event on the page to expand it → confirm you see its resolved invitee roster load automatically, with no separate setup step.
For each person, select their status field and choose Attended, Absent, Excused Absence, Excused (Rotation), or Late → the person's row updates to show the new status.
To fix a mistake, open the same status field again and choose a different status → confirm the record updates and keeps a note of who changed it and when.
You're done when
✓ Every attendee on the roster shows one of the five statuses.
✓ A status you changed shows the new value and records who marked it.
✓ The learner's own attendance history and rate reflect the marks you saved.
Boundaries and limits
Attendance can only be recorded for events with tracking enabled — on the event form at creation or later.
The roster is permission-gated. Only calendar.attendance.manage on a program linked to the event can view or mark it — calendar event management alone isn't enough.
The roster shows names only — no attendee emails or photos.
Expected attendees are the resolved invitee set: roles scoped to the event's programs, institution-level members where configured, groups, and individuals or speakers. A bulk mark rejects anyone outside that set.
A person with no saved record shows as absent by default. It shows as excused rotation instead when the confirmed-schedule rule applies, until someone records a status.
Draft or unconfirmed block schedules never trigger the excused-rotation default.
For events linked to more than one program, manage permission on any one of them is enough to open the roster and mark invitees.
The attendance log covers the current month's tracked events for the program you're in.
The attendance rate counts a tracked event against a learner as soon as they're an expected attendee, marked or not. Unmarked events lower the rate.
Marking attendance from the log is a staff action. Learners can also self check-in when a host has check-in enabled, they're on the roster, and they use a valid code or QR within the check-in window.
Self check-in for events uses the same resolved invitee set as the roster. Session schedules and shifts use their own host-specific membership tables instead. Standing QRs still require an already-open host check-in the learner is rostered for.
Self check-in only writes Attended or Late — staff marks, including Excused, stay authoritative and are never overridden.
Common questions
Q: Why doesn't an event show up on the attendance log? A: Check that attendance tracking is on for the event, and that the event falls in the current month for the program you have open.
Q: What's the difference between "Excused Absence" and "Excused (Rotation)"? A: Both are excused, and neither counts as attended. "Excused (Rotation)" specifically records that a clinical rotation kept the person away, so reviews can tell rotation-driven absences apart from others.
Q: Can learners mark their own attendance? A: Yes, when check-in is enabled for that activity and they're on the roster — by rotating code, static QR, or a program standing QR. Staff can still mark or correct any status from the log. There's no anonymous kiosk check-in.
Q: Can I correct a mistake after marking someone absent? A: Yes. Choose a new status for that person. The record updates and notes who made the change and when.
Q: Why does someone appear on the roster without being added as a participant? A: Role, group, and institution-level invitations count too. The roster resolves the full invitee set as soon as you open attendance, so you don't need a manual participant row for every role invitee.
Q: Why is someone showing Excused (Rotation) before I marked them? A: This happens when the event isn't mandatory and the person has a confirmed clinical schedule covering the whole event window, on a rotation marked excused-from-events. Change the status if your judgment differs.
Related articles
