Our organization has recently had a number of issues with the Salesforce (SF) Integration, and I’d like to share some of what I’ve learned from the month-long exchange with Docebo Support. I don’t remember much of this being covered in documentation, so I’m hoping it will help folks in the future.
For some background, we only use the salesforce integration to sync Contacts (enriching SSO-created Docebo Users with SF metadata), Courses, and Enrollments.
- The Contacts synchronization process is bi-directional (despite the documentation making it sound like it is uni-directional):
- The synchronization process follows a key principle: it looks for a unique match between a specific Salesforce field and the Docebo Username.
- Unique Identifier: By default, this is whatever SF field you’ve mapped into the “Username” field.
- Matching Logic:
- If a match exists: When the Contact's <SF Field> matches a Docebo Username, the system updates that user’s details (such as name or job title).
- If no match exists: The system treats this as a new learner and creates a new Docebo User account (if you’ve enabled SFDC User Provisioning)
- Example: If you’ve mapped “Email” to the Docebo “Username” field, the sync updates Docebo Users where the username matches the “email” on the contact, and then that Contact’s SF Contact ID is written to the sfdc_id field.
- One-to-One Rule: The sync does not merge accounts with different usernames. It strictly relies on the field selected in your Data Mapper settings (usually Email or Salesforce ID) to link records.
- In summary: If the Salesforce value does not exactly match the Docebo Username, a new user is created (if you’ve enabled SFDC User Provisioning)
- The sync also sets the Docebo UserID (
docebo_v3__UserId__cin the Docebo User Custom Salesforce Object) ONLY if the user has enrollments that are to be synced to Salesforce- Docebo → Salesforce synchronization relies on the
sfdc_id/ Contact ID stored on the Docebo user, not on email or the List View. - The outbound sync does not depend on the List View you’ve set to constrain the Contacts Sync. Once a user has a valid
sfdc_id, the DoceboUser object and related enrollment records are created or updated for that Contact regardless of whether it appears in the List View.
- Docebo → Salesforce synchronization relies on the
- The Error Logs produced by the Contacts synchronization ONLY contain logging related to the “Salesforce to Docebo” sync, and NOT the sync from Docebo to the Docebo User (
docebo_v3__DoceboUser__c) object
- The synchronization process follows a key principle: it looks for a unique match between a specific Salesforce field and the Docebo Username.
- The Enrollments sync ONLY syncs enrollments for SF Contacts where the Contact has been updated by the Docebo → Salesforce process of the Contacts Sync to create the
docebo_v3__DoceboUser__cobject.- In other words, if you’re looking at a contact in Salesforce, and the “Docebo User” information is blank for that contact, no enrollments will sync to Salesforce for that user (even if the Docebo User has an sfdc_id custom attribute). This is an indicator that the Docebo → Salesforce sync may be stalled.
- Docebo does not proactively monitor any sync issues with the process that populates the Docebo User (
docebo_v3__DoceboUser__c) object- In our recent support case, we finally were escalated to the product team only to find out that our sync process was “stalled” since the AWS outage back in October 2025.
- Docebo’s product team responded with this: “when a job is interrupted at the infrastructure level (vs. the application layer), it doesn't get the chance to transition to a "failed" state — it freezes where it is. This is standard distributed systems behaviour and not specific to our integration. What they can do going forward is periodically cross-check enrollment data in Salesforce after major outage events, as the status page is always the reference point for service impact.”
- In other words, you (as the customer) need to find a way to proactively monitor for this situation and open a Support ticket.
- The Docebo User (
docebo_v3__DoceboUser__c) object does not get populated for a Contact in SF until the user has enrollments that need to be synced
Public Service Reminder:
As stated in the documentation, Docebo will not support you if you’re doing ANY customizations to the integration objects (which we are not). This includes any customizations, automations, or scripts (such as flows, triggers, Apex code, middleware) that update custom objects created by the Salesforce Integration app.
- If you want to build Salesforce functions that make use of these custom objects, ensure you’re only referencing or reporting. Build new objects for whatever you want to do - do not attempt to modify or extend the Docebo-created objects.
Hope you found this helpful!
