Salesforce Integration: Mapped fields and user creation race condition? | Community
Skip to main content
Question

Salesforce Integration: Mapped fields and user creation race condition?

  • November 27, 2025
  • 0 replies
  • 1 view

Hi Support,

We are investigating an issue with our Salesforce integration where data is not persisting for new users, specifically regarding a race condition between the Salesforce Sync and the JS SDK boot method.

Our Setup:

  • Integration: Official Salesforce App.

  • Matching Logic: We currently match on Email.

  • User Creation: Users are created via the JS SDK (Intercom('boot')) when they first log into our portal.

The Scenario:

  1. Time T1: A Contact is updated in Salesforce. A mapped custom field (salesforce_resource_access) is populated.

  2. Time T1 + 5 min: The Salesforce Integration triggers a sync.

    • Note: At this moment, no User exists in Intercom with this email address.

  3. Time T2 (Days later): The user logs into our web portal.

  4. Time T2 + 1 sec: We call Intercom('boot', { email: ... }). The user is created in Intercom.

The Issue:
When the user is created via the JS SDK at Time T2, the salesforce_resource_access field is blank. The data synced at Time T1 is lost.

Our Questions:

  1. "Create New Identity Mapping" Behavior:
    Your documentation states that when a Person is updated in Salesforce and no match is found, the system will "Create new identity mapping" and "Sync all mapped attributes to Intercom."

    • When this occurs for an email address that does not yet exist in Intercom, does this create any sort of persistent record or pending mapping?

    • If yes, why does our JS SDK boot at Time T2 (using the exact same email identifier) not recognize this mapping and inherit the fields synced at Time T1?

    • Does the "Identity Mapping" expire if the user isn't created within a certain window?

  2. Switching to Unique Identifiers (Contact ID):
    We are considering switching our matching logic from Email to Salesforce Contact ID.

    • If we make this switch, is the integration better at handling this "sync-before-creation" scenario?

    • If Salesforce syncs a specific Contact ID before the user exists in Intercom, will Intercom create a placeholder record that guarantees the data is waiting when we finally boot the SDK with that user_id?

We are trying to decide if we should switch our ID strategy or simply implement a frontend workaround to force-push the data via the SDK.

Thanks!