DestinationsCRMSalesforce

Salesforce

Sync data from your warehouse to Salesforce CRM objects. Use SignalSmith to keep your Salesforce Contacts, Leads, Accounts, and Opportunities up to date with your latest customer data.

Prerequisites

  • A Salesforce account with API access enabled
  • A Salesforce user with permissions to read/write the target objects
  • API access must be included in your Salesforce edition (Enterprise, Unlimited, Developer, or Performance)

Authentication

Salesforce uses OAuth 2.0 with PKCE for secure authentication.

  1. Click Connect with OAuth in SignalSmith
  2. Sign in to your Salesforce account
  3. Authorize SignalSmith to access your Salesforce data
  4. You are redirected back to SignalSmith with the connection established

SignalSmith requests the following OAuth scopes: api, refresh_token, offline_access.

The Instance URL is automatically populated from the OAuth response.

Configuration

FieldTypeRequiredDescription
Instance URLTextNoYour Salesforce instance URL (auto-populated from OAuth). Example: https://myorg.my.salesforce.com
API VersionSelectYesSalesforce API version to use. Options: v59.0, v58.0, v57.0. Default: v59.0

Target Settings

FieldTypeRequiredDescription
Salesforce ObjectSelectYesThe Salesforce object to sync data to: Contact, Lead, Account, Opportunity, or Custom Object
Custom Object API NameTextConditionalThe API name of the custom object (e.g., My_Object__c). Required only when Salesforce Object is set to Custom Object.

Supported Operations

Sync Modes

ModeSupported
UpsertYes
InsertYes
UpdateYes
Mirror

Audience Sync Modes

ModeSupported
AddYes
RemoveYes
MirrorYes
UpsertYes

Features

  • Field Mapping: Yes
  • Schema Introspection: Yes — SignalSmith reads field definitions from the Salesforce Describe API

Required Mapping Fields

Required fields depend on the selected Salesforce Object:

ObjectRequired Fields
ContactLastName
LeadLastName, Company
AccountName
OpportunityName, StageName, CloseDate

Supported Objects

  • Contact — Individual people associated with Accounts
  • Lead — Prospective customers not yet converted to Contacts
  • Account — Companies or organizations
  • Opportunity — Sales deals with stages and close dates
  • Custom Object — Any custom Salesforce object using its API name (e.g., My_Object__c)

How It Works

SignalSmith uses the Salesforce Composite API to batch upsert, insert, or update records efficiently. For each sync run:

  1. SignalSmith reads rows from your model query
  2. Rows are grouped into batches (up to 200 records per API call)
  3. Each batch is sent to the Salesforce Composite API
  4. Responses are parsed to track successes and failures
  5. Failed records are logged with error details

Troubleshooting

Authentication failed: token expired or invalid

OAuth tokens can expire if the Salesforce session timeout is too short. Go to your destination settings and click Reconnect to re-authenticate.

INVALID_FIELD error

The mapped destination field does not exist on the target Salesforce object. Verify the field API name (not the label) in Salesforce Setup under the object’s field list.

REQUIRED_FIELD_MISSING error

A required Salesforce field is not included in your field mapping. Check the object’s required fields in Salesforce Setup and add the missing mapping.

INSUFFICIENT_ACCESS_OR_READONLY error

The authenticated Salesforce user does not have permission to create or update records on the target object. Verify the user’s profile and permission sets in Salesforce Setup.

REQUEST_LIMIT_EXCEEDED error

Your Salesforce org has exceeded its daily API request limit. Consider reducing sync frequency or upgrading your Salesforce edition for higher API limits.

Custom object not found

Verify that the Custom Object API Name exactly matches the Salesforce API name, including the __c suffix. The name is case-sensitive.