Send Salesforce CRM Data to Insider One

Prev Next

You cannot make any changes to External Platform Integrations without having either an Administrator or an Editor with PII access in InOne. Refer to User Roles for further information.

This guide shows how to set up the SalesfSend Salesforce CRM Data to Insider Oneorce CRM integration in InOne. After setup, InOne pulls records from Salesforce and syncs them as user profiles and behavioral events in Insider One.

The table below outlines the key integration details and capabilities.

Capability

Details

Auth method

OAuth 2.0 (Salesforce)

Data flow

One-way: Salesforce to Insider One

Object types

Contact (default), Lead, Account, or Custom SOQL

Sync behavior

Incremental (new and updated) or full fetch

Supported data

User identifiers, profile attributes, events, and event parameters

Scheduling

Configurable cron schedule (UTC)

Requirements

Information

Details

Salesforce OAuth Client ID

From Salesforce Setup under Apps > App Manager > your Connected App > Manage Consumer Details.

Salesforce OAuth Client Secret

From the same Connected App entry.

Salesforce Object

The object type to sync: Contact, Lead, Account, or a custom SOQL query.

Ensure your Salesforce Connected App has OAuth 2.0 enabled. The integration uses the Salesforce REST API (v63.0). The authorized Salesforce user must have Read access to the object you plan to sync.

Step 1: Create a new integration

  1. Navigate to InOne > Components > Integrations > External Integrations.

  2. Select the Salesforce integration.

  3. Give the integration a unique name and click Save.

Step 2: Connect your Salesforce account

Field

Description

Authorize URL

The OAuth 2.0 Authorization URL for Salesforce. Defaults to https://login.salesforce.com/services/oauth2/authorize.
Not mandatory to change. If your Salesforce org is a sandbox, replace with https://test.salesforce.com/services/oauth2/authorize

Token URL

The OAuth 2.0 Token URL for Salesforce. Defaults to https://login.salesforce.com/services/oauth2/token. Not mandatory to change.
If sandbox, replace with https://test.salesforce.com/services/oauth2/token

Revoke URL

The OAuth 2.0 Revocation URL for Salesforce. Defaults to https://login.salesforce.com/services/oauth2/revoke. Not mandatory to change.
If sandbox, replace with https://test.salesforce.com/services/oauth2/revoke

Client ID

The Consumer Key from your Salesforce Connected App.

Client Secret

The Consumer Secret from your Salesforce Connected App.

Create a Connected App in Salesforce

This step is performed in your Salesforce org, not in Insider One.

  1. Log in to Salesforce and go to Setup.

  2. In the Quick Find box, search for App Manager.

  3. Click New Connected App.

  4. Fill in the basic information:        

    • Connected App Name: Insider One Integration

    • API Name: Auto-populated from the name

    • Contact Email: Your admin email

  5. Under API (Enable OAuth Settings), select Enable OAuth Settings.

  6. In the Callback URL field, enter: https://oauth2.connect.insiderone.com/callback

  7. Under Selected OAuth Scopes, add the following:        

    • Access the identity URL service (id, profile, email, address, phone)

    • Manage user data via APIs (api)

    • Perform requests at any time (refresh_token, offline_access)

  8. Leave all other settings at their default values, then click Save.

  9. Salesforce may take up to 10 minutes to activate the new app.

  10. After activation, go back to App Manager, find your Connected App, click the dropdown arrow, and select Manage Consumer Details.

  11. Salesforce prompts you to verify your identity. After verification, you will see:        

    • Consumer Key (this is your Client ID)

    • Consumer Secret (this is your Client Secret)

  12. Copy both values. You will need them in the next step.

  13. Click Connect. A browser pop-up opens for Salesforce OAuth authorization. After you complete the login, close the pop-up. The status indicator turns green to confirm the connection.

  14. Click Next to proceed.

Step 3: Object selection

Select the Salesforce object type to sync.

Option

Description

Contact (default)

Syncs Salesforce Contact records. The field list is dynamically fetched from your org.

Lead

Syncs Salesforce Lead records. The field list is dynamically fetched from your org.

Account

Syncs Salesforce Account records. The field list is dynamically fetched from your org.

Custom SOQL

Syncs the results of a custom SOQL query you define in the next step. Use this for complex joins or non-standard objects.

Click Next when done.

Step 4: Query and filters

Configure how records are fetched and filtered.

Field

Description

Fetch Mode

New and Updated Since Last Sync (default): fetches records created or modified since the last successful run.  Always Fetch All Records: fetches all records on every run. Use with caution on large orgs.

Query Configuration

For standard objects (Contact, Lead, Account): use the visual condition builder to add filter rules (e.g., Email is not null, Status equals Active).  For Custom SOQL: enter a complete SOQL query.

When using Custom SOQL, include a WHERE clause referencing SystemModstamp or LastModifiedDate if you need incremental behavior. Example:

SELECT Id, Email, FirstName, LastName FROM Contact WHERE LastModifiedDate > {lastSyncTime}

The placeholder {lastSyncTime} is automatically replaced by the integration on incremental runs.

Click Next when done.

Step 5: Identifier mapping

Map Salesforce fields to Insider One identifier types. At least one mapping is required. Records with no valid identifier value are skipped.

Field

Description

Identifier Type

The Insider One identifier type: Email Address, Phone Number, UUID, or any custom identifier.

Source Field

The Salesforce field provides the identifier value.

Common mappings: Email Address to Email, Phone Number to Phone, UUID to Id.

Click +Add to Identifier Mappings to add rows. Click Next when done.

Step 6: Attribute mapping

Map Salesforce fields to Insider One user profile attributes.

  • Column Mappings: Each row maps a Salesforce field to an Insider One attribute. The field value is written to the matched user profile on each sync run.

  • Fixed Value Mappings: Sets a static value on every synced record. Common use: set crm_source to salesforce to tag all synced records by origin.

Click Next when done.

Step 7: Event mapping (Optional)

Enable event sending by checking Map events. One event is sent per Salesforce record.

Field

Description

Event name source

Fixed value: every record triggers the same event type. From source data: reads the event name from a Salesforce field.

Event name

Visible when the fixed value is selected. Choose a standard or custom Insider One event type.

Timestamp source

Processing time: uses the sync execution time. From source: reads the timestamp from a Salesforce field (e.g. CloseDate for Opportunities).

Step 8: Event parameter mapping (Optional)

Active only when event mapping is enabled. Maps Salesforce fields or fixed values to event parameters (e.g., opportunity_value, stage, product_name).

Step 9: Sync Options

Field

Description

Skip Hook

Suppresses Architect journey triggers for all users upserted in this run. Enable for large historical imports.

Fast Fail on Upsert Error

Stops the sync on the first failed upsert batch. Leave off unless strict all-or-nothing behavior is required.

Schedule

Cron expression (UTC) for how often the integration runs.
Example: 0 * * * * runs every hour.

Phone Number Settings

Normalizes phone values to E.164 format and optionally adds a country code.

Identifier Settings

Controls behavior when an identifier value fails validation.

Click Finish to save and activate the integration.

Troubleshooting

Symptom

What to check

OAuth connection fails

Verify Client ID and Client Secret. Confirm the Connected App is active and the OAuth callback URL is correctly configured in Salesforce Setup.

No fields available in mapping steps

The field list is fetched live from Salesforce using the describe API. Confirm the connected user has read access to the selected object.

Records not syncing

Check Fetch Mode. If using "New and Updated Since Last Sync" with no recent changes in Salesforce, the run correctly returns zero records.

Records are missing in Insider One

Confirm that at least one Identifier Mapping is set and the mapped Salesforce field contains valid, non-null values. Check the Executions tab for upsert error details.

Custom SOQL returning errors

Validate the SOQL query in Salesforce Developer Console before pasting it here. Confirm field names use the Salesforce API name (not the label).

Sync triggering unintended journeys

Enable Skip Hook in Sync Options. This is especially important for large historical backfills.

Frequently Asked Questions

Q: Can I sync custom Salesforce objects?
A: Yes. Select Custom SOQL in Object Selection and write a SOQL query that targets your custom object (for example: SELECT Id, Email__c FROM My_Custom_Object__c).

Q: Does incremental sync work for all object types?
A: Incremental sync works for Contact, Lead, and Account using LastModifiedDate. For Custom SOQL, include the {lastSyncTime} placeholder in your WHERE clause to enable incremental behavior.

Q: Will syncing records create duplicate profiles in Insider One?
A: No. The Insider upsert API is idempotent. Re-sending the same record with the same identifier updates the existing profile.

Q: Can I sync the same Contact record with both attribute and event mappings?
A: Yes. Configure both Attribute Mapping and Event Mapping. Each record updates the user profile and sends one event per sync run.

Q: Will syncing trigger Architect journeys?
A: By default, yes. Enable Skip Hook to suppress journey triggers for all records in a run.