CASE STUDY
How we helped EMASEA create SCORM-compliant e-learning content in record time.
November 12, 2026
CONTENT CREATED BY:

Table of contents
An SCO — Sharable Content Object — is the smallest unit of content an LMS can launch and record results for within the SCORM standard. Put briefly: when your platform notes that an employee has completed something, what they completed is an SCO.
It’s a technical concept with very practical consequences for anyone managing training. The way a course is split into SCOs decides what your LMS can measure: if the whole course is a single SCO, all you’ll know is whether someone finished it; if it’s split into six, you’ll know exactly which one people get stuck on. That decision is made when the course is published, and it’s expensive to undo afterwards.
SCORM classifies everything inside a package into two kinds of resource: assets and SCOs. And the boundary between them comes down to one thing.
An asset is static content shown to the learner: an image, a PDF, a video, a stylesheet. It gets presented and that’s it. An SCO is also made of one or more files, but it has to be able to communicate with the LMS through the Runtime API. That ability to talk to the platform is the only thing that turns a resource into an SCO.
The consequence is very concrete: if you package a PDF as an asset, your LMS will be able to display it, but it won’t know whether anyone opened it. For there to be a record, that piece has to be an SCO.
| Criterion | Asset | SCO |
|---|---|---|
| What it is | One or more static content files: an image, a PDF, a video, a stylesheet. | A unit of instruction made of one or more files, designed to teach something specific. |
| Does it talk to the LMS? | No. It is shown to the learner and sends nothing back. | Yes, and it is mandatory: it is precisely what makes it an SCO. |
| Can it be tracked? | No. The LMS doesn’t know whether it was viewed or for how long. | Yes: status, score, session time and bookmark. |
| Does the LMS launch it? | Not directly. It is usually part of another resource. | Yes. It is what opens when the learner clicks the course. |
| What it’s for | Supporting material and resources shared by several SCOs. | The piece of training you want data about. |
The specification imposes three obligations on any SCO. If any of them fails, the content will look the same but tracking won’t work:
API in SCORM 1.2 and API_1484_11 in SCORM 2004. If it can’t locate it, no tracking is possible.Initialize — LMSInitialize in 1.2 — before sending or requesting a single piece of data.Terminate — LMSFinish in 1.2 — on every exit path, including closing the tab without warning.And there’s a rule about direction that explains a good share of tracking problems: the conversation is always started by the SCO. The LMS answers when asked, but never asks. If the SCO goes quiet, the platform has no way of finding out what happened: it simply records nothing.
This is the most important practical decision around the concept, and almost nobody makes it deliberately: it gets inherited from whatever the authoring tool does by default. It’s worth deciding, because each SCO has its own record in the LMS and that defines the level of detail of every report you’ll see afterwards.
The rule of thumb is the same one that governs any learning object: an SCO should cover a single learning objective, be small enough to be reused in another course and big enough to teach something on its own. Between those two extremes, choose according to what you need to measure:
| Approach | What you see in the LMS | When it suits |
|---|---|---|
| A single SCO for the whole course | Only the overall result: complete or not, and a score. | Short courses, box-ticking mandatory training, or when your LMS struggles with sequencing. |
| Several SCOs, one per module | Module-by-module progress: where people drop out and which part is hardest. | Long learning paths, role-based training, and when you want to reuse individual modules in other courses. |
| One SCO per small activity | Plenty of detail, but the report becomes hard to read. | Almost never: it multiplies maintenance and complicates sequencing without changing any decision. |
Every SCO has its own set of data in the LMS, separate from the others’: completion status, score, session time, bookmark and a free field, cmi.suspend_data, where the course stores its internal state so it can resume.
Two things follow from that which surprise a lot of people the first time:
SCOs don’t talk to each other. There is no direct channel between them. If module 3 needed to know what the learner answered in module 1, the standard doesn’t provide for it: what decides the order and the conditions for moving on is the sequencing declared in the imsmanifest.xml, not the content.
The resume field has a ceiling. According to the specification reference, cmi.suspend_data allows 4,096 characters in SCORM 1.2 and 64,000 in SCORM 2004 (3rd and 4th edition). It is the most common reason a long course “loses” the point where the learner left off: the content tries to save more state than fits, and the excess is discarded without warning.
You don’t need to write a line of code for this to affect your work. These are the decisions where it shows up:
EMASESA, the municipal water company of Seville, used isEazy Author to create its SCORM courses in record time and publish them straight to its LMS, with precise progress tracking for the HR team.
See how EMASESA created its e-learning courses →
The SCO solved the problem it was designed for very well — content that’s portable across platforms — but it has clear boundaries:
Day to day, whoever designs the training doesn’t build SCOs by hand: the authoring tool generates them on publication. What they do decide is the configuration, and that’s where it pays to know what you’re choosing.
isEazy Author publishes in SCORM 1.2 and SCORM 2004, generating the complete package — manifest, resources and the session start, save and close calls — with no additional technical configuration. That avoids the two most repeated failures: courses that stay “incomplete” because they never close the session, and courses that don’t resume where the learner left off because they overflow the state field.
An asset is static content shown to the learner — an image, a PDF, a video — that doesn’t communicate with the platform. An SCO is also made of files, but it is required to communicate with the LMS through the Runtime API, and it is that ability that makes it an SCO. The practical consequence: an asset leaves no record at all, whereas for an SCO the LMS stores completion status, score, time and bookmark.
It depends on the level of detail you need in your reports, because each SCO generates its own record in the LMS. With a single SCO for the whole course, all you’ll know is whether it was completed and with what score. With one SCO per module you’ll see where people drop out and you’ll be able to reuse individual modules in other courses. Going down to the level of individual activities almost never pays off: it multiplies maintenance without changing any decision. The usual rule is one SCO per learning objective.
Not directly. Each SCO has its own set of run-time data, isolated from the others, and the standard defines no communication channel between them. What does exist is the sequencing declared in the imsmanifest.xml file, which makes it possible to condition access to one SCO on another’s results. If you need the content to react to decisions made in an earlier module, that is solved in SCORM 2004 sequencing or by moving to xAPI.
They are related but not the same. A learning object is a pedagogical concept: any reusable digital resource that helps people learn. An SCO is its technical expression within SCORM: a learning object packaged so that an LMS can launch and track it. Every SCO is a learning object, but many learning objects — a standalone video, an infographic — are not SCOs, because they don’t communicate with any platform.
With visually appealing content and ready-to-use resources. Select, customize, and done!
Try it freeRequest a demo
