Guides||10 min read

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 elementWhat it recordsExample value
cmi.completion_statusWhether the learner finished the contentcompleted, incomplete, not attempted
cmi.success_statusWhether the learner passed or failedpassed, failed, unknown
cmi.score.rawThe raw numeric score85
cmi.score.scaledNormalized score between -1 and 10.85
cmi.score.min / cmi.score.maxScore range boundaries0 / 100
cmi.total_timeCumulative time spent across all sessionsPT1H23M45S
cmi.suspend_dataContent-defined bookmark/state dataArbitrary string (up to 4096 chars in SCORM 2004)
cmi.progress_measureHow 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 completed status
  • 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

CapabilityDashboardAPIWebhooks
Real-timeNear real-time (refresh)On-demandInstant push
Historical dataFull historyFull historyCurrent events only
Custom filtersUI filtersQuery parametersEvent type subscription
Integration effortNone (browser)API client codeHTTP endpoint + signature verification
Best forManual reporting, auditsBI tools, custom dashboardsSlack 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.

Ready to try AllureConnect?

Start hosting SCORM content in minutes with a free sandbox account. No credit card required.

Related Articles