User analytics
Lives in apps/web (the admin console), like the AI usage dashboard -
reachable by admin, superadmin and support. Instructors and
members don't see it.
It answers two questions: how are the people in my organisation using this? (a tenant admin) and which tenants are healthy? (the platform).
Who sees what
- A tenant admin sees only their own organisation, including named individuals: the per-learner progress table and the list of accounts that have gone quiet.
- Superadmin and support are platform actors. They see every tenant at once - a table of tenants with their users, activity and enrollments, busiest first - and can click a tenant to see that tenant's own numbers.
- Platform staff see aggregates only, both across tenants and inside a single tenant: no learner names, no list of quiet users. Someone who needs to look up a specific person uses the audited Users page instead (see Managing users and roles).
Pick a time window (7, 30 or 90 days) at the top; platform actors also get a tenant picker. Days are UTC, and the address bar keeps your tab, window and tenant, so a link can be shared.
What each tab shows
Overview - users, users active in the last 30 days, learners and enrollments; users by role (active and deactivated); and how many accounts were created each day.
Activity - daily, weekly and monthly active users (counted as of the last day of the window), and stickiness, which is daily active divided by monthly active: the closer to 100%, the more of your monthly users show up on any given day. A chart of active users and sign-ins per day, active users by role, and (tenant admins only) Gone quiet - active accounts with nothing recorded in the last 30 days.
Learners - how many learners you have and how many are enrolled; average progress across all enrollments; lessons completed and exam results in the window; a table of courses (enrolled, started, completed, average progress); a table of exams (attempts, average score, pass rate); and, for tenant admins, one row per learner.
Content - one card per course, most-enrolled first. Open a course to see how many learners completed each lesson in order: a steep drop shows where people stop. Lessons, their order and their titles come from the course's last published version, same reasoning as Progress above - a course never published shows no lesson rows at all. The lesson-by-lesson view is only shown for a single tenant; across tenants you get the courses only.
Definitions
- Active - a user is active on a day when they sign in or make any request as a signed-in user. It is recorded once per user per day.
- Learner - an active account with the member role.
- Progress - for one learner in one course, the lessons they completed out of the lessons in the course's last published version (ADR-074) - not the working copy an instructor might currently be editing, so an unpublished draft lesson never lowers anyone's percentage and an unpublished deletion never raises it. A course counts as completed for a learner at 100%, and started once they have completed one lesson. A course never published, or with no lessons in its published version, is left out.
- Enrollments and progress are all-time; lesson completions, exam attempts and activity follow the window you chose.
- Pass rate - the share of submitted attempts at or above the exam's pass mark. An exam with no pass mark has no pass rate (shown as "—"). Only submitted attempts count.
- Days are UTC.
Reading the numbers
Activity history only starts when this feature was switched on. Before that nothing recorded when people signed in, so earlier days show as zero and can't be recovered. The Activity tab shows the date recording began; treat anything before it as "not tracked", not "nobody came". For the same reason, a blank Last active means nothing recorded, which is not the same as never signed in.
Learner progress, enrollments, completions and exam results don't have this limit - they come from records that have always been kept.
Not included: blog readership (views aren't recorded).
Limits
- Course and exam tables show the top 50; the learner table the top 500.
- Numbers are computed when you open the page, not cached, so they are current.