How to Track Learner Progress with SCORM and xAPI
Tracking learner progress is the entire reason learning standards exist. Without tracking, e-learning content is just a website. With tracking, it becomes a measurable training program that can prove compliance, identify skill gaps, and justify training budgets. This guide covers exactly what data you can capture with SCORM and xAPI, and the practical methods for accessing that data in AllureConnect.
What SCORM Tracks
SCORM uses a structured data model called CMI (Computer Managed Instruction). Every SCORM-compliant LMS or hosting platform must support these core data elements:
| CMI element | What it records | Example value |
|---|---|---|
cmi.completion_status | Whether the learner finished the content | completed, incomplete, not attempted |
cmi.success_status | Whether the learner passed or failed | passed, failed, unknown |
cmi.score.raw | The raw numeric score | 85 |
cmi.score.scaled | Normalized score between -1 and 1 | 0.85 |
cmi.score.min / cmi.score.max | Score range boundaries | 0 / 100 |
cmi.total_time | Cumulative time spent across all sessions | PT1H23M45S |
cmi.suspend_data | Content-defined bookmark/state data | Arbitrary string (up to 4096 chars in SCORM 2004) |
cmi.progress_measure | How far through the content the learner is (SCORM 2004) | 0.6 (60% complete) |
These elements give you the essentials: did they finish, did they pass, what was their score, and how long did it take. For most compliance training and certification programs, this data is sufficient.
What xAPI Adds
xAPI (Experience API, also known as Tin Can API) uses a fundamentally different approach. Instead of writing to a fixed data model, content sends statements to a Learning Record Store (LRS). Each statement follows the structure:
{
"actor": {
"mbox": "mailto:jane.doe@example.com",
"name": "Jane Doe"
},
"verb": {
"id": "http://adlnet.gov/expapi/verbs/completed",
"display": { "en-US": "completed" }
},
"object": {
"id": "https://allureconnect.com/content/data-privacy-101",
"definition": {
"name": { "en-US": "Data Privacy 101" },
"type": "http://adlnet.gov/expapi/activities/course"
}
},
"result": {
"completion": true,
"success": true,
"score": { "scaled": 0.92, "raw": 92, "min": 0, "max": 100 },
"duration": "PT45M12S"
},
"timestamp": "2026-04-18T14:30:00Z"
}The power of xAPI is that you can define your own verbs and objects. Beyond completion and scoring, you can track:
- Video interactions: played, paused, seeked, completed (with duration watched)
- Question-level data: each question answered, with the learner’s response and whether it was correct
- Simulation events: steps performed in a virtual lab or scenario
- Social learning: comments posted, resources shared, discussions joined
- Context: which device was used, which team the learner belongs to, which instructor assigned the course
Three Ways to Access Learner Data in AllureConnect
AllureConnect provides three methods for accessing learner progress data, each suited to different use cases.
1. Dashboard — Visual Analytics
The AllureConnect dashboard provides a visual interface for exploring learner data. You can filter by package, learner, date range, and completion status. The dashboard shows:
- Per-package completion rates and average scores
- Individual learner timelines showing every session
- Time-on-task distributions and trends
- Export to CSV for spreadsheet analysis
The dashboard is ideal for training managers who need periodic reports, compliance auditors who need proof of completion, and content developers who want to see how learners interact with their courses.
2. API — Programmatic Access
For integrating learner data into your own systems, use the REST API. Key endpoints include:
GET /api/v1/sessions— retrieve session records with filters for package ID, learner ID, date range, and completion status. Returns CMI data for SCORM sessions and xAPI statement summaries for xAPI/cmi5 sessions.GET /api/customer/reports/learner-progress— aggregated progress reports with completion rates, average scores, and time-on-task metrics.GET /api/v1/xapi/statements— raw xAPI statements from the built-in LRS, filterable by actor, verb, activity, and time range.
The API supports pagination, sorting, and JSON or CSV response formats. Use it to build custom dashboards, feed data into business intelligence tools, or sync completions to your HR system.
3. Webhooks — Real-Time Push Events
Webhooks push events to your systems as they happen, eliminating the need to poll the API. AllureConnect supports webhook events for:
- session.completed — fired when a learner reaches
completedstatus - session.passed / session.failed — fired when a score crosses the passing threshold
- session.launched — fired when content is opened
- session.score_updated — fired when a score value changes
Each webhook payload is signed with HMAC-SHA256, so you can verify it came from AllureConnect. Failed deliveries are retried with exponential backoff for up to 72 hours.
Comparison: Dashboard vs API vs Webhooks
| Capability | Dashboard | API | Webhooks |
|---|---|---|---|
| Real-time | Near real-time (refresh) | On-demand | Instant push |
| Historical data | Full history | Full history | Current events only |
| Custom filters | UI filters | Query parameters | Event type subscription |
| Integration effort | None (browser) | API client code | HTTP endpoint + signature verification |
| Best for | Manual reporting, audits | BI tools, custom dashboards | Slack alerts, CRM sync, automation |
Practical Use Cases
Compliance Reporting
Export completion records as CSV from the dashboard, or use the API to pull completions for a specific date range and generate audit-ready reports. Filter by course, department, or learner to produce exactly the evidence your compliance team needs.
Performance Dashboards
Use the API to feed learner progress data into tools like Tableau, Looker, or a custom React dashboard. Track average scores over time, identify courses with high failure rates, and measure training effectiveness across teams.
Real-Time Alerts
Configure webhooks to post to a Slack channel when a learner completes a required certification. Send completion events to your CRM to update customer training records. Trigger follow-up emails when a learner fails an assessment.
Best Practices
- Track at both SCORM and xAPI levels when possible. SCORM gives you standardized completion and score data that every system understands. xAPI gives you the granular interaction data that drives deeper insights.
- Use webhooks for time-sensitive workflows and the API for historical reporting. Do not poll the API on a short interval when a webhook would give you instant notifications.
- Normalize learner identifiers across systems. Use email addresses or employee IDs consistently so you can correlate data across your LMS, HR system, and AllureConnect.
- Archive raw data. AllureConnect retains all session data, but exporting periodic snapshots to your own data warehouse ensures you have a backup and can run complex queries across multiple data sources.