Docebo¶
Docebo is a cloud-based Learning Management System (LMS) platform that provides enterprise learning solutions for employee training, customer education, and partner enablement.
omniload supports Docebo as a source.
URI format¶
The URI format for Docebo is as follows:
docebo://?base_url=<base_url>&client_id=<client_id>&client_secret=<client_secret>&username=<username>&password=<password>
URI parameters:
base_url: the base URL of your Docebo instance (e.g.,https://yourcompany.docebosaas.com)client_id: OAuth2 client ID for API authenticationclient_secret: OAuth2 client secret for API authenticationusername: (optional) username for password grant type authenticationpassword: (optional) password for password grant type authentication
Setting up a Docebo Integration¶
To obtain your Docebo API credentials:
Log in to your Docebo platform as a Super Admin
Navigate to Settings → API and SSO
Create a new OAuth2 application
Note the Client ID and Client Secret
Configure the appropriate scopes for your integration needs
You can use either:
Client Credentials Grant: Use only
client_idandclient_secret(recommended for server-to-server integrations)Password Grant: Include
usernameandpasswordalong with client credentials (for user-specific access)
Here’s a sample command that will copy data from Docebo into a DuckDB database:
omniload ingest \
--source-uri 'docebo://?base_url=https://yourcompany.docebosaas.com&client_id=your_client_id&client_secret=your_client_secret' \
--source-table 'users' \
--dest-uri duckdb:///docebo.duckdb \
--dest-table 'dest.users'
Tables¶
Docebo source supports ingesting the following sources into separate tables:
Table |
PK |
Inc Key |
Inc Strategy |
Details |
|---|---|---|---|---|
- |
- |
replace |
Organizational units/branches in the org chart. Full reload on each run. |
|
[categories]https://help.docebo.com/hc/en-us/articles/360020128779-Organizing-courses-in-categories) |
- |
- |
replace |
Course categories for organizing content. Full reload on each run. |
- |
- |
replace |
Certification programs and their configurations. Full reload on each run. |
|
- |
- |
replace |
All course enrollment records with completion status. Full reload on each run. |
|
- |
- |
replace |
Custom course field definitions. Full reload on each run. |
|
- |
- |
replace |
Learning objects (modules) within all courses. Full reload on each run. |
|
- |
- |
replace |
All courses in the platform including e-learning, ILT, and webinars. Full reload on each run. |
|
- |
- |
replace |
External training records tracked in Docebo. Full reload on each run. |
|
- |
- |
replace |
Membership records for all groups. Full reload on each run. |
|
- |
- |
replace |
User groups/audiences for organizing learners. Full reload on each run. |
|
- |
- |
replace |
Course enrollments within learning plans. Full reload on each run. |
|
- |
- |
replace |
User enrollments in learning plans. Full reload on each run. |
|
- |
- |
replace |
Learning plans (learning paths) that group courses. Full reload on each run. |
|
- |
- |
replace |
ILT/classroom sessions for instructor-led courses. Full reload on each run. |
|
- |
- |
replace |
Custom user field definitions. Full reload on each run. |
|
- |
- |
replace |
All platform users including learners, instructors, and administrators. Full reload on each run. |
Use the table name as the --source-table parameter in the omniload ingest command.
[!WARNING] Docebo does not currently support incremental loading, which means omniload will do a full-refresh on each run.
[!NOTE] Date fields containing invalid dates (e.g., ‘0000-00-00’) are automatically normalized to Unix epoch (1970-01-01) for compatibility.