
There’s a gap that keeps coming up in the xAPI ecosystem.
Organisations that run Moodle have xAPI content, standalone packages, externally hosted courses and maybe some CMI5 titles. And they want that content to send data to an LRS, sync completion, and drive gradebook.
The workarounds people use vary. Some rely on SCORM wrappers. Some use external tool plugins and hope for the best. Some just leave the data in the LRS and never connect it back to the LMS at all.
None of those are good answers.
What I Built
xAPI Course is an open-source Moodle activity module that does the connection properly.
It’s available now on GitHub: https://github.com/juliandavis-xapi/xapicourse
The plugin is a native Moodle activity, not a hack, not a block, not an iframe workaround. Teachers or Admins add it the same way they add any activity. Learners see it as a standard course item.
Under the hood, it handles the things that are usually left to chance.
What It Does
Launch standards supported:
- Direct xAPI with query parameters
- CMI5 (including
moveOnconfiguration)
LRS connection:
- Configure a system-level LRS once and reuse it across activities
- Or configure a custom LRS per activity when needed
- Test connection built in, you know immediately if the endpoint is reachable
Completion sync:
- Polls the LRS for matching statements against the learner email and activity ID
- Configurable verb:
completed,passed, or either - Writes back to Moodle completion when the condition is met
Grade sync:
- Reads scaled xAPI score from the LRS
- Writes it to the Moodle gradebook
Certificates:
- Optional, enable at the site level if you need them
- Generated on completion or pass
- Can be emailed
- Access restricted to the learner and configured admin roles



What It Doesn’t Do
It’s not an LRS. It doesn’t store statements.
It connects Moodle to an LRS you already have, or one you set up for the purpose. That’s the right architecture. The LRS owns the data. Moodle owns the enrolment and the gradebook. The plugin is the bridge.
Where It’s At
The plugin works. I’m using it in a real environment.
But before pushing to the Moodle Plugin Directory, I want external eyes on it.
I’m looking for people who:
- Have a Moodle instance they can test with
- Have xAPI or CMI5 content to throw at it
- Have an LRS (SCORM Cloud, Learning Locker, Ralph, Watershed, or similar)
- Are willing to log issues in GitHub when things don’t work as expected
If that’s you, the repo is at: https://github.com/juliandavis-xapi/xapicourse
The README covers installation, LRS configuration, activity setup, and troubleshooting steps. It should be enough to get started.
Why This Matters
Moodle is still the dominant open-source LMS. It’s in universities, RTOs, corporates, and government agencies across Australia and beyond.
xAPI is now an IEEE standard, adopted into ISO/IEC. It’s not a niche anymore.
The gap between “we have Moodle” and “we have proper xAPI infrastructure” should not require a workaround. This plugin is an attempt to close that gap with something properly built and open.
If you’re working in this space, I’d like to hear from you, either as a tester or with feedback on the approach.
Written with assistance from AI