Blended learning's dirty secret is that nobody can quite say who attended. The student who watched the recording at 2am, the one who came physically and left at break, the one in the live chat but never on camera — three engagement profiles, one broken attendance column in the LMS. Programs respond with vague participation policies that quietly reward the students who would have shown up anywhere and frustrate everyone else. QR attendance gives blended models what they were missing: a defensible, unified engagement record.

The three-session model, measured #

  • In-person session: projected rotating code — physical presence with timestamp proof
  • Live-streamed session: code rotates on stream — engagement that can't be screenshotted for absentees
  • Asynchronous week: short check-in codes embedded in the recorded lesson at specific timestamps
  • One student record, three engagement channels, one policy that finally means something

Designing a blended attendance policy that's fair #

The measurement enables the policy work: set engagement thresholds per channel (e.g., attend 8 of 12 synchronous sessions in either mode, plus complete the asynchronous check-ins), publish the rules on day one, and let the system count instead of instructors adjudicating. The fairness gain is substantial — students choose their channel freely, the record treats channels equally, and edge cases (illness, connectivity) resolve through one visible exception process rather than twelve private negotiations with twelve teachers.

The deeper effect: blended programs finally get the analytics that pure-classroom programs always had. Engagement rates by channel tell you whether your asynchronous content actually works; attendance patterns predict outcomes early enough to intervene; and the term-end report that took the coordinator three days to assemble from three systems becomes an export. Blended learning was always the right pedagogy for working students, remote learners and hybrid-era schedules — it was just missing its bookkeeping. Now it has one.