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.

circle-info

Currently, the Authorization Code flow is not available due to incompatibilities with Snowflake OAuth secrets.

Create the External Client App

  1. Navigate to the App Manager and click "New External Client App"

  2. Under Basic Information, use the following settings:

    1. Connected App Name: Omnata Sync

    2. Contact email: Chose any internal email

  3. Under API (Enable OAuth Settings), check Enable OAuth

  4. Under App Settings:

    1. Put https://localhost as the URL, this will not actually be used since we aren't using Authorization code flows

    2. Select OAuth Scopes:

      • Manage user data via APIs (api)

      • Perform requests at any time (refresh_token, offline_access)

  5. Under Flow Enablement, check Enable Client Credentials Flow

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

  7. Click Create:

circle-info

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.

  1. After the external client app has been created, click the Edit button under the policies tab:

  2. 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:

  3. Scroll down and click Save

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

  5. 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:

  6. 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

triangle-exclamation

Use your username, password, and security token to authenticate as a user.

If you don't know your security token, see the Salesforce docsarrow-up-right 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:

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

Record Merge

  • Create - Calls the merge() arrow-up-rightoperation 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 describearrow-up-right.

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.

circle-info

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