> For the complete documentation index, see [llms.txt](https://herd-security.gitbook.io/herd-security-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://herd-security.gitbook.io/herd-security-docs/messaging/reminders/docebo-integration.md).

# Docebo Integration

Connect your Docebo LMS so Herd marks people done on a Reminders item when they complete the matching Docebo course, and stops reminding them.

## Overview

When people need to finish a course in **Docebo**, you can chase it with a [Reminders](/herd-security-docs/messaging/reminders.md) item. Connect Docebo and Herd does the tracking for you: every hour it checks the course's enrollments, marks each person **Done** as soon as Docebo reports the course completed, and stops reminding them.

The connection is **read-only**. Herd reads your courses, their enrollments, and user lookups by email. Nothing is written back into Docebo.

{% hint style="info" %}
The Docebo card is in the **Learning** section of **Settings → Integrations**. It appears when [Reminders](/herd-security-docs/messaging/reminders.md) are available to your organization. Connecting, testing, and disconnecting need the **Manage events** permission (listed under **Events** in the permission picker), and reaching Settings needs **Org Settings**. Admins have both.
{% endhint %}

***

## Before you start: set up Docebo

You need two things from your Docebo tenant:

1. **An API app with the password grant enabled.** Register it in Docebo under **Admin → API and SSO**. Note its **client ID** and **client secret**.
2. **A Superadmin service account for Herd.** Docebo's APIs refuse a client-credentials token on its own, so Herd signs in as this account. Use a dedicated account that only Herd uses.

You also need your tenant's **domain**, for example `acme.docebosaas.com`.

***

## Connect Docebo to Herd

1. In Herd, go to **Settings → Integrations** and open the **Docebo** card in the **Learning** section.
2. Fill in:
   * **Docebo domain** — your tenant host, for example `acme.docebosaas.com`.
   * **API app client ID** and **API app client secret** — from the API app you registered.
   * **Service account username** and **Service account password** — the Superadmin account for Herd.
3. Click **Save credentials**.
4. Click **Test connection**. A healthy connection shows *Docebo connection is healthy*. The test signs in, lists your courses, and reads one page of a course's enrollments, which is the same call the hourly check depends on.

Once connected, the card shows your domain, when the connection was last checked, and **needs attention** with the error if the last check failed. Use **Re-enter credentials** to rotate the password or secret, and **Disconnect** to remove the connection.

***

## Track a Docebo course with a Reminders item

1. Open **Messaging → Reminders** and click **New item** (or edit an existing one).
2. Under **How do we know someone is done?**, choose **External — read from a connected system**.
3. Set **System** to **Docebo**.
4. Pick the course from **Docebo course**. The list shows each course's name and code.
5. Fill in the rest of the item (title, link, due date, cadence) and save. Then assign people or groups as usual.

From then on, Herd checks the course's enrollments every hour:

* **Matching** is by email address: a person on the item's roster is matched to the Docebo user with the same email (not case-sensitive). Someone with no Docebo account under that email stays **Not done**.
* **Done** means the enrollment's status is **completed** in Docebo. The roster shows the completion date Docebo reports.
* People who are done stop getting reminders. Everyone else keeps getting them on the item's cadence until Docebo reports them complete.

{% hint style="info" %}
For a large roster, the first check may not cover everyone: Herd looks up at most 500 new people in Docebo per item each hour, so it can take a few hours before every person is matched. After that, matches are remembered and each check is quick.
{% endhint %}

You can still **Mark done** people by hand on an item that reads from Docebo, for example someone who completed an equivalent course elsewhere.

***

## If Docebo is disconnected

If the connection is removed or stops working, items that read from Docebo show a **System not connected** badge on the Reminders list and the item page. While it's disconnected, nobody is marked done from Docebo and people keep getting reminded, so reconnect it in **Settings → Integrations** (or mark people done by hand in the meantime). You can still rename or re-date an existing Docebo item while Docebo is disconnected, but you can't point an item at Docebo until it's connected.

***

## Troubleshooting

**Test connection fails with an authentication error.** Check that the API app has the **password grant** enabled and that the service account is a **Superadmin**. Docebo refuses requests made with a client-credentials token alone.

**Someone finished the course but is still Not done.** Check that their email in Docebo matches their email in Herd, and that their enrollment status in Docebo is **completed** (not just in progress). Herd checks once an hour, so allow up to an hour after completion.

**The course I want isn't in the picker.** The picker lists the courses Herd can read from Docebo with the service account, so check that account's access in Docebo. If you're editing an older item whose course no longer appears, its course id is kept as is.
