Admin GuidesILT Attendance Reporting

ILT Attendance Reporting & Roster Export

Who this guide is for: Administrators, compliance leads, managers and instructors who need to read attendance back out of the platform — across sessions, across a series, or per learner — and hand it to someone else as a file.

Attendance is recorded on the session itself (by the instructor, by a learner’s QR check-in, or automatically from a virtual meeting). This guide covers the other half: reading it back.

There are two surfaces:

SurfaceWhereWhat it answers
Attendance reportAnalytics → Session Attendance”How is attendance across our sessions, this series, this learner?”
Roster exportPlanned sessions → (a session) → Roster → Export roster (CSV)“Give me the list of who was in this room.”

How the attendance rate is calculated

This is the number people misread most often, so it is worth being precise.

attendance rate = present ÷ (present + absent)

Registrations that nobody marked either way are not in the denominator. They are reported separately, in their own Not marked column.

The reason is that “did not attend” and “we never checked” are different findings, and an auditor is usually asking about the second one. A session with 12 present, 0 absent and 8 unmarked reads as 100% of what is known, with 8 registrations still to close out — not as 60% attendance. If unmarked registrations counted as absences, every session an instructor forgot to close would quietly drag the tenant’s numbers down and there would be no way to tell that apart from real absenteeism.

Two related rules:

  • A cancelled registration is never an absence. Someone who withdrew before the session does not appear in any tally. They still appear in the roster export, with their registration status, because “who dropped” is a real question.
  • A rate of — means nothing has been marked yet. It is deliberately not rendered as 0%.

The attendance report

Go to Analytics → Session Attendance. Instructors working in Teach mode find the same page under Course insights → Session Attendance.

Step-by-step

  1. The summary strip across the top shows the totals for everything matching your filters, not just the page you are looking at. It does not change as you page through the table.
  2. Filter with Course, Series, From and To, then choose Apply. Choosing a course narrows the series list to that course’s series.
  3. The table lists one row per session, most recent first, with its tally.
  4. Select a session title to open its roster: every registered learner, the status recorded for them, how it was recorded, and when.
  5. Select Series detail on any row to open the series view: every session in that series with its tally, plus every learner’s attendance across the whole series, worst attendance first. That last table is usually the point — a cohort’s problem is normally one person missing four sessions, not one session going badly.

Configuration reference

FilterValuesNotes
CourseAny course you can report onOnly courses that actually have sessions appear
SeriesAny series in scopeNarrowed by the selected course
From / ToDatesFilters on the session start time
ColumnMeaning
RegisteredNon-cancelled registrations
PresentMarked present
AbsentMarked absent
Not markedRegistered, never marked either way
RatePresent ÷ (present + absent)
Recorded byHow the mark was made — see below
”Recorded by”Meaning
InstructorMarked by a person on the session page
QR check-inThe learner scanned the session’s QR code
Automatic (meeting)Derived from the virtual meeting’s join/end events
—Nothing has been recorded for this registration

Who sees what

Scope is a security boundary, not a convenience filter.

RoleSees
Owner / AdminEvery session in the tenant
InstructorSessions of their assigned courses, plus any session where their user account is set as the session’s instructor (a typed instructor name does not count) — with the full roster of each
ManagerSessions where someone in their report chain is registered, and only those people’s rows. The tallies a manager reads describe their own team, not the whole session
Group AdminThe same, narrowed to members of their assigned groups

Two consequences worth stating plainly:

  • A manager’s session tally will legitimately differ from an admin’s for the same session. Both are correct; they are counting different populations.
  • The course and series filters only ever offer what you can already report on, so the picker itself does not disclose what exists outside your scope.

Exporting

The attendance report (CSV)

Both export buttons obey the filters currently applied, so the file and the screen always agree.

ExportOne row perColumns
Export by session (CSV)SessionCourse, series, session, type, status, start, end, instructor, registered, present, absent, not marked, attendance rate
Export by learner (CSV)Learner per seriesLast name, first name, email, course, series, registered, present, absent, not marked, attendance rate

“Per series” is the grain on purpose: a learner enrolled in two cohorts of the same course has two attendance stories, and averaging them would hide both.

report:export is a separate permission from report:read. A manager can read this report but cannot export it unless the permission has been granted to them through a custom role — see Roles and Permissions.

The session roster (CSV)

From Planned sessions, open a session and choose Export roster (CSV) in the Roster panel.

One row per registration — including cancelled ones, with their status — with these columns:

ColumnNotes
Last name, First name, EmailThe learner
Course, Series, Session, Session typeWhere the session sits
Start (UTC), End (UTC), LocationWhen and where
Registration statusregistered, waitlisted or cancelled
Registered at (UTC)When they signed up
Attendancepresent, absent or not_set
Recorded bymanual (instructor), self_qr (QR check-in), automatic (meeting) or none
Marked at (UTC)When the mark was made
NotesAny note left with the mark

Timestamps are written in UTC, ISO-8601, not in your display timezone. A localised date inside a CSV is the fastest way to make a column unreadable to whoever opens it in the other language.

Column order and names are a stable contract — columns may be added at the end over time, but existing ones are not renamed or reordered, so a spreadsheet or script that binds to them keeps working.

Headers are translated: an export taken in French has French headers.

Notes on delivery and retention

The export is generated in the moment and downloaded straight to your browser. Nothing is stored on our side, so there is no copy of the file to expire, expose or clean up later — but equally, there is no link to re-share. Take the export again if you need it again.

Every export is written to the audit log with the number of rows taken and by whom. The contents are never logged.

Troubleshooting

The report is empty but I know sessions exist

Check your filters first, particularly the date range — it filters on the session’s start time, so a series that ran last quarter will not appear under a “from today” filter. If the filters are clear and it is still empty, you are most likely scoped: an instructor sees only their courses’ sessions, and a manager only sessions their reports are registered for.

A session shows a rate of —

Nothing has been marked for it. That is different from 0% and is shown differently on purpose. Open the session and record attendance.

My numbers differ from another admin’s for the same session

One of you is scoped and the other is not — see Who sees what above. A manager counts only their own reports.

The export button is not there

Exporting the attendance report needs report:export, which is not a manager default, and the buttons appear only when the filtered report has rows. Exporting a session roster needs session:view on that session, and Export roster (CSV) appears only once the session has at least one registration. See Roles and Permissions.

My export says only the first 2,000 sessions were included

The report renders in the moment, so it is capped. Narrow the date range or filter by course and take it in parts. The warning is always shown — an export is never silently short.

Attendance is recorded but the learner’s course did not complete

Attendance completes the session’s module, not necessarily the whole course. See ILT & VILT Sessions for how session attendance feeds module and course completion.