Salesforce
Salesforce is the world's #1 CRM platform
Prerequisites
The Omnata Salesforce Plugin connects to the core Salesforce CRM APIs, aka Sales and Service Cloud, and does not require any add-on products on the Salesforce side to operate. It also supports industry clouds, such as Health Cloud, that are built on the core CRM but have slightly different object schemas.
Authentication methods
OAuth (Client Credentials)
Omnata does not provide a centralized OAuth app for all customers to use. Instead, you will create a External Client App within your Salesforce instance.
Currently, the Authorization Code flow is not available due to incompatibilities with Snowflake OAuth secrets.
Create the External Client App
Navigate to the App Manager and click "New External Client App"

Under Basic Information, use the following settings:
Connected App Name:
Omnata SyncContact email: Chose any internal email

Under API (Enable OAuth Settings), check Enable OAuth

Under App Settings:
Put
https://localhostas the URL, this will not actually be used since we aren't using Authorization code flowsSelect OAuth Scopes:
Manage user data via APIs (api)
Perform requests at any time (refresh_token, offline_access)

Under Flow Enablement, check Enable Client Credentials Flow

Under Security, uncheck Require Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows:

Click Create:

If you see this error in a Sandbox or Scratch org: Failed to create an External Client App [The Org Scoped External Client App must be in the format DeveloperOrganizationId:ExternalClientAppDeveloperName] Then your environment may have been created during an awkward window in early 2026 where Salesforce had deprecated Connected Apps but not yet added support for External Client Apps. Orgs on Spring '26 or later should not experience this issue.
After the external client app has been created, click the Edit button under the policies tab:

Check Enable Client Credentials Flow and enter the username of the Salesforce user you wish to assume the privileges of from Snowflake. Also choose "Refresh token is valid until revoked" as the Refresh Token Policy:

Scroll down and click Save

Next, go to the Settings tab, expand OAuth Settings, and click the "Consumer Key and Secret" button:

You will be taken to Salesforce Classic in a new tab, and will be provided with the Consumer Key and Consumer Secret you need to provide in Omnata:

During the connection configuration process, you will also be asked for your Salesforce domain. You can find this under the "My Domain" section in Salesforce setup.
Credentials
Salesforce deprecated Credential-based login in 2025 as described here.
Omnata will continue to support existing Credential-based connections, but functionality will become increasingly limited and we strongly recommend migrating to OAuth.
Use your username, password, and security token to authenticate as a user.
If you don't know your security token, see the Salesforce docs for instructions on how to reset it.
Inbound Syncs
Supported Sync Strategies
Full Refresh - Replace
Full Refresh - Append
Incremental - Append
Incremental - Merge
Supported Streams
The following objects are supported:
Standard Objects - See the list of Standard Salesforce Objects.
Custom Objects
There are some objects that appear in the global describe() results that are not valid for syncing, for various reasons:
Any object ending in "ChangeEvent" is not allowed to be queried
Certain objects don't support fetching via the query API, and some can only be fetched as a nested result in another object type
If there is a particular object missing from the list which you expect to be able to sync, please get in touch at [email protected]
Each object is synced as a separate stream and appears as a separate table in Snowflake.
The available objects are determined by Salesforce access rules:
The roles and permissions of the authenticated Salesforce user
The Salesforce object must be accessible with the "queryable" property set to true.
Outbound Syncs
Sync Types
Standard Objects
Custom Objects
Record Merge
Sync Strategies
Standard and Custom Objects
Upsert (requires an External ID field also marked as Unique)
Update (requires the Salesforce 18 character system ID as an identifier)
Mirror (requires an External ID field also marked as Unique)
Create
Delete
Record Merge
Create - Calls the merge() operation to merge a source record (recordToMergeIds) into a target record (masterRecordId).
Supports Lead, Contact, Account, Person Account, and Individual objects.
Functions
SOQL_QUERY
Executes a SOQL query and returns the results.
Parameters:
CONNECTION_SLUG (VARCHAR): The slug of the connection to query
QUERY (VARCHAR): The SOQL query
USE_BULK_API (BOOLEAN): Set to true to use the Salesforce Bulk API, recommended if you expect a large number of results.
Examples:
FETCH_SOBJECTS
Fetches a list of all objects in the Org by using global describe.
Parameters:
CONNECTION_SLUG (VARCHAR): The slug of the connection to query
Examples:
FETCH_SOBJECT_FIELDS
Fetches a list of all field metadata for a given object in the Org.
Parameters:
CONNECTION_SLUG (VARCHAR): The slug of the connection to query
SOBJECT_NAME: Type of object to search for
Examples:
FETCH_PICKLIST_VALUES
Fetches all picklist values for all fields.
Parameters:
CONNECTION_SLUG (VARCHAR): The slug of the connection to query
Examples:
LIST_STANDARD_ACTIONS
Lists all available standard Salesforce actions.
Some actions return errors in some environments when attempting to query the full details. If you see NULL values next to certain actions, check the Snowflake event table for warning messages to see the API error.
Parameters:
CONNECTION_SLUG (VARCHAR): The slug of the connection to query
Examples:
INVOKE_STANDARD_ACTION
Invokes standard Salesforce actions. The list of available actions and required inputs can be retrieved via LIST_STANDARD_ACTIONS
Parameters:
CONNECTION_SLUG (VARCHAR): The slug of the connection to query
ACTION_NAME (VARCHAR): The name of the action
INPUTS (OBJECT): Inputs to the action
This function returns a variant due to the variety of possible return values the different actions can return.
Examples:
Last updated