Course Management
This guide explains how to create, edit, and structure courses in EmbayLMS as an Admin or Owner. Instructors can edit the content of their assigned courses, but cannot create, publish, archive, or delete courses.
Prerequisites
- Role: Admin or Owner (course creation and lifecycle). Instructors can edit content of the courses they are assigned to.
- Tenant must be provisioned and active
Create a course
- In the left sidebar, navigate to Courses.
- Click New Course.
- Fill in the fields (only the title is required):
| Field | Description |
|---|---|
| Title | Display name shown to learners (required) |
| Course language | The language the course is authored in. You can add more languages later from the course editor |
| Short description | One-line summary shown on catalog cards |
| Description | Full overview shown on the course detail page |
| Category | Subject classification, used for catalog filtering (optional) |
| Folder | Admin organization, where the course is filed in your library (optional) |
| Estimated duration (minutes) | Shown to learners (optional) |
- Click Create Course. The course is created as a Draft (not visible to learners until it is published) and you are taken to the course editor.
Skills are attached after creation, from the course editor’s Settings tab (Skills mapping).
Tip: If you have a folder selected in the tree (left of the course list) when you click New Course, the new course is created in that folder.
Categories vs. folders — two different things
These are distinct and serve different purposes:
| Category | Folder | |
|---|---|---|
| Purpose | Subject classification of the course | How you organize your library |
| Seen by | Learners (catalog filtering) | Admins only |
| Set where | The course editor (Details tab) | The folder tree (drag-and-drop) or the editor |
| Structure | Managed under Categories | Multi-level tree, reorganized by drag-and-drop |
A course can have a category and sit in a folder — they’re independent.
Organize courses into folders
The Courses page has a unified folder tree on the left showing your folders and the courses filed in them. Folders can be nested as deeply as you like.
- All courses — clears the filter and shows every course.
- A folder — filters the list to courses filed in that folder and its subfolders.
- Unfiled — courses that are in no folder.
Each folder shows a course count. Use the ▸ chevrons to expand or collapse a branch.
Reorganize by drag-and-drop
Click Organize (top of the tree) to enter edit mode, then:
- Create a folder — click New folder (root level) or the + that appears when you hover a folder (sub-folder). Folders are named “New folder” — double-click to rename.
- Re-nest a folder — drag it onto another folder to make it a child, or drag it out to the root to make it top-level again. Re-parenting works in any direction. A folder can never be dropped into one of its own sub-folders.
- Move a course — drag a course onto a folder to file it there, or out to the root to unfile it. Every row also has a Move to… button that does the same without dragging. You can also set the folder from the course editor’s Details tab.
- Delete a folder — click the trash icon. Its sub-folders move up to the parent and its courses become Unfiled — nothing is lost.
Click Done to leave edit mode. Every change is saved immediately and audit-logged.
The course list table shows each course’s Category, read-only; the folder is not a column. File courses through the tree (or the Details tab), and set the category in the course editor.
Edit course details
The course editor is organized into tabs. Each person sees the tabs their role allows:
- Details: Title, descriptions, category, folder, thumbnail, duration and base language.
- Modules: Add, order, and configure the course’s content modules (see below).
- Enrollments: Who is enrolled, enrollment rules and the groups the course is assigned to.
- Pricing: The course price, when you sell courses (Owners and E-commerce Admins).
- Instructors: Assign the course’s teaching staff (see below).
- Versions: Every published version of the course; restore an older one as a new draft.
- Settings: Course info, the Skills mapping link, catalog visibility and schedule, enrollment, certificate, discussions, ratings, version changes, prerequisites, languages and the post-course survey.
On the Details tab, click Save changes after editing.
A published course opens read-only, so nobody changes the live course by accident. Click Start new version to create an editable draft; learners continue on the published version until you click Publish new version. Discard draft throws the draft away and returns to the published version.
Instructors tab (LMS-668)
The Instructors tab manages the course’s teaching staff — the assignments that give
a user with the Instructor role access to this course. To add one, type at least
two letters of their name or email in Add an instructor, pick them from the list
(arrow keys and Enter work too), then click Add. To remove one, click Remove on
their row. The list offers only people who already hold the Instructor role, and leaves
out anyone already assigned to this course; if someone you expect is missing, give them
the Instructor role first. Assigned instructors can edit the
course’s content and attachments, schedule and run its ILT/VILT sessions, grade, and
see analytics for it — but cannot publish, archive, or delete the course. The tab is
visible to Admins and Owners (user:assign_role); every assignment change is
audit-logged. See Roles and Permissions for the full
Instructor permission set.
Prerequisites (require other courses or paths first)
On the Settings tab, the Prerequisites card lists the courses and/or learning paths a learner must complete before enrolling in this course. It is a course-level setting, editable on a published course without a new version. See Prerequisites.
Course thumbnail
The thumbnail is the image shown as the background of the course card everywhere the course appears — the catalog, the learner Home, and search results. When no thumbnail is set, the card uses your brand gradient.
- Open the course editor (Details tab).
- In the Thumbnail field, click Upload (or Replace if one is already set).
- Choose an image. Wide images (16:9) look best on the card.
- Click Save changes to apply.
To revert to the brand gradient, click Remove, then Save changes.
| Setting | Requirement |
|---|---|
| File types | PNG, JPG, or WebP |
| Maximum size | 5 MB |
| Recommended ratio | 16:9 (wide) |
| Default when unset/removed | Brand gradient (no image) |
Thumbnails are stored encrypted (SSE-KMS) and served via CloudFront. A replaced image gets a fresh URL, so learners always see the latest version immediately.
Manage modules
Modules are the content units inside a course (videos, documents, SCORM packages, quizzes, etc.).
Add a module
- On the course editor, click the Modules tab.
- Click Add Module.
- Enter the module title and choose a module type:
| Type | Description |
|---|---|
| SCORM Package | Upload a SCORM 1.2 or 2004 package (.zip) |
| cmi5 Package (xAPI) | Upload a cmi5 package (.zip) |
| AICC Package | Upload an AICC package (.zip) |
| Video | Upload an MP4, WebM or MOV file |
| YouTube / Vimeo | Link a YouTube or Vimeo video by its URL (YouTube Shorts are not supported) |
| Audio | Upload an MP3, WAV, OGG or M4A file |
| Document / PDF | Upload a PDF, Word (DOC/DOCX), PowerPoint (PPT/PPTX), or Excel (XLS/XLSX) file — all display inline in the player (see below) — or an image (PNG, JPG, GIF, WebP) |
| Web Page (iframe) | Embed an external URL in a sandboxed frame. The site must be on your organization’s embed allowlist (an Owner manages it under Settings → Content policy), unless the list is empty |
| Quiz / Assessment | In-platform quiz (see the Quiz & Assessment Authoring guide) |
| HTML Lesson | Build the lesson in the built-in block editor (Lesson content), or upload a zipped web page (.zip) |
| ILT / VILT Series | Instructor-led sessions, classroom or virtual; schedule them with Manage Series |
| Downloadable Archive (ZIP) | Upload a ZIP the learner downloads as-is — templates, sample files, a toolkit. The archive is never unpacked or displayed; for a browsable zipped web page use the HTML Lesson type instead |
- For Web Page (iframe) and YouTube / Vimeo, enter the URL.
- Click Add Module. The module appears in the list.
- For file-based types, click Upload on the module’s row and select the file from your computer (maximum 500 MB). The file shows a malware-scan badge (Clean, Not scanned, Scanning… or Infected); a file flagged Infected is never served to learners.
- To add a description or change the completion options below, click Edit on the row, then Save.
Add captions to a video (LMS-1160)
Captions let people follow a video without sound, and WCAG 2.2 AA requires them on
prerecorded video. You add them as a WebVTT (.vtt) file, one per language.
- Find the video module and click Captions under its file.
- Choose the Language, select the
.vttfile under Caption file, and click Upload captions. - Repeat for each language. A file for a language that already has captions replaces them.
Learners get a captions button (often shown as CC) in the video player. Captions start off; when a learner turns a language on or off, the choice is remembered for their next videos. If a language version of the course has its own video, add that video’s captions from the language’s tab, in the same way.
| Field | What to enter |
|---|---|
| Language | The language the captions are written in |
| Caption file | A WebVTT file that starts with WEBVTT, up to 512 KB. Convert .srt files to .vtt first; most subtitle tools can |
What is kept: the timing, position and text of each caption. Notes and styling inside the file are removed. You can add or replace captions on a published course without creating a new draft.
Office documents display inline
PDFs have always displayed directly in the player. Word, PowerPoint, and Excel files are converted to a PDF preview automatically shortly after upload, so learners read them inside the course instead of having to download them.
- After you upload an Office file, its module shows a Preparing preview… badge. Conversion usually finishes within a minute or two; the badge changes to Inline preview when the module is ready to display inline.
- The preview is a faithful PDF snapshot of your file. Very complex slide effects (3D, animations, embedded video) do not carry into a PDF — check the preview after upload if your deck relies on them.
- Learners who download the module (when downloads are allowed — see the download control below) always receive your original file, not the preview.
- If a file cannot be converted, the badge reads Preview unavailable — download only and the module behaves exactly as before: learners download the file to read it. Nothing breaks — but consider re-saving and re-uploading the file if you expected an inline preview.
How modules complete (and what completes the course)
A course completes — and issues its certificate — only when the learner finishes every required module. Each module type completes its own way:
| Module type | Completes when… |
|---|---|
| Video / audio (uploaded file, or a YouTube / Vimeo link) | Played to ~90%. For YouTube and Vimeo the player reports progress through the provider’s player API, so the tick appears the moment the threshold is crossed — the learner does not need to click Next module first |
| Document / HTML / iFrame | Opened and viewed (scrolled to the end for documents) |
| SCORM / AICC | The package reports completed or passed (CMI status). Turn on Require a passing result to complete this module to accept only passed — see below |
| Quiz | The learner meets the passing score |
| ILT / VILT series | A learner marked present at any session of the cohort they chose (the default). Set Completes when to Present at every session to require attendance at every scheduled session — see below |
| Downloadable Archive | The learner downloads the file (first download completes it); you can also enable Let learners mark complete as an alternative |
Clear a module’s Required to complete the course checkbox to make it optional — optional modules don’t gate completion. Course progress on the learner’s Home is the percentage of required modules completed.
Self-completion — for a passive module (video, audio, document, web page, YouTube / Vimeo, HTML lesson or archive) you can turn on Let learners mark complete so a learner can check it off manually. This is off by default.
Requiring a passing result (SCORM and AICC modules) — by default a package that
reports completed ticks the module even when its own assessment reports
failed, because SCORM treats completion (the learner went through it) and
success (they passed) as separate signals. Tick Require a passing result to
complete this module on a module whose result matters — a certification test,
a compliance course — and only a passed result completes it: SCORM 1.2
lesson_status = passed, SCORM 2004 success_status = passed, AICC passed
(a mastery score in the package is still honoured). A failed result, or a
package that closes without reporting any status, leaves the module open and the
learner can launch it again. Off by default, so existing courses keep their
current behaviour until you opt in.
ILT series attendance rule — an ILT / VILT series module has a Completes when setting:
| Setting | The module completes when… |
|---|---|
| Present at any session (default) | The learner is marked present at one session of the cohort they chose |
| Present at every session | The learner is marked present at every scheduled (non-cancelled) session of that cohort. A session added to the cohort later counts from then on |
The rule applies however attendance is recorded — the roster, the QR check-in, or the Zoom join/leave automation. Once a module has completed it stays completed; changing a learner to absent afterwards does not take the credit back.
Control whether learners can download a file (LMS-194)
Video, audio and document modules carry a Let learners download this file checkbox in the module editor. It is on by default, so nothing changes for existing courses.
Turn it off on a module whose file should be read in the platform but not taken away — a licensed handbook, a document under an NDA, an exam paper.
| Setting | Learner sees |
|---|---|
| On (default) | The content as usual, plus a Download button and (for PDFs) an Open in new tab link |
| Off | The content as usual, with a short “Downloading is turned off for this item” note where the buttons were |
Viewing is never affected. Turning download off does not hide the module, does not stop it playing, and does not change how it completes. It withholds the file, not the lesson.
The control appears only on video, audio and document modules. An iFrame or YouTube module points at a file on someone else’s server, and a SCORM package is an extracted runtime rather than a document — in neither case is there a file we could withhold, so offering the checkbox would promise a restriction we do not enforce. A Downloadable Archive module doesn’t offer the checkbox either, for the opposite reason: downloading is the module’s entire purpose, so the setting is permanently on and the editor says so in place of the checkbox.
How it is enforced. The Download button is only an affordance. The server mints a short-lived (15-minute) signed link on each click and refuses outright when the module’s download is off, when the caller is not enrolled in the course, or when the file was flagged by the malware scan (once malware scanning is switched on for your platform, also until the file has been scanned). There is no long-lived URL sitting in the page for someone to copy.
This is a policy control, not DRM. A learner who can view a document can still screenshot it, print it, or pull it out of the browser’s developer tools. Use this to set an expectation and to keep files out of casual circulation — not as a technical guarantee for material that would genuinely harm you if it leaked.
Reorder modules
Use the ▲ / ▼ arrows beside each module row to change the order. The order is saved immediately.
Edit or delete a module
- Click Edit on the row to change the title, description, type, URL or completion options, then click Save.
- Click Delete and confirm to remove the module and its files from the version you are editing. Learners’ completion records are not touched: they belong to the published version, which keeps its own copy of every module until you publish the new one.
Publish a course
- Open the course editor.
- Verify that all modules are in the correct order and all required fields are filled.
- Click Publish in the top-right corner.
- The course status changes to Published and becomes visible in the learner catalog.
Note: A published course cannot be edited in place. Click Start new version to create a Draft version, make your changes, then click Publish new version when ready. The Versions tab lists every published version.
Free plan course limit: the Free plan includes 3 active (published) courses. Publishing a 4th is blocked with an upgrade prompt — archive a published course to free a slot (an archived course cannot be re-published from the admin console today), or upgrade to any paid plan for unlimited courses. Courses that are already published are never affected retroactively.
Preview a course as a learner (LMS-942)
Preview opens the real player against the real content, with no enrolment and no record. Use it to check what learners will actually meet before you publish a change, or to answer “what does this look like for them?” without joining your own course.
Two ways in:
- On the Courses list, the Preview action on any course row. This previews the course’s base language.
- In the course editor’s Modules tab, Preview at the end of the language tab strip. This previews the language whose tab is selected, which is how you check a translation.
What preview does not do — this is the whole point:
- No progress, module completion, quiz attempt, SCORM attempt or CMI data is written. Neither is a cmi5 or AICC session, an xAPI statement, or a survey response.
- No completion means no certificate, no auto-enrolment rule firing, no learning path advancing, no notification email and no webhook.
- Nothing changes for you either, even if you are enrolled in the course yourself. Preview never reads your enrolment, so it cannot write to it.
Because nothing is written, previewing never appears in any report. Click Exit preview to return.
Availability:
- You need course edit permission. Read access is not enough — every learner has that.
- Instructors assigned to specific courses can preview those courses only.
- On the course editor, Preview is offered on a published course with no draft version open. While a draft exists, the editor is not showing what learners are being served, so previewing it would mislead.
Language previews honour the same fallback learners get: a module with no content in the selected language shows the base language’s content. A language that is incomplete, paused, or not yet offered can still be previewed — that is what you preview it for.
Downloads work normally in preview, including for archive modules, but the download does not mark the module complete the way it does for a learner.
Schedule publish / unpublish (LMS-200)
Instead of publishing by hand, you can schedule it:
- In the course editor, open the Settings tab. In the Catalog Settings card, under Scheduled Publish, set Publish at and/or Unpublish at.
- Click Save Schedule.
The schedule fields appear while the course is editable: a draft course, or a published course after Start new version.
A background job checks hourly and acts automatically:
- At the publish at time, a draft course is published (its latest draft version is published and active enrollments migrate to it — exactly like a manual Publish), and the schedule is cleared.
- At the unpublish at time, a published course is archived (removed from the catalog; completions preserved), and the schedule is cleared.
Because the sweep runs hourly, a course goes live within an hour of its scheduled time. An Archived course is never auto-published. Each automatic change is recorded in the audit log (actor: system).
Archive a course
- Archive (on a published course): hides the course from the catalog. Existing completions are preserved.
Note: an archived course cannot be re-published from the admin console today. It shows a Re-publish button, but publishing from the console refuses an archived course and the console has no restore action, so the course stays archived. Archive only a course you are finished with. (An integration with an admin-scope API key can still re-publish it with
PATCH /api/v1/courses/{id}andstatus: published; see the Courses API reference.)
There is no separate “unpublish to draft” action: to take a published course out of the catalog, archive it. The app has no delete action for courses.
Moderate course discussions (LMS-473)
Every course has a discussion area (the Course discussions card on the course page) where enrolled learners can start threads and reply (one level of nesting). Instructors and Admins/Owners moderate it — Instructors on their assigned courses only.
Moderation actions (require the course-edit permission, course:update):
| Action | Where | Effect |
|---|---|---|
| Lock discussion | Thread page → Lock discussion | Read-only: no new replies or edits until unlocked. A Locked badge is shown. |
| Unlock discussion | Thread page → Unlock discussion | Reopens the thread for replies and edits. |
| Delete (a post) | Under any post → Delete | Hides the post from the discussion (soft delete — no data is destroyed). |
| Delete discussion | Thread page → Delete discussion | Hides the whole thread and all of its posts. |
Notes:
- Learners can always edit/delete their own posts (unless the thread is locked); moderators can delete any post or thread.
- All moderation actions (lock, unlock, delete) are written to the tenant audit log with the acting user, so moderation is traceable.
- Learners must hold an active or completed enrollment in the course to post; anyone who can see the course can read.
- Deletions are soft: content is hidden, not destroyed, and remains available for audit/compliance purposes.
Learner-facing instructions: see the KB article Course Discussions.
Turn discussions on or off for a course (LMS-758)
Discussions are on by default for every course — existing courses and every new course. If a course should not have a forum (a compliance module, a silent-completion course, a course you moderate elsewhere), turn them off for that course only.
Steps:
- Go to Courses and open the course.
- Open the Settings tab. The Discussions card is shown while the course is editable — on a published course, click Start new version first.
- In the Discussions card, switch Enable discussions for this course off.
- The change saves immediately and is recorded in the audit log. It applies to the course itself, not to the draft version, so learners are affected right away.
Switch it back on the same way.
Configuration reference:
| Field | Default | Effect when off |
|---|---|---|
| Enable discussions for this course | On | Learners lose the Course discussions entry on the course page, cannot open the discussion area, and cannot post, reply, or edit. |
What happens to existing discussions
Nothing is deleted. Turning discussions off is a visibility and participation gate only:
- Every existing thread and reply is kept exactly as it is — no soft-delete, no edit, no change of any kind to the discussion data.
- Turning discussions back on restores the forum verbatim, including locked threads and their lock state.
Who can still see discussions while they are off
| Role | With discussions off |
|---|---|
Learner (no course:update) | No access at all — the entry point is hidden and the discussion pages refuse to load. |
Instructor (assigned course), Admin, Owner — anyone with course:update | Can still open and moderate the existing threads: read, lock/unlock, delete posts, delete threads. The course page shows the discussions card with a Turned off badge. |
| Anyone, including moderators | Cannot post anything new — no new threads, no replies, no edits. The feature is off for the course, so no new content is added to it by any role. |
This is deliberate: it lets an instructor clean up or archive a forum after turning it off, without leaving learners a way in. Enforcement is server-side, so hiding the button is not what stops a learner — the API refuses the request.
Permission required: course:update (Instructors are limited to their assigned
courses). Every flip is written to the audit log with the before/after value.
Learner ratings (LMS-874)
Learners can rate a course 1–5 stars with an optional comment. The Ratings card in the Settings tab turns ratings on or off for the course (on by default), shows every rating with its comment, and lets you remove an abusive one. Full guide: Course Ratings.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Upload fails immediately | File too large (limit: 500 MB) | Compress the file or split the SCORM package |
| Upload blocked with an upgrade prompt | Plan storage limit reached (Free 1 GB / Starter 50 GB; Growth and Enterprise are unlimited, fair use) | Delete unused course files to free space, or have an Owner upgrade in Billing |
| SCORM upload succeeds but content doesn’t launch | The file was flagged Infected, or (when malware scanning is switched on) it is still Scanning… | Wait for the scan and refresh; re-upload a file flagged Infected after checking it |
| Course not visible in learner catalog | Status is still Draft | Publish the course |
| Publish blocked with an upgrade prompt | Free plan is at its 3-active-course limit | Archive a published course you no longer need to free a slot (it cannot be re-published from the admin console), or have an Owner upgrade in Billing |
| Scheduled publish didn’t fire | Free plan at its course limit at sweep time | The schedule stays set and retries hourly — free a slot or upgrade |
| Module order not saving | Browser issue | Refresh and retry; check for console errors |
| The editor is read-only | The course is published and no draft is open | Click Start new version |
| A learner cannot download a document | The module’s Let learners download this file checkbox is off | Expected. Turn it back on in the module editor if the file should be downloadable. |
| An Office document shows Preparing preview… for a long time | The conversion service is catching up, or the module was uploaded before inline previews existed | The background sweep retries automatically (at most a few hours). The module keeps working as a download meanwhile. |
| An Office document shows Preview unavailable — download only | The file could not be converted (unusual format features, or a corrupted file) | Learners download the original as before. Re-save the file in its application and re-upload to retry the preview. |
| The download checkbox is missing on a module | It only appears on video, audio and document modules | Expected — an iFrame, YouTube or SCORM module has no file to withhold. |
| Download says the file is not available yet | Malware scanning is switched on and the file has not been scanned yet, or it was flagged | Wait for the scan to complete; a file flagged Infected should be re-uploaded. |
Need help? Contact your EmbayLMS onboarding team or open a support ticket.