How Tessera makes SCORM and xAPI work
SCORM and xAPI are the standards that let an LMS launch a course and record what happened. They're notoriously fiddly, and with Tessera you never touch them: the runtime translates what happens in your course into whatever dialect the LMS speaks.
What the runtime handles for you
- The handshake. Connecting to the LMS at launch, closing the session cleanly at exit.
- Progress and resume. Where the learner is, what they've visited, and their quiz results, restored when they come back tomorrow.
- Completion and pass/fail. Decided by rules you choose (below) and reported in the form each standard expects.
- Scores and per-question results. Quiz outcomes land in the gradebook, question by question.
- Navigation gating. Sequential unlocking and "pass this quiz to continue" rules, enforced consistently.
- Failing loudly. If a course is launched somewhere it can't track, learners see a clear "this course can't run here" message, never a silent failure that costs someone their completion record.
The five export targets
| Standard | What it is |
|---|---|
| SCORM 1.2 | The classic. The safest bet for older LMSs; nearly everything supports it. |
| SCORM 2004 | The modern SCORM (4th edition). Tracks completion and pass/fail independently and holds more saved state. |
| cmi5 | The current-generation standard: xAPI-based, made for LMSs that support it. |
| xAPI | Statement-based tracking to a Learning Record Store, for analytics beyond completion and score. |
| Web | No LMS at all: a static site you can host anywhere. Progress saves in the learner's browser. |
Not sure which your organisation needs? Ask whoever runs your LMS which of these it accepts; when several work, prefer SCORM 2004 or cmi5 over SCORM 1.2. And the choice isn't final: the same course source exports to any of them.
How completion is decided
Every course picks one completion rule; your assistant sets it from a sentence:
- By pages visited (the default): complete when the learner has seen all pages, or any percentage you choose. A quiz page counts only once its quiz has been submitted, pass or fail, and a page of graded questions once all of them are answered.
- By quiz result: complete when the course score, the weighted average of the graded pages, meets the passing score.
- Manually: complete at a moment you define, like reaching the final page or clicking "I acknowledge".
How pass/fail is decided
Passing is set separately from completing. By default it follows the completion rule: courses completed by pages visited or by quiz result are judged on the course score, and manual courses send no pass or fail. Your assistant can change that to any of three rules:
- By course score: pass or fail against the passing score, even in a course completed manually.
- Fixed: every learner who completes is marked passed (or failed).
- None: never send a verdict; completion and score still report.
A "failed" is reported as soon as every required graded page has a score, but a "passed" waits until the course is complete. On cmi5, a "failed" is held until the session ends, so a learner who retakes and passes in the same session sends only the pass. Once a learner passes, the pass is never taken back, and the LMS keeps their best score from then on.
Differences that actually matter
Tessera hides the protocol differences, but a few behaviours are inherently standard-specific and worth knowing:
- SCORM 1.2 has one status field for both completion and pass/fail, so a verdict replaces the completion status. "Failed" shows as soon as the score is final, even mid-course, and a learner who failed can't also show as complete the way they can on SCORM 2004 and cmi5.
- SCORM 1.2 has a tiny memory (about 4 KB of saved state). Tessera budgets it automatically, but a course that saves lots of custom state per learner is happier on SCORM 2004 or cmi5.
- The LMS can impose its own pass mark at launch, on SCORM 1.2, SCORM 2004, and cmi5 alike, overriding the one set in the course. That's the standard working as designed.
- Courses completed by quiz result carry their pass mark. The SCORM manifest or cmi5 course structure declares the passing score, so the LMS can judge pass/fail itself without an admin entering a mark.
- Resume is protected. Saved progress restores automatically, but if the course's page structure changed since, or the course moved to a Tessera version that saves progress differently, it starts fresh rather than restoring wrongly. When you update a shipped course, upload it as a new version in your LMS instead of overwriting in place.
Richer analytics with xAPI
Completion and score are the floor, not the ceiling. Any component can emit custom xAPI statements: which scenario branch a learner chose, how far through the video they got, what they clicked. Statements can go to the LMS's own record store (on cmi5 and xAPI exports), to an external analytics LRS from any export, or to several destinations at once. The moving parts live in Under the hood.
"Send an xAPI statement each time a learner finishes a branch of the module 2 scenario, including which branch they took."