Identify the tracking requirements: if you need only completion status and a single final score within an LMS-delivered course, SCORM 1.2 is broadly supported and sufficient; if you need granular interaction data, offline tracking, mobile tracking, or cross-system data aggregation, xAPI is required.
Assess the LMS environment: confirm whether the target LMS supports xAPI (Tin Can) and whether an LRS is available or can be provisioned; SCORM 1.2 is supported by virtually all LMS platforms while xAPI support varies.
For SCORM 1.2, package course content with a conformant imsmanifest.xml and use the SCORM 1.2 JavaScript API calls (LMSInitialize, LMSSetValue, LMSGetValue, LMSCommit, LMSFinish) against the window.API object injected by the LMS.
For xAPI, configure the content with the LRS endpoint URL, authentication credentials, and an actor identifier at launch time (often delivered via launch URL parameters or cmi5 launch data); use a client-side xAPI library to construct and send statements.
If your LMS supports both, consider cmi5 as an xAPI profile that provides structured launch, session management, and move-on criteria — it fills the lifecycle management gap that raw xAPI leaves undefined.
Document your decision rationale including LMS support matrix, authoring tool output formats, and analytics requirements; changing tracking standards after deployment requires re-authoring and re-publishing all content.
Known gotchas
SCORM 1.2 stores data in a flat key-value model (cmi.* data model elements) and has a 4,096-character limit on the cmi.suspend_data field; complex state serialization exceeding that limit silently truncates data.
xAPI does not define session lifecycle management — content can send statements at any time with no required start/finish ceremony — which means without a profile like cmi5, LMS platforms cannot reliably determine completion or enforce move-on logic.
SCORM 1.2 requires course content to run inside the LMS browser session to access the window.API object; it cannot track activities occurring outside the LMS (mobile apps, simulators, offline experiences) without a wrapper shim.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp