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
- Open the course as a test learner with the browser console visible.
- Look for SCORM API errors — a failed
LMSInitializemeans the handshake never happened. - Complete the course fully using its own navigation and exit control.
- 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.