Moodle
by Moodle Pty Ltd (open source)
The most widely deployed open-source LMS. Integrates via a token-based Web Services API (REST/SOAP/XML-RPC), LTI, and a vast plugin ecosystem. No native core webhooks.
Direct integrations
Native integrations you connect from inside the LMS — typically an OAuth "Connect" flow, with no external middleware.
Supported — Integrations are delivered through Moodle's plugin ecosystem (thousands of plugins) and LTI. Examples below are common first/third-party plugins.
| Integration | Category | Type | Notes |
|---|---|---|---|
| LTI 1.3 / LTI Advantage | Interoperability | lti |
Consume or publish external tools. |
| BigBlueButton | Video conferencing | plugin |
Built-in web conferencing activity. |
| Zoom | Video conferencing | plugin |
Zoom meeting activity plugin. |
| Microsoft 365 / Teams | Productivity | plugin |
Microsoft integration plugin suite. |
| Google Workspace | Productivity | plugin |
Google integration via OAuth2 plugins. |
| SAML 2.0 / OAuth2 / LDAP | Identity | saml |
Authentication plugins for SSO. |
Middleware support
Third-party automation platforms (iPaaS) that connect this LMS to thousands of other apps without code.
Supported — Connects to iPaaS tools via its Web Services API. Zapier integrations exist through community apps/plugins.
| Platform | Supported | Details |
|---|---|---|
| Zapier | Yes | Community/third-party Moodle Zapier apps and the Web Services API. |
| Make | Yes | Via HTTP modules against the Web Services API. |
| Pabbly Connect | Yes | Via HTTP against the Web Services API. |
| n8n | Yes | Via the HTTP Request node against the Web Services API. |
| Microsoft Power Automate | No | |
| Workato | No | |
| Tray.io | No |
API
Programmatic access to the LMS. Endpoints below are a documented subset — always check the vendor's official reference for the complete, current list.
Supported — Functions are invoked by name via the wsfunction parameter (e.g. ?wstoken=…&wsfunction=core_user_get_users&moodlewsrestformat=json). The catalyst webservice_restful plugin exposes cleaner per-function REST URLs. 'Endpoints' below are core web-service functions.
| Type | Web Services (REST / XML-RPC / SOAP) |
|---|---|
| Version | Web Services API |
| Authentication | Per-user/service security token (wstoken) |
| Base URL | https://<your-moodle>/webservice/rest/server.php |
| Format | JSON or XML (moodlewsrestformat=json) |
| Rate limit | Site-configurable; no fixed published limit. |
| Docs | https://docs.moodle.org/dev/Web_service_API_functions |
Endpoints
Users
| Method | Endpoint | Description |
|---|---|---|
| POST | core_user_get_users |
Retrieve users by criteria |
| POST | core_user_get_users_by_field |
Retrieve users by a field (id, email, username) |
| POST | core_user_create_users |
Create users |
| POST | core_user_update_users |
Update users |
| POST | core_user_delete_users |
Delete users |
Courses
| Method | Endpoint | Description |
|---|---|---|
| POST | core_course_get_courses |
List courses |
| POST | core_course_create_courses |
Create courses |
| POST | core_course_update_courses |
Update courses |
Categories
| Method | Endpoint | Description |
|---|---|---|
| POST | core_course_create_categories |
Create course categories |
Enrollment
| Method | Endpoint | Description |
|---|---|---|
| POST | enrol_manual_enrol_users |
Enroll users into courses |
| POST | enrol_manual_unenrol_users |
Unenroll users from courses |
| POST | core_enrol_get_enrolled_users |
List users enrolled in a course |
Grades
| Method | Endpoint | Description |
|---|---|---|
| POST | gradereport_user_get_grade_items |
Get grade items/grades for a user |
Groups
| Method | Endpoint | Description |
|---|---|---|
| POST | core_group_create_groups |
Create groups |
Site
| Method | Endpoint | Description |
|---|---|---|
| POST | core_webservice_get_site_info |
Get site info and the functions available to the token |
Webhooks
Outbound HTTP callbacks the LMS sends to your endpoint when events occur, with their supported event types and security model.
Not supported — Moodle core has no native outbound webhooks. It has a server-side Events API (event observers) that custom/contrib plugins use to push notifications; several community 'webhook' plugins add outbound HTTP callbacks. For SaaS-style webhooks, use a plugin or poll the Web Services API.