Blog

Product & Updates

SCORM Course Not Tracking Completion? 7 Things to Check

July 27, 2026

A SCORM package that uploads without error but never marks anyone complete is one of the most common — and most frustrating — problems in eLearning. It's almost always one of seven things.

1. The LMS completion rule isn't set

Most platforms default to manual or 'view once' completion. If the activity isn't explicitly told to read the SCORM status, it never will. Check the activity's completion settings first — this accounts for more failures than every other cause combined.

2. The rule doesn't match the status sent

SCORM 1.2 distinguishes completed, passed, failed and incomplete. If your package sends 'passed' and the LMS is checking for 'completed', nothing registers. Look at what the package actually sends, then match the rule.

3. The course never sets a status at all

Some authoring output only sets status when a specific condition fires — finishing a quiz, reaching a final page. If learners can reach the end without triggering it, they'll never complete. Test by finishing the course the way a lazy learner would.

4. The session isn't being closed

SCORM requires a LMSFinish call to commit the final state. If learners close the browser tab instead of using the course's exit control, the data may never be written. Courses that commit progress continuously rather than only at the end are far more robust.

5. You're testing as an admin

Admin and preview accounts frequently bypass tracking entirely. Always test with a genuine learner account before concluding anything is broken.

6. A popup blocker or iframe restriction

If the package launches in a new window that's blocked, or in an iframe with restrictive sandbox attributes, the API handshake fails silently. The course appears to work; nothing is recorded.

7. Mixed content over HTTPS

An LMS on HTTPS loading package resources over HTTP will have them blocked by the browser. Parts of the course may fail to load, including the scripts that report completion.

How to diagnose it quickly

  1. Open the course as a test learner with the browser console visible.
  2. Look for SCORM API errors — a failed LMSInitialize means the handshake never happened.
  3. Complete the course fully using its own navigation and exit control.
  4. Check the LMS report immediately. If there's an attempt but no completion, it's a status/rule mismatch. If there's no attempt at all, it's the handshake.

Working through those in order will find the cause in almost every case.