Skip to content
Learnomy

Guides

H5P in WordPress: How Completion Reaches LMS Progress

How H5P in WordPress reports completion to a Learnomy Pro lesson: what counts as done, what stays in H5P, and how to test it as a learner.

Wbcom Designs
H5P WordPress LMS Interactive Content

Here’s the short version of H5P in WordPress with Learnomy. It’s a Learnomy Pro extension, and it needs the official H5P plugin installed and active. Learnomy doesn’t build or edit H5P content. You make it in H5P, then attach it to a lesson, and when the learner finishes it, the lesson is marked complete.

The score is a different story. It stays in H5P. This post walks through what gets tracked, what doesn’t, and how to check it on a staging site before real learners touch it.

If you’re on Learnomy Free, the H5P lesson type isn’t available. The Free vs Pro page shows where the line sits.

Why H5P tracking usually breaks in an LMS

H5P content is a self-contained interactive widget: a course presentation, an interactive video, a drag-and-drop. It runs in the browser and works fine on its own. The trouble starts when you ask the surrounding LMS “did this person finish it?”

H5P doesn’t know about your course. Your LMS doesn’t know about H5P’s insides. Unless something sits between them and listens, the learner can finish the whole activity and the lesson still shows as not started.

H5P does emit xAPI statements in the browser as the learner works. A bridge that listens to those statements can pass the result to the LMS. That’s exactly the approach here. If you want the background on xAPI as a standard, the SCORM vs xAPI comparison covers it.

Attaching H5P content as a lesson

H5P is an opt-in module, so nothing loads until you switch it on. The full steps are in the H5P docs, and the short form is this:

  1. Install and activate the official H5P plugin, and create your interactive content there.
  2. In Learnomy, go to LMS Settings > Modules and enable H5P.
  3. Open a lesson, set its content type to H5P interactive, and pick your content from the dropdown.
  4. Save and publish.

If the H5P plugin isn’t active, the module stays inert. Learnomy shows an admin notice pointing you at the install, and the H5P lesson type never appears in the list. Nothing breaks, it just isn’t there.

Under the hood, the lesson stores the H5P content’s numeric ID and renders it through H5P’s own [h5p] shortcode. H5P hosts and runs the activity. Learnomy only holds the frame around it.

What actually marks the lesson complete

This is the part worth reading slowly, because it’s narrower than people assume.

A small script on the lesson page listens for H5P’s xAPI statements. It acts on a statement only if two things are true:

  • the statement’s verb ends in completed or passed
  • it comes from the top-level content, not from a sub-activity inside it

The first statement that matches gets sent to Learnomy, once per page load. Learnomy checks that the learner is logged in, is enrolled in the course, and that the lesson really is an H5P lesson. Then it hands off to the same completion path every other lesson type uses. That’s the shared bridge SCORM uses too, so course progress, certificates and anything listening for lesson completion all react the way they do for a native lesson.

Two details matter in practice.

First, passed and completed both finish the lesson. The code records which one it was, but both count. Learnomy doesn’t compare a score against a threshold of its own.

Second, other verbs are ignored. A statement that doesn’t end in completed or passed does nothing, so a learner who answers a few questions and leaves hasn’t completed anything. And once a lesson is complete, a later signal never reverts it.

What H5P puts on its statement when a learner finishes with a low score depends on the content type and the H5P plugin, not on Learnomy. So don’t assume: test the content you’re shipping (more on that below).

What stays in H5P: the score

The script does read a raw score and a max score off the statement and sends them along. But Learnomy’s completion route doesn’t store them. The score lives in H5P’s own results store, and there’s no H5P score in the Learnomy gradebook.

That has a practical consequence. Learnomy knows “this learner completed this lesson.” It doesn’t know “this learner got 7 of 10.” If you need the number, you read it from H5P’s own results view.

You want to knowWhere it lives
Did the learner finish the lesson?Learnomy progress
Did it count toward the course and certificate?Learnomy progress
What score did they get?H5P’s own results

SCORM is different here, because Learnomy stores a SCORM score itself and it can feed the gradebook. If a graded result needs to sit next to everything else, a SCORM package or a native Learnomy quiz is the better home for that part.

Testing it end to end as a learner

Don’t trust a green tick in the editor. Run the whole path once on staging.

  1. Create a throwaway course with one H5P lesson, plus a second lesson so you can see progress move.
  2. Enroll a test learner account. An admin preview plays the content, but only an enrolled learner’s completion is written to progress.
  3. Log in as that learner in a clean browser session and open the H5P lesson.
  4. Finish the activity the way a real person would.
  5. Reload the course page and check that the lesson shows complete and the course progress bar moved.
  6. Repeat with a deliberately weak attempt, and see which way your content type goes.

Watch the browser’s network tab while you do it. A completion shows up as a POST to the learnomy-pro/v1/h5p/complete route. If you finish the activity and never see that request, H5P didn’t emit a matching statement for that content, and that’s worth knowing before launch.

Also test with a learner who isn’t enrolled. That request is refused, by design.

When SCORM, xAPI or a native quiz fits better

H5P is a good fit when the interaction is the lesson: an interactive video, a branching scenario, a drag-and-drop exercise you’ve already built. You’re reusing content, and “they finished it” is the thing you need to record.

Reach for something else in these cases:

  • You bought or were handed a packaged course. That’s a SCORM job. See SCORM courses on WordPress.
  • You need detailed activity records sent to another system. That’s what xAPI is for, and it’s a separate extension.
  • You need a graded score in your own reports. Use a native quiz or a SCORM package, since the H5P score won’t appear in the Learnomy gradebook.

You can mix all of them in one course. An H5P lesson sits alongside video, text and quiz lessons in the same curriculum, and you can see how the content types fit together on the course builder page.

One last note on scope. The extension depends on a third-party plugin, so how H5P behaves, including how it reports a finish, is H5P’s side of the line. Learnomy’s side is narrow and predictable: first top-level completed or passed signal, enrolled learner, lesson marked complete. Test that on your own content and you’ll know exactly what your learners get.