What is a headless LMS?
A headless LMS is a learning management system without its own learner-facing front end. It keeps the courses, progress, scores and certificates, and hands them to your product through an API and an embeddable player — so people learn inside the software they already use, not in a separate portal.
What is a headless LMS?
The term borrows from headless CMSs, which did the same thing to websites: keep the content and its editing on one side, and let any front end ask for it. In a headless LMS the thing being served is a course, and what comes back is as important as what goes out — a headless LMS has to report who opened it, how far they got, what they answered and whether they passed.
How is it different from a traditional LMS?
A traditional LMS is a destination. Learners get an invitation, create an account, log in to a catalogue and take courses there. A headless LMS is a service your product calls. The differences follow from that one change:
| Feature | Traditional LMS | Headless LMS |
|---|---|---|
| Where learners go | A separate portal, usually on the vendor's domain | Nowhere new — training renders in your product |
| Learner identity | An account in the LMS, or SSO into it | The user id you already have, passed by your backend |
| Who owns the interface | The LMS vendor | You — themed, embedded, or built on the API |
| How results come back | Reports inside the LMS, exports | API reads and webhooks into your own systems |
| Typical pricing basis | Seats or active learners | Usage — calls, views or completions — varies by vendor |
What does a headless LMS actually do?
Take the portal away and five jobs remain. A headless LMS worth the name does all of them:
- Hold the content. Courses, their screens, questions and media, with drafts and publishing — authored in a dashboard, over the API, or both.
- Deliver it. An embeddable player (usually an iframe) for the common case, and the API for teams that want to render everything themselves.
- Know who is learning. Accept your user's id from your backend — ideally signed, so nobody can claim to be someone else by editing a URL.
- Record what happened. Views, progress, answers, scores and completions, readable over the API and pushed as webhooks the moment they happen.
- Prove it and move it. Certificates a third party can verify, and exports — SCORM for a customer's own LMS, raw data for yours — so the content is never stuck.
How does the integration work?
The integration is small because the LMS does the hard part. With Underlayer it is three steps; other headless platforms differ in the details but not the shape:
- Create and publish a course — in the dashboard, with
POST /api/v1/courses, or by asking an AI client through the MCP server. - Put one iframe where your users already are, with their id signed by your backend so the player knows who is learning without a second login.
- Listen for results — a
course.completedwebhook carries the learner, score and pass/fail into your own database.
<iframe
src="https://underlayerhq.com/embed/COURSE_ID?identity=usr_8f2k&expires=1767225600&signature=9c1e…"
width="100%" height="600" style="border:0"
></iframe>The signature is an HMAC of the identity and expiry, made on your server with a secret that never reaches the browser. The embed docs have the full signing code, and the quickstart goes from an API key to a finished course in ten minutes.
When do you need one?
A headless LMS earns its place when the training is part of a product rather than a program:
- Onboarding and feature adoption for your own customers, shown next to the feature it explains.
- Certification or enablement for partners and resellers, inside the partner portal you already run.
- Training that is itself a feature of your software — an HR, compliance or field-service platform that sells courses to its own customers.
- Any case where asking learners to create one more account would cost you most of them.
- Any case where paying per seat for learners who never open a course makes the economics fail.
When is a traditional LMS the better fit?
Headless is not always the answer. If what you need is a standalone academy — a public catalogue, course sales and checkout, learner profiles, discussion forums — a traditional LMS or a customer education suite ships all of that ready-made, and rebuilding it on an API is work you would not need to do. The same goes for internal compliance training for your own staff, which usually belongs in the HR system your company already has.
A useful test: if the answer to “where should this training appear?” is “inside our product”, you want headless. If it is “on its own site”, you probably don't.
What to check before you choose one
Most platforms now say “API-first” or “embeddable”. These questions separate the ones that mean it:
- Can a learner take a course embedded in your product without creating an account with the vendor?
- Is the learner's identity signed by your backend, or can anyone open a course as anyone by changing a URL?
- Does the API cover the whole lifecycle — create, update, publish, translate, read results — or only reporting?
- Are webhooks signed, retried, and fired for the events you care about (completion, score, certificate)?
- Can you export a course as SCORM when a customer insists on running it in their own LMS?
- Is the price published, and what is it priced on — seats, active learners, or usage?
- Can you get all of your content and learner data out, on every plan?
How Underlayer does it
Underlayer is built to be exactly this, so every answer above is yes. Courses are built from 39 block types over the REST API, the dashboard builder, the MCP server or AI drafting from a document; they embed with one signed iframe; completions arrive as signed webhooks; and any course exports as SCORM 1.2 or 2004. The course editor itself can be embedded too, for products whose users write training rather than take it.
It is priced on course views rather than seats, and every number is on the pricing page: Build is $149 a month for 25,000 views, with a free sandbox to try the whole platform first. Courses export as JSON and SCORM and learner records as CSV on every plan.