> ## Documentation Index
> Fetch the complete documentation index at: https://thehyperstack.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Moodle Integration

> Issue a credential automatically when a learner reaches a Hyperstack activity in Moodle.

There are three ways to connect Moodle:

| | LTI 1.3 (recommended) | Moodle plugin | Zapier |
| - | - | - | - |
| Issues when | The learner opens the Hyperstack activity | The learner completes the course | A Moodle event runs your Zap |
| Set up by | A Moodle site admin, once | A Moodle site admin, once | You, in Zapier |
| Teachers | Add the activity, pick a group | Pick groups in the course | Nothing |

![The Moodle extension in Hyperstack with Choose how to connect: LTI 1.3 (recommended) and Zapier](https://mintcdn.com/hyperstack/22bf_uXgnFdMeQAd/images/moodle-overview.webp?fit=max\&auto=format\&n=22bf_uXgnFdMeQAd\&q=85\&s=7ae2e6fc52b39ef2dbfeb89756f23de3)

This page covers LTI 1.3. For the plugin, see the [Moodle plugin](https://thehyperstack.com/docs/integrations/moodle-plugin.md). For Zapier, see the [Zapier integration](https://thehyperstack.com/docs/integrations/zapier-integration.md) and the Moodle Zap template.

Works with Moodle 4.x and 5.x.

## Before you start

* A [credential group](https://thehyperstack.com/docs/tutorials/credential-setup/creating-credential-group.md) with its design.
* Administrator access in Hyperstack.
* A Moodle site administrator.

## Step 1: register Hyperstack in Moodle

**1. In Hyperstack, open the Moodle setup page**

Click **Add integration**, then **Moodle**, choose **LTI 1.3**, and copy the **Registration URL**. It works for 7 days and connects Moodle to your organization only.

**2. In Moodle, go to Site administration, Plugins, Activity modules, External tool, Manage tools**

Paste the URL in **Tool URL** and click **Add LTI Advantage**. Moodle registers Hyperstack.

**3. Activate the tool**

Hyperstack shows as **Pending** in the tool list. Click **Activate**.

**4. Check the tool settings**

**Share launcher's name with tool** and **Share launcher's email with tool** must be **Always** (registration sets them). Set **Tool configuration usage** so Hyperstack shows in the activity chooser.

> [!TIP]
>
> Many Safari users? Set the tool's **Default launch container** to **New window**. Moodle can't keep Hyperstack's sign-in inside the course page when the browser blocks third-party cookies.

![The Set up Moodle page in Hyperstack with the registration URL and the Moodle steps](https://mintcdn.com/hyperstack/22bf_uXgnFdMeQAd/images/moodle-setup.webp?fit=max\&auto=format\&n=22bf_uXgnFdMeQAd\&q=85\&s=f73a3c3b0a3b5d8a587e6294acbb7199)

## Step 2: add Hyperstack to a course

1. In the course, turn editing on, click **Add an activity or resource** and choose **Hyperstack**.
2. Click **Select content**. Hyperstack shows your credential groups: choose one and click **Add to course**.
3. Save the activity. Use **Restrict access** so it opens only when the learner has finished the course.

![Moodle's Select content dialog showing Hyperstack's Add a credential to this course form](https://mintcdn.com/hyperstack/22bf_uXgnFdMeQAd/images/lti-select-content-moodle.webp?fit=max\&auto=format\&n=22bf_uXgnFdMeQAd\&q=85\&s=5721999991aa7f2fad8da3582b746a50)

When a learner opens the activity:

![A Moodle activity page showing Well done with the View my credential button](https://mintcdn.com/hyperstack/22bf_uXgnFdMeQAd/images/lti-learner-moodle.webp?fit=max\&auto=format\&n=22bf_uXgnFdMeQAd\&q=85\&s=46450ea6b88ce4bd7820dd1ce6feb699)

## Who gets a credential

| Role in the course | Sees | Gets a credential |
| - | - | - |
| Learner / student | Their credential | Yes, once per credential group |
| Teacher, course designer, LMS admin | The page to pick or change the credential group | No |
| Teaching assistant, observer, parent, guest | "Nothing to issue" | No |

Test with a student account (or your LMS's "act as user"). Teacher and admin accounts never get a credential, and preview modes such as Canvas **Student View** have no real email.

## What learners see

* **Well done**: their credential is ready, with **View my credential**. It is published at once and emailed to them. Opening the item again shows the same credential, never a second one.
* **Email address needed**: the LMS didn't share their email, so nothing was issued. Ask your LMS admin to share names and emails with Hyperstack.
* **Not set up yet**: the item isn't linked to a credential group. A teacher opens it and picks one.

## Troubleshooting

Every launch is on the **Logs** tab of the setup page in Hyperstack for 90 days, with what happened and why.

| What you see | Why | What to do |
| - | - | - |
| "Hyperstack is not set up for this LMS yet" | The LMS isn't registered in Hyperstack, or the registration is switched off | Finish the setup above, and check **Registrations** on the setup page |
| "Connect this LMS to Hyperstack" | The install isn't connected to your organization yet | An LMS admin types a connection code from the setup page (codes last 30 minutes) |
| "Open Hyperstack in a new window" | The browser blocks sign-in inside the course page (often Safari) | Click the button. It works in a window of its own |
| "This sign-in expired or was already used" | The page was open too long, or reloaded | Open the item again from the course |
| "Email address needed" | Names and emails aren't shared with Hyperstack | Turn on sharing in your LMS (see the steps above) |
| A learner got a credential too early | The item wasn't locked | Use your LMS's completion rules so the item opens only when the course is done |
| "Already connected to another Hyperstack organization" | That LMS key or site is linked to another organization | Contact Hyperstack support |

## Data and privacy

| | |
| - | - |
| Standard | 1EdTech LTI 1.3 Core and Deep Linking 2.0, OIDC login, RS256-signed messages. Our public keys: `https://api.thehyperstack.com/v1/lti/1.3/jwks` |
| Received on each launch | The LMS user ID, name, email, course roles, course ID and title, item ID and title |
| Stored | Name and email on the credential issued, the LMS and item it came from, and a launch log for 90 days |
| Not requested | Grades, rosters, submissions or other course content. Hyperstack asks for no LTI Advantage service access |
| Cookies | One sign-in cookie for 10 minutes on `api.thehyperstack.com`, or the LMS's own storage when it offers it |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.