Salesforce
The Salesforce data source connects Data Hub to a Salesforce organization through the Salesforce REST API. It authenticates with the OAuth 2.0 client credentials flow through an external client app, so it connects server-to-server without an interactive sign-in.
Prerequisites
Before adding a Salesforce data source, a Salesforce administrator needs to:
- Ensure your Salesforce edition supports API access
- Create an external client app and enable the client credentials flow
- Choose a Run As user for the flow
- Grant that user the permissions needed to read your data
These steps produce the consumer key and consumer secret you enter into the connection settings.
Create the external client app
The connector authenticates as an external client app in your Salesforce organization. Follow the Salesforce guide to create a local external client app:
- In Salesforce, go to Setup > Apps > External Client Apps > External Client App Manager and click New External Client App.
- Follow the wizard to create a new app, and set the Distribution State to Local. This makes the app a local external client app, only usable in your organization.
- Under API (Enable OAuth Settings), check the Enable OAuth checkbox.
- Set the callback URL to
https://services.zapbi.com/OAuthLoginRedirect. - Add the Manage user data via APIs (api) scope.
- Under the Flow Enablement section, check the Enable Client Credentials Flow checkbox.

Set the Run As user
After creating the app and enabling the client credentials flow, set a Run As user. Salesforce runs every request from the connector as this user, so choose an account that has access to the data you want to load. See Permissions below.

After saving, go to Settings > OAuth Settings and copy the app's consumer key and consumer secret. You enter these as the Consumer key and Consumer secret connection settings.
Permissions
The Run As user for the client credentials flow needs:
-
API Enabled under System Permissions, granted on the user's profile or through a permission set. Follow the API access guide and the guide to granting API access for more information.

-
Read access to every object and field you want to load, granted through object permissions or the View All Data system permission for a full-access integration user.
Connection settings
Define the following connection settings for a Salesforce data source:
- Instance URL - The Salesforce My Domain URL of your organization, for example
https://acme.my.salesforce.com. - Consumer key - The consumer key from your Salesforce external client app.
- Consumer secret - The consumer secret from your Salesforce external client app.
Detect deleted rows
The connector detects rows deleted from a source object automatically, for every object that Salesforce allows to be replicated. No extra configuration is required.
Salesforce purges deleted records from the recycle bin after roughly 15 days. The connector can only detect a deletion while the record is still in the recycle bin, so schedule syncs to run within that window, otherwise deletions are missed.
Frequently asked questions
Q: Which Salesforce objects are available?
A: The connector lists every queryable standard and custom object in your organization. A small number of objects that Salesforce does not allow to be queried directly, such as ActivityHistory and OpenActivity, are not available.
Q: Are custom objects and fields supported?
A: Yes. Custom objects and custom fields are discovered automatically alongside the standard ones. If the custom object does not appear, make sure to Refresh table list on the data source screen.
Q: Why are some fields missing from an object?
A: Compound fields, such as address and geolocation fields, are not loaded directly. Their individual components are loaded instead, so a billing address is available as BillingStreet, BillingCity, BillingState, and the related fields rather than as a single address field.
Q: Does the connector count against my Salesforce API limit?
A: Yes. Every request the connector makes counts toward your organization's daily API request limit, which Salesforce allocates per rolling 24-hour period based on your edition and number of licenses. If the organization reaches that limit, requests fail until the window resets. See API request limits and allocations for the allocation for your edition.