Admin GuidesQR Attendance Check-In

QR Code Attendance Check-In

Who this guide is for: Administrators and instructors who run in-person (ILT) sessions and want a frictionless way to record attendance — learners scan a code on their phone instead of being marked off a roster by hand.

For an in-person session, the instructor displays a QR code. Each learner scans it with their phone camera, confirms with their existing EmbayLMS login, and is marked present — auto-completing the session’s module the same way manual attendance does. Check-in counts update live on the session page.

This is an alternative to (not a replacement for) manual roster marking, which remains available for walk-ins or learners without a phone.

Before you start

  • The session must be an in-person (ILT) session. Virtual (Zoom/VILT) sessions use Zoom attendance and do not show the QR panel.
  • The session must not be cancelled.
  • Learners must already be registered for the session and able to sign in to your EmbayLMS tenant.

Step-by-step

1. Open the session

Go to Admin → Sessions and open the session you’re running. The QR check-in panel appears above the roster for in-person sessions.

2. Generate the QR code

Click Generate QR code. EmbayLMS creates a signed, time-limited code and renders it on screen. The code is valid from now until 30 minutes after the session’s end time (shown as Valid until … under the code).

Display the code where learners can reach it — projected on a screen, on your laptop, or printed.

3. Learners scan and confirm

Each learner:

  1. Scans the QR code with their phone camera and opens the link.
  2. Signs in if they aren’t already (then scans again).
  3. Taps Check in on the confirmation screen.

They see a confirmation that their attendance was recorded. Scanning twice is safe — the second scan simply says they’re already checked in.

4. Watch the live count

The panel shows N / M checked in (present / registered) and refreshes automatically every few seconds, so you can see check-ins arrive in real time.

5. Regenerate if needed

If the code expires (e.g. a long session) or you want a fresh one, click Regenerate code.

Configuration reference

Field / controlWhereBehaviour
Generate QR codeSession page, QR panelCreates a signed check-in code for this session and shows it on screen.
Valid untilUnder the QR codeExpiry = session end time + 30 minutes. After this, the code stops working.
Regenerate codeQR panelIssues a fresh code (e.g. after expiry).
N / M checked inQR panel headerLive count of present learners over registered learners; polls every ~5 seconds.
Learner Check in buttonPhone, after scanningMarks the signed-in learner present. Idempotent.

How it stays secure

  • The QR encodes a signed link (HMAC). A learner cannot edit it to check into a different session or extend its validity.
  • The code expires automatically (session end + 30 min), so an old photo of the code can’t be reused later.
  • A learner can only ever check themselves in — identity comes from their own signed-in session, never from the code. The code only proves “this is a genuine, unexpired check-in code for this session.”
  • Every check-in is written to the audit log (checkin_scanned), and code generation is logged too (checkin_qr_generated).

Troubleshooting

SymptomCauseFix
Learner sees “This check-in code has expired”The session ended more than 30 minutes ago, or the code is old.Click Regenerate code and have them scan the new one.
Learner sees “You’re not registered for this session”They have no registration on this session.Add them to the roster (register/enroll them), then they can check in. Or mark them present manually.
Learner sees “Sign in to check in”They aren’t logged in on their phone.They sign in, then scan the QR code again.
Learner sees “This check-in code is invalid”The link was altered, or it’s from a different tenant.Regenerate the code and have them re-scan.
The QR panel doesn’t appearThe session is virtual (VILT) or cancelled.QR check-in is for in-person, non-cancelled sessions only. Use Zoom attendance for VILT.
The live count isn’t movingNetwork hiccup; the panel keeps the last known count.It self-recovers on the next poll; refresh the page if needed.
  • Manual attendance — mark learners present/absent from the roster on the same session page (works alongside QR check-in).
  • Course completion — marking a learner present auto-completes the session’s ILT module and recomputes their course progress.