Guide: H5P 1.3 integration

Guide: H5P 1.3 integration

This test has been derived from H5P’s own guide for Open edX 1.3: Setting up H5P.com in Open edX (LTI 1.3) with minor changes.

It has been conducted on Open edX’s master branch sandbox: https://apps.master.openedx.io

  1. Create a trial account on h5p.com. Navigate to “Manage Organization”> “Connect LMS”.

  2. Select LMS as “Moodle”, add connection name, select LTI version as 1.3 and and click “Save”.

    1. image-20260304-073053.png
  3. H5P will show some URLs. Make note of those.

    1. image-20260116-044304.png
  4. Create an xblock with following fields:

    1. Display Name: Anything

    2. LTI Application Information: Anything

    3. LTI Version: LTI 1.3

    4. Tool Launch URL: Copy Redirect URL from h5p

    5. Registered Redirect URIs: Leave blank

    6. Tool Initiate Login URL: Copy Login URL from h5p

    7. Leave the rest of the fields unchanged and click “Save”.

    8. image-20260116-075408.png
  5. After being saved, the xblock will show some information and URLs.

  6. Open “Connection Settings” in H5P.

    1. image-20260116-041648.png
  7. Enter data copied from the xblock and click “Save”. Note the lack of trailing slash in Issuer.

    1. image-20260116-042049.png
  8. Create a new deployment with same deployment ID as shown on XBlock.

    1. image-20260116-094311.png
  9. Make sure the deployment is in enabled state.

    1. image-20260116-094729.png
  10. Now access the xblock in LMS via a Staff or Admin role. It shows “No reports”. This is because we have not configured any content for students. And for some reason, the h5p tool registers launch from a staff or admin role as student.

    1. image-20260116-095008.png
  11. Go to h5p tool in “Manage Organization” > “Users”. Find the user you just launched with (more like guess it) and change it’s role to Author.

    1. image-20260116-095334.png
  12. Now reload the page in LMS. It should show authoring interface of h5p in an iframe.

    1. image-20260116-095538.png

Things i don’t understand

Question 1: Why h5p registers my user and student and not author when i launch with a Staff or Admin role.

Good news: Open edX is not sending you as a student. Your LTI 1.3 token clearly includes an Instructor role:

"roles": ["http://purl.imsglobal.org/vocab/lis/v2/institution/person#Instructor"]

So if H5P is still treating you like a student, the issue is on the H5P side (or in how it maps roles), not in Open edX or custom parameters.

What’s likely going on

Two common reasons H5P still shows “student-ish” behavior even when the LTI role is Instructor:

1) H5P expects membership roles, not institution/person roles

You’re sending:

  • .../institution/person#Instructor

Many tools (and lots of examples) expect:

  • http://purl.imsglobal.org/vocab/lis/v2/membership#Instructor

Both exist in the LIS vocab world, but some tools only recognize one set. If H5P only checks membership#Instructor, it may ignore your role and default you to “Learner-like” behavior.

This would also explain why LTI 1.1 “worked”: LTI 1.1 role strings often map more directly in tools, while your LTI 1.3 implementation is using the institution/person vocabulary.

Tell-it-like-it-is: this is a compatibility bug/limitation between Open edX’s role URI and H5P’s role parsing.

2) H5P is using its own internal role mapping tied to the H5P user record

You already observed that flipping your role inside H5P changes the UI. That’s a hint H5P may be prioritizing its internal role over the LTI claim, or only using LTI roles during an initial “account linking” moment.

What you can do next (practical options)

Option A: Make Open edX send membership#Instructor (best, if configurable)

If your Open edX LTI 1.3 XBlock has any setting like “Use LIS membership roles” / “Role claim format” / “Send instructor role”, switch it. Many builds don’t expose this though.

If it doesn’t exist in the UI, it’s a code/config change in the LTI Consumer XBlock / plugin.

Option B: Ask H5P support what role URIs they recognize

Specifically ask whether they accept:

  • .../institution/person#Instructor
    or require:

  • .../membership#Instructor

Give them the exact claim you pasted. This is the fastest path if you can’t change Open edX.

Option C: Work around by ensuring the H5P user is an Author/Teacher

Not pretty, but if the goal is integration testing and you control the H5P org, setting your account as author/teacher works.

One more thing: your launch is not Deep Linking

Your token says:

  • "message_type": "LtiResourceLinkRequest"

So even if roles were perfect, you’re still doing a resource launch, not a deep linking selection. For deep linking you’d expect:

  • "LtiDeepLinkingRequest"

That matters because H5P’s “authoring vs reports” landing behavior is affected by whether you’ve bound content via deep linking. So you may need to launch deep linking as an instructor (from the XBlock’s deep-linking flow) to actually select content.

Concrete next step

  1. Trigger the deep linking flow from Open edX (whatever UI action the XBlock provides when deep linking is enabled).

  2. Capture that token too and check:

    • message_type == LtiDeepLinkingRequest

    • and whether roles are still institution/person#Instructor

If you paste the roles claim from the deep linking launch (if you can produce it), I’ll tell you whether you’re blocked on (a) H5P role parsing, or (b) you never actually invoked deep linking.

But based on what you shared, the most likely blocker is: H5P isn’t recognizing institution/person#Instructor as an instructor for permission routing.

Question 2: If the check the following options in “Connection settings” in h5p, i don’t see user’s name and email from LMS reflected in h5p.

  • image-20260116-095958.png
  • Maybe the LMS is not sending name and email in the launch. There used to be an option in the older lti xblock to request name and email. I don’t know if it would then send user’s name and email.

  • image-20260116-101657.png