Skip to content

LMS Connectors — issue on course completion ​

Connect your LMS once and every learner who completes a course gets a verifiable credential automatically — no Zapier, no code, no manual issuing. Set it up on the Integrations page in the dashboard.

Supported platforms today: Thinkific and Teachable. More (Moodle, LearnWorlds) are on the way.

How it works ​

  1. You create a connection for your LMS and map each course to the badge it should issue.
  2. Your LMS calls a private webhook URL when a learner finishes a course.
  3. badges.ninja verifies the event, finds the mapped badge, and issues the credential to the learner — who can claim it with no account, exactly like any other award.

One completion issues one credential. Deliveries are idempotent: if your LMS sends the same completion twice (they retry), it won't issue twice. Issuing counts against your plan's credential allowance like any other award.

Set up a connection ​

  1. In the dashboard, open Integrations and choose Add connection.
  2. Pick your platform and give the connection a name.
  3. Map your courses: enter each course ID from your LMS and pick the badge to issue. You can also set a default badge for any course that isn't mapped.
  4. Save. You'll see a webhook URL and a signing secret — these are shown once, so copy them now, then paste them into your LMS (steps below).

Thinkific ​

  1. In Thinkific, go to Settings → Code & Analytics → Webhooks → New webhook.
  2. Topic: enrollment.completed.
  3. Target URL: the webhook URL from your connection.
  4. Choose signing secret and paste the signing secret from your connection. Save and send a test.

Thinkific signs every delivery, which we verify before issuing.

Teachable ​

  1. In Teachable (Growth plan or higher, which is required for webhooks), go to Settings → Webhooks and add a webhook.
  2. Event: Enrollment.completed.
  3. URL: the webhook URL from your connection.
  4. Because Teachable does not sign its webhooks, we confirm each completion against the Teachable API before issuing — so the connection also asks for your Teachable API key. Paste it when creating the connection.

Confirm it's working ​

Open the connection and expand Recent deliveries. Each inbound event is logged with:

  • whether it verified,
  • the event type your LMS sent,
  • the outcome — issued, or skipped (e.g. the course wasn't mapped), with the reason,
  • and the raw payload, so you can see exactly what your LMS delivered.

Send a test completion from your LMS and watch it land here. This is the fastest way to confirm the end-to-end flow before you go live. Delivery logs are kept for 7 days.

Good to know ​

  • Course not mapped? The event is logged and skipped (no error back to your LMS, so it won't disable the webhook). Add the mapping and the next completion issues.
  • Allowance reached? The event is logged and skipped until your allowance resets or you upgrade.
  • Pausing: set a connection to paused to stop issuing without deleting its configuration.
  • A connection can only ever issue your own account's badges.

badges.ninja Documentation