Reports and Compliance

Plan availability (2026-07-23): the Compliance Reports page, the pre-built reports and their CSV exports are available on every plan. The custom report builder, saved reports and scheduled delivery require the Growth plan or higher. Below Growth the builder shows an upgrade screen and existing schedules pause; they are never deleted, and delivery resumes on upgrade.

Who this guide is for: Tenant administrators, compliance officers, and managers who need to track, export, and schedule learning data reports.


Overview

Reports live under Analytics in the left menu. There you find:

  • the Compliance Reports page, with headline numbers, an enrollment trend, a course-by-course matrix and a per-group table, all filterable by group, language and date;
  • seven ready-made reports, linked at the top of that page (§11);
  • the Custom Report Builder, where you choose columns and filters, save reports, share them and email them on a schedule (§10, §5).

Every page shows only the people you are allowed to see: everyone for an Owner or Admin, the report chain for a Manager, assigned groups for a Group admin, and assigned courses’ learners for an Instructor.


Prerequisites

To…You needHeld by default by
See Analytics and run any reportreport:readOwner, Admin, Group admin, Manager, Instructor, E-commerce admin
Export the session attendance reportreport:exportOwner, Admin, Group admin, Instructor
Save, edit, delete or schedule a custom reportreport:manageOwner, Admin

Every other export needs only report:read. A custom role can be given any of these permissions.

Overdue numbers depend on due dates, which are set per enrollment (§9.2).


1 - Where reports live

Click Analytics in the left menu. The page that opens is titled Compliance Reports. From it you can reach:

WhereWhat it showsSee
Compliance Reports (this page)Headline numbers, enrollment trend, course matrix, per-group table§9, §7
Course EngagementPer-course enrollment, start, completion and drop-off rates, scores, time and ratings§11.1
Overdue TrainingEvery enrollment past its due date and not finished§11.2
Certificate Expiry ForecastCertifications lapsing in the next 90 days§11.4
Session AttendanceAttendance at in-person and virtual sessions§11.5
Learner Drill-DownOne learner’s full course history§11.3
Active Users (DAU/WAU/MAU)Daily, weekly and monthly active learners§8b
Team RosterAssigned, completed and overdue training per team member§11.6
Custom Report Builder (top right)Your own reports, saved, shared and scheduled§10

The pre-built reports show their results as soon as they open; there is no run step. Only the Custom Report Builder has a Run report button.

For system-to-system reporting, the REST API offers completion, enrollment, compliance, course-performance and user-activity reports, plus an asynchronous export for large data sets. See the API reference.


2 - Reading the Compliance Reports page

From top to bottom:

  1. Headline numbers: Active Learners, Total Enrollments, Completions and Overall Completion Rate (completed enrollments over all enrollments).
  2. Enrollment Trend: new enrollments per day, for the Last 7 days, Last 30 days or Last 90 days.
  3. A chart of up to ten courses and their completion rate.
  4. The filter bar (§7.1).
  5. The Course Compliance Matrix: one row per course with Enrolled, Completed, In Progress, Not Started and Completion %.
  6. The By group table (§7.2).

The page is calculated each time you open it, so it is always current. The headline numbers and the trend always cover your full scope; the filter bar narrows the matrix and the By group table only.


3 - Applying Filters

Filters work differently in the two places that have them:

  • Compliance Reports page: the filter bar has Groups, Enrolment language, Enrolled from and Enrolled to. Click Apply filters, or Clear to remove them. See §7.1.
  • Custom Report Builder: click + Add filter, then pick a field, a condition and a value. All filters must match at once. See §10.

The pre-built reports in §11 have their own controls (a learner picker, a date range, a page) rather than a shared filter bar. There are no saved filter presets; to keep a set of filters, bookmark the filtered Compliance Reports page (the filters are in its address) or save a custom report.


4 - Exporting Reports (LMS-730)

Each report exports from its own page:

WhereButtonFormatsWhat is exported
Custom Report BuilderExport, with a format menu beside itCSV or Excel (.xlsx)The full result, up to the builder’s 10,000-row limit (§4.2)
By group tableExport CSVCSVExactly the rows on screen, with your filters
Course Compliance MatrixExport CSVCSVThe courses shown (the first 50)
Overdue Training, Certificate Expiry ForecastExport CSVCSVEvery row in the current view, up to 10,000 (a message says when that limit applies)
Course Engagement, Learner Drill-Down, Active Users, Team RosterExport CSVCSVThe whole report
Session AttendanceExport by session (CSV), Export by learner (CSV)CSVThe whole report; needs report:export

In the builder, the export controls appear once a run returns rows:

  1. Run the report.
  2. Pick CSV or Excel (.xlsx) in the menu next to Export. CSV is the default.
  3. Click Export. The file downloads immediately.

4.1 Choosing a format

FormatFileBest for
CSV<name>-<date>.csvFeeding another system, or opening in any tool. All values are plain text.
Excel (.xlsx)<name>-<date>.xlsxReading and analysing in Excel. Dates are real dates and numbers are real numbers, so sorting, filtering and charts work without re-typing the columns.

The Excel workbook opens with a bold, frozen header row, a filter on every column, and column widths sized to the content. Column headers are in your interface language (English or French) when you export yourself, and in your organization’s default language in scheduled emails (§5).

4.2 Row limits

A builder run, and its export, returns at most 10,000 matching rows. To find them it reads up to 100,000 enrollments, so on a very large organization with a very selective filter the search can stop before every match is found. In both cases a banner says the result was cut: narrow the filters, starting with the status filter, and run again.

Exported files contain personal data. Treat exports as confidential.


5 - Scheduling Automated Email Delivery (LMS-547)

Saved custom reports can be emailed on a recurring schedule. The file is generated on our servers and attached to the email, so recipients do not need EmbayLMS accounts.

5.1 Schedule a report

  1. Open the Custom Report Builder and build (or load) the report you want to send.
  2. Under Email schedule, choose Daily, Weekly or Monthly (or Off to stop sending).
  3. Enter the recipients’ email addresses, separated by commas.
  4. Choose the File format for the attachment: CSV or Excel (.xlsx). Existing schedules keep sending CSV unless you change this.
  5. Give the report a name and click Save.

A scheduled report shows a 📅 badge with its frequency in the Saved reports list.

5.2 How delivery works

  • Once an hour, EmbayLMS checks every saved report and sends the ones that are due: daily means once per calendar day (UTC), weekly every 7 days, monthly once per calendar month. A newly scheduled report is sent at the next check.
  • The email subject is EmbayLMS report: <name>. The body gives the number of rows and the date, with the file attached as <name>-<date>.csv or <name>-<date>.xlsx.
  • A scheduled report covers the whole organization, whoever saved it. Only people with report:manage (Owner and Admin by default) can schedule one, so check the recipient list with that in mind.
  • The same 10,000-row limit applies (§4.2).
  • If sending fails, only that report is affected, and it is retried at the next check. Its last-sent time moves forward only once it is sent.

5.3 Change or stop a schedule

There are two ways, and neither replaces the report (LMS-962):

  • From the Saved reports list (fastest): Click Edit on the row. The row turns into a small form: name, frequency, Recipients, file format. Change what you need and click Save changes. The report’s columns and filters are untouched.
  • From the builder. Click the report’s name to load it, change the Email schedule fields, then click Save changes.

Set the frequency to Off to stop delivery while keeping the report. Deleting the saved report removes its schedule.

Before LMS-962 the only way to change a schedule was to delete the report and save a new one, which issued a new ID and broke any shared link (§6). Editing keeps the ID.


6 - Sharing a Report URL

Only saved custom reports can be shared by link:

  1. In Saved reports, click Copy link on the report’s row. The button briefly reads Copied!.
  2. Send the link to someone with the report:read permission.

The link points to the saved report, not to a snapshot of data. Whoever opens it sees the report run fresh, limited to what they are allowed to see, and the first 200 rows are shown. The shared view needs the Growth plan, like the builder.

To share a filtered Compliance Reports page instead, copy the page address after clicking Apply filters: the filters are part of it.


7 - Group-Level Reports

The Compliance Reports page carries a filter bar and a By group table (LMS-965).

7.1 The filter bar

FilterWhat it does
GroupsOne or more groups; the tables count the union of their members. The list is yours: Group admins see their groups, Managers the groups that hold someone in their report chain, Owners and Admins all groups.
Enrolment languageAll languages, the base language, or one of your organization’s additional course languages. Counts only enrollments taken in that language.
Enrolled from / Enrolled toOnly enrollments created inside the range (inclusive).

Click Apply filters. The filters are written into the page address (?groups=…&lang=…&from=…&to=…), so a filtered view can be bookmarked or pasted to a colleague, and Clear removes them. The Course Compliance Matrix and the By group table both follow the filters; the headline numbers and the enrollment trend stay at your full scope.

7.2 The By group table

One row per group you can see, over the current filters:

ColumnMeaning
MembersMembers of the group within your scope. A Manager’s row for “Sales” counts the part of Sales that reports to them, never the whole group.
Enrolled / CompletedEnrollments of those members (in published courses).
OverdueActive enrollments whose due date has passed.
Pass ratePassed quiz attempts over completed attempts inside those enrollments. It counts attempts, not learners, so a retake shows. A dash means nobody has completed a quiz.
Completion %Completed over enrolled.

Export CSV downloads exactly the rows on screen, with the filters applied. A group with no member in your scope is not listed.

7.3 Scope rules

A filter narrows what you can already see; it never widens it. Group admins are refused a group they do not administer; Managers filtering by a group get only the members in their chain; Instructors only their courses’ learners.


8 - User Drill-Down: Complete Learning History

There are two ways to see one person’s full history:

  • Learner Drill-Down (§11.3), under Analytics: pick a learner to see each course with its status, completion date, best score, time spent and certificate.
  • Their transcript: go to Users, open the person’s page and click View full transcript. It lists their courses and learning paths with status, start and completion dates, score, time and certificate. Download it with Export PDF or Export CSV.

Names in the report tables are not links; open the person from Users, or from Team Roster with Manage.


8b - Active Users Trend (DAU / WAU / MAU)

Under Analytics, Active Users (DAU/WAU/MAU) charts daily, weekly and monthly active learners from recorded sign-ins, over 30, 90 or 365 days, with Export CSV.

  • Daily active: distinct users who signed in that day.
  • Weekly active: distinct users over the previous 7 days.
  • Monthly active: distinct users over the previous 30 days.

The trend starts on the day sign-in tracking was introduced. Earlier activity cannot be rebuilt (only each user’s most recent sign-in was kept before), so a short series reflects how long tracking has run, not low engagement; the chart notes the start date. Sign-in events are kept for 24 months.

Each person’s own sign-ins are on their page: open them from Users and see the Login history panel (time and sign-in method; no IP addresses, which stay in the audit log only).


9 - Compliance Dashboard

The compliance dashboard is the Compliance Reports page that opens when you click Analytics.

9.1 Dashboard panels

PanelWhat it shows
Active Learners, Total Enrollments, CompletionsHeadline counts for your scope
Overall Completion RateCompleted enrollments over all enrollments. It does not check whether they were finished on time
Enrollment TrendNew enrollments per day over the last 7, 30 or 90 days
Course Compliance MatrixPer course: Enrolled, Completed, In Progress, Not Started, Completion %, in alphabetical order (first 50 courses), with Export CSV
By groupPer group: enrolled, completed, overdue, pass rate and completion %, filterable and exportable (§7.2)

Overdue learners and expiring certifications have their own reports: Overdue Training (§11.2) and Certificate Expiry Forecast (§11.4).

9.2 Overdue tracking

An enrollment is overdue when its due date has passed and it is not completed (or dropped). Due dates belong to enrollments, not to courses, so the same course can have different deadlines for different people.

Set a due date:

  • when enrolling someone from a course’s enrollments, or when assigning a course to a group, with the Due date field; or
  • later, by clicking the date in the Due column of an enrollment list.

An enrollment with no due date is never overdue.

9.3 Certificate expiry

  1. Open the course and find its certificate settings.
  2. Under Recertification (optional), set Valid for (months).
  3. When a certification is close to expiring, it appears in Certificate Expiry Forecast (§11.4), and the learner receives a reminder email. The reminder is sent 30 days before expiry by default; this lead time is a platform setting, not something you configure in the app.

10 - Custom Report Builder (LMS-296)

Open Analytics, then click Custom Report Builder at the top right.

  1. Columns: tick the columns you want, grouped by Learner, Course, Enrollment, Progress, Score and Group. Each row of a report is one enrollment (a learner in a course).
  2. Filters: click + Add filter, pick a field, a condition and a value. The conditions depend on the field: text contains / is / is not; status is / is not / is any of; number greater than / less than / is; date before / after. All filters must match at once.
  3. Group by a field (optional) to get counts per value instead of rows.
  4. Sort by any field, Ascending or Descending.
  5. Click Run report. Row reports show 50 rows at a time; a run returns at most 10,000 matching rows, and a banner appears when a limit is reached (§4.2).
  6. Type a name and click Save. Saved reports appear in the Saved reports list, where you can load, edit, rename, share or delete them (§10.1).
  7. Choose a format and click Export to download the full result (§4).

To email a saved report on a schedule, set an Email schedule on it (§5).

10.1 Editing a saved report (LMS-962)

Saved reports are shared by everyone in your organization: every person with report:manage sees and can edit the same list. With report:read alone you can view and run them, but not change them.

Load and edit in place: Click a report’s name in Saved reports. The builder fills in its columns, filters, grouping, sort and schedule. The bar above the filters reads “Editing” with the report’s name, and the row carries an Editing badge. From there:

ButtonWhat it does
Save changesUpdates this report. Its ID does not change, so its shared link (§6) and its schedule keep working. Disabled until something actually changes.
Save as newCreates a separate report from what is on screen and switches to editing that one. Use it to copy a report rather than overwrite it.
New reportClears the builder and leaves edit mode.

Rename, or change the schedule, without rebuilding: Click Edit on a row in Saved reports. Only the name, frequency, recipients and file format can change there; the report’s columns and filters are deliberately left alone, so a rename can never change what the report returns.

Unsaved changes are protected: Loading another report, or starting a new one, while you have unsaved edits asks you to confirm first. The bar shows an Unsaved changes badge whenever the form differs from what is saved.

Every update is recorded in the audit log with the old and new name, so you can see who changed a shared report and when.


11 - Advanced Analytics Reports (LMS-285)

Besides the Compliance Reports page and the builder, seven ready-made reports are linked at the top of the Analytics page. All need report:read, all show only people in your scope, and all export to CSV.

11.1 Course Engagement

One row per published course: Enrolled, Started, Completed, Dropped (including expired enrollments), Avg score, Avg time (min), Avg rating and Ratings. Click the Course, Enrolled, Completed, Avg score or Avg rating header to sort. Useful for spotting courses people start and abandon. On a very large tenant it reads the first 20,000 enrollments and says so.

11.2 Overdue Training

Every enrollment past its due date and not finished, with the Learner (and email), Course, Due date, Days overdue and the learner’s Groups (useful for knowing whom to follow up with). Shows 50 per page; Export CSV downloads every row, not only the page on screen.

11.3 Learner Drill-Down

In Choose a learner, type at least two characters of a name and pick the person from the list (arrow keys and Enter work too). You see each of their courses with Status, completion date, Best score, Time (min) and Certificate. Export CSV adds the enrollment date, due date, progress and number of attempts.

The list follows what you can see in the user directory: an administrator or a manager sees everyone, and a group administrator the members of their groups. An instructor sees only the learners in their courses, and an e-commerce administrator only themselves. A manager may therefore find people outside their team, but the report only opens for people their reports cover; for anyone else it says the history could not be loaded. To pick someone else, click Clear.

The address bar keeps the chosen learner, so you can bookmark the page or share the link. It opens on the same learner for anyone whose reports cover them; for anyone else it says the history could not be loaded.

11.4 Certificate Expiry Forecast

Certifications that lapse in the next 90 days, in three separate groups: Within 30 days, 31–60 days and 61–90 days. Each row shows the learner, their manager and the course. Certifications that have already expired are not listed; they show up as overdue once the course is due again. Export CSV downloads every row of the current view (all groups, or the one you picked).

11.5 Session Attendance

Attendance at in-person and virtual sessions. Exporting needs the report:export permission: Export by session (CSV) gives one line per session, Export by learner (CSV) one line per learner. See ILT attendance reporting.

11.6 Team Roster

One row per person in your scope with their assigned, completed and overdue training and their last activity. See How to use the My Team dashboard.


Configuration Reference

SettingWhereDescriptionDefault
Scheduled report frequencyBuilder → Email scheduleDaily, weekly, monthly or offOff
Scheduled report formatBuilder → File formatCSV or ExcelCSV
Enrollment due dateEnrollment → Due dateDrives overdue numbersNone
Certificate validityCourse → Valid for (months)Drives the expiry forecastNone

Dates in reports and schedules use UTC. The certificate reminder lead time (30 days) and the row limits (10,000 in the builder, 20,000 in Course Engagement) are fixed platform values.


Troubleshooting

A report shows no data

If the Compliance Reports page is filtered, click Clear. Remember that every report shows only people in your scope: a Manager with no one in their report chain sees nothing.

A scheduled report email was not received

Load the report in the builder and check that Email schedule is not Off, and that the recipients are spelled correctly: the addresses are not checked when you save. Check the plan: below Growth, schedules pause. Ask recipients to check their spam folder. Deliveries are attempted once an hour.

The Excel file shows dates or numbers as text

Export again and make sure you picked Excel (.xlsx) rather than CSV. A CSV renamed to .xlsx is still text; Excel only types the columns when it reads a real workbook.

The export has fewer rows than expected

  • In the builder, a run returns at most 10,000 matching rows (§4.2). If the banner appeared, narrow the filters and export again.
  • Overdue Training and Certificate Expiry Forecast export at most 10,000 rows; a message under the button says when that limit applied. Narrow the list (for example, one expiry group at a time).

Overdue numbers look wrong

Overdue depends on each enrollment’s due date (§9.2). An enrollment with no due date is never overdue, and a completed one never is. The page is always current: reload after a change.

Saving a loaded report created a second copy of it

You used Save as new, which is what it does. To update the report you loaded, use Save changes (§10.1). Before 2026-09-10 there was only one Save button and it always created a copy: delete the duplicate and keep the original, whose shared link and schedule still work.

Save changes is greyed out

Nothing has changed yet, the name is empty, or no columns are selected. The button turns on as soon as the form differs from what is saved.

The By group table is empty, or a group I expect is missing

Only groups with at least one member inside your scope are listed, and the filters apply to it. Clear the filters; if the group is still missing, it holds nobody you can see (Managers: nobody in your chain; Group admins: not one of your groups).

The Custom Report Builder is missing a field

The REST reports and export API cover more data. Contact EmbayLMS support to discuss it.

I can’t save, edit or schedule a report

Saving, editing, deleting and scheduling need the report:manage permission and the Growth plan; viewing needs only report:read. Ask an Owner or Admin to add report:manage to your role.