Title: CourseRelay
Author: JUSTADDWATER
Published: <strong>September 15, 2026</strong>
Last modified: September 15, 2026

---

Search plugins

![](https://ps.w.org/courserelay/assets/banner-772x250.png?rev=3697397)

![](https://ps.w.org/courserelay/assets/icon-256x256.png?rev=3697397)

# CourseRelay

 By [JUSTADDWATER](https://profiles.wordpress.org/justaddwater/)

[Download](https://downloads.wordpress.org/plugin/courserelay.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/courserelay/#description)
 * [Reviews](https://wordpress.org/plugins/courserelay/#reviews)
 *  [Installation](https://wordpress.org/plugins/courserelay/#installation)
 * [Development](https://wordpress.org/plugins/courserelay/#developers)

 [Support](https://wordpress.org/support/plugin/courserelay/)

## Description

**CourseRelay** is a standalone SCORM player for WordPress and LearnDash. Upload
SCORM 1.2 or SCORM 2004 packages, embed them in LearnDash lessons using a Gutenberg
block, and have lessons marked complete automatically when learners finish. Everything
runs inside your own WordPress install.

All SCORM runtime data, completion records and learner progress are stored in your
WordPress database. Nothing is sent to a third party server, there are no API keys
to configure and no external accounts to create.

#### Why CourseRelay

Delivering SCORM content in LearnDash usually means running a SCORM companion plugin
alongside a hosted Learning Record Store subscription. Together those typically 
cost several hundred dollars a year just to upload a Storyline course and mark a
lesson complete.

CourseRelay removes both dependencies. The plugin handles upload, content serving,
the SCORM runtime and LearnDash completion tracking on its own.

#### Features

 * Upload SCORM 1.2 and SCORM 2004 zip packages
 * Auto-detects SCORM version, launch file and mastery score from imsmanifest.xml
 * Gutenberg **SCORM Content** block for LearnDash lessons and topics
 * Automatic LearnDash lesson and course mark-complete on SCORM completion
 * LearnDash certificates trigger through the standard LearnDash flow
 * Mastery score and passing percentage support, auto-detected or set per package
 * Session resume, with suspend_data and lesson_location preserved
 * Completion reports in the WordPress admin, filterable by user and content
 * Per-package and per-block display settings for width, height and completion type
 * Learner data reset tool, no database access needed
 * Cache purge support for LiteSpeed, WP Rocket, W3 Total Cache and WP Super Cache
 * Debug logging mode
 * GPL-2.0+ licensed

#### SCORM support

SCORM 1.2 and SCORM 2004 are both supported for auto-launch, session resume, completion
detection, score tracking, mastery score and LearnDash mark-complete.

#### Security

 * Zip Slip protection, with every archive entry path validated before extraction
 * PHP execution blocked inside uploaded packages
 * Registration ID validation on every commit using a timing-safe comparison
 * Content ownership checks, so learners can only write data for content they can
   access
 * SCORM iframe sandboxing that still preserves the SCORM parent API
 * Learner identifiers redacted from debug logs
 * All input validated, sanitized and escaped

#### Privacy

CourseRelay integrates with the WordPress personal data export and erasure tools.
No learner data leaves your server.

#### Authoring tools

Tested with Articulate Storyline 360, Articulate Rise 360, Adobe Captivate, iSpring
Suite, Lectora and dominKnow Claro. Any tool that exports a valid SCORM 1.2 or SCORM
2004 package should work. If you are publishing from Captivate, SCORM 1.2 gives 
the most reliable results at this stage.

#### What it does not do

 * xAPI (Tin Can) and cmi5 content, which require a Learning Record Store
 * SCORM 2004 adaptive sequencing and navigation rules. Linear courses work, branching
   does not
 * Interaction level reporting. Completion and score only, no quiz answer or hotspot
   data
 * Multi-SCO packages are only partially supported. Only the first SCO is launched
 * Other WordPress LMS plugins. LearnDash is the only adapter currently included
 * Offline or mobile app delivery. Browser only

#### Requirements

 * WordPress 5.8 or later
 * LearnDash LMS 3.0 or later, tested on LearnDash 4.10.1
 * PHP 7.4 or later with the ZipArchive extension

#### How to use

 1. Go to **CourseRelay > Add New** and upload a .zip SCORM package
 2. Open a LearnDash lesson in the Gutenberg editor
 3. Add the **SCORM Content** block and select your package
 4. Optionally override width, height and completion tracking for that block
 5. Publish the lesson. Learners who complete the SCORM content will have the lesson
    marked complete automatically

## Screenshots

[⌊A learner viewing the SCORM content inside a LearnDash lesson.⌉⌊A learner viewing
the SCORM content inside a LearnDash lesson.⌉[

A learner viewing the SCORM content inside a LearnDash lesson.

[⌊The LearnDash course page showing the lesson and course marked complete after 
the learner finishes.⌉⌊The LearnDash course page showing the lesson and course marked
complete after the learner finishes.⌉[

The LearnDash course page showing the lesson and course marked complete after the
learner finishes.

[⌊Add New: upload a SCORM package and set the title, passing percentage and display
options.⌉⌊Add New: upload a SCORM package and set the title, passing percentage 
and display options.⌉[

Add New: upload a SCORM package and set the title, passing percentage and display
options.

[⌊All uploaded SCORM packages listed in the WordPress admin.⌉⌊All uploaded SCORM
packages listed in the WordPress admin.⌉[

All uploaded SCORM packages listed in the WordPress admin.

[⌊Completion report showing learner, content, status, score and timestamp.⌉⌊Completion
report showing learner, content, status, score and timestamp.⌉[

Completion report showing learner, content, status, score and timestamp.

[⌊CourseRelay settings screen with defaults, debug mode and the Reset Learner Data
tool.⌉⌊CourseRelay settings screen with defaults, debug mode and the Reset Learner
Data tool.⌉[

CourseRelay settings screen with defaults, debug mode and the Reset Learner Data
tool.

[⌊Embedding an uploaded package in a LearnDash lesson with the SCORM Content block.⌉⌊
Embedding an uploaded package in a LearnDash lesson with the SCORM Content block
.⌉[

Embedding an uploaded package in a LearnDash lesson with the SCORM Content block.

[⌊The SCORM Content block in place in the LearnDash lesson editor, showing the selected
package.⌉⌊The SCORM Content block in place in the LearnDash lesson editor, showing
the selected package.⌉[

The SCORM Content block in place in the LearnDash lesson editor, showing the selected
package.

## Blocks

This plugin provides 1 block.

 *   SCORM Content Embed a SCORM package in a LearnDash lesson or topic.

## Installation

 1. Upload the `courserelay` folder to `/wp-content/plugins/`, or install through **
    Plugins > Add New**
 2. Activate the plugin via **Plugins > Installed Plugins**
 3. Make sure LearnDash LMS is active and the PHP ZipArchive extension is enabled
 4. Go to **CourseRelay > Settings** to set default width, height and completion type

## FAQ

### Do I need any other SCORM plugin installed?

No. CourseRelay handles upload, content serving, the SCORM runtime and LearnDash
completion on its own. No companion plugin and no LRS subscription.

### Does this work without LearnDash?

CourseRelay is built for LearnDash lessons and topics. LearnDash must be active 
for the supported completion workflow.

### Is an LRS required?

No. All SCORM runtime and completion data is stored locally in your WordPress database.

### Which authoring tools are supported?

Any tool that exports a valid SCORM 1.2 or SCORM 2004 package, including Articulate
Storyline, Articulate Rise, Adobe Captivate, iSpring, Lectora and dominKnow Claro.

### Which LearnDash versions are supported?

LearnDash 3.0 and above. Testing is done against LearnDash 4.10.1.

### Will it work with LifterLMS, LearnPress or TutorLMS?

Not yet. LearnDash is the only LMS adapter currently included. Adapters for other
LMS plugins are in development.

### Will it work with my caching plugin?

Yes. CourseRelay calls the purge APIs for LiteSpeed, WP Rocket, W3 Total Cache and
WP Super Cache when a completion is recorded. If you use Cloudflare proxy caching,
add a page rule to bypass cache for logged-in users.

### My SCORM content loads but completion is not tracked. What do I check?

Enable Debug Mode in **CourseRelay > Settings**, complete the lesson as a test learner,
then review `wp-content/courserelay-debug.log`. The log records each step of the
completion flow. Use the Reset Learner Data tool to clear progress between tests.

### What happens if a learner does not finish a course in one sitting?

SCORM runtime data is written to the database on every commit. Position, score and
suspension data are saved, so the learner resumes from where they stopped.

### Can I reset a learner’s progress for testing?

Yes. Go to **CourseRelay > Settings** and use the Reset Learner Data tool. Enter
the User ID, Content ID, Lesson or Topic ID and Course ID, all of which appear in
the Completion Reports and the debug log.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“CourseRelay” is open source software. The following people have contributed to 
this plugin.

Contributors

 *   [ JUSTADDWATER ](https://profiles.wordpress.org/justaddwater/)

[Translate “CourseRelay” into your language.](https://translate.wordpress.org/projects/wp-plugins/courserelay)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/courserelay/), check
out the [SVN repository](https://plugins.svn.wordpress.org/courserelay/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/courserelay/) by
[RSS](https://plugins.trac.wordpress.org/log/courserelay/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.0

 * Initial release.
 * SCORM 1.2 and SCORM 2004 support, with automatic detection of version, launch
   file and mastery score from imsmanifest.xml.
 * Gutenberg SCORM Content block for LearnDash lessons and topics.
 * Automatic LearnDash lesson, topic and course mark-complete, with certificates
   following the standard LearnDash flow.
 * Session resume, with suspend_data and lesson_location preserved.
 * Completion reports in the WordPress admin, filterable by user and content.
 * Learner data reset tool and debug logging mode.
 * WordPress privacy export and erasure integration.
 * Security hardening: zip slip protection, blocked PHP execution inside packages,
   timing-safe registration validation, content ownership checks, iframe sandboxing
   and redacted debug logs.
 * Cache purge support for LiteSpeed, WP Rocket, W3 Total Cache and WP Super Cache.

## Meta

 *  Version **1.0.0**
 *  Last updated **6 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.8 or higher **
 *  Tested up to **7.0.5**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [elearning](https://wordpress.org/plugins/tags/elearning/)[learndash](https://wordpress.org/plugins/tags/learndash/)
   [lms](https://wordpress.org/plugins/tags/lms/)[scorm](https://wordpress.org/plugins/tags/scorm/)
 *  [Advanced View](https://wordpress.org/plugins/courserelay/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/courserelay/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/courserelay/reviews/)

## Contributors

 *   [ JUSTADDWATER ](https://profiles.wordpress.org/justaddwater/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/courserelay/)