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.
- Click Connect with OAuth in SignalSmith
- Sign in to your Salesforce account
- Authorize SignalSmith to access your Salesforce data
- 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
| Field | Type | Required | Description |
|---|---|---|---|
| Instance URL | Text | No | Your Salesforce instance URL (auto-populated from OAuth). Example: https://myorg.my.salesforce.com |
| API Version | Select | Yes | Salesforce API version to use. Options: v59.0, v58.0, v57.0. Default: v59.0 |
Target Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Salesforce Object | Select | Yes | The Salesforce object to sync data to: Contact, Lead, Account, Opportunity, or Custom Object |
| Custom Object API Name | Text | Conditional | The 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
| Mode | Supported |
|---|---|
| Upsert | Yes |
| Insert | Yes |
| Update | Yes |
| Mirror | — |
Audience Sync Modes
| Mode | Supported |
|---|---|
| Add | Yes |
| Remove | Yes |
| Mirror | Yes |
| Upsert | Yes |
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:
| Object | Required Fields |
|---|---|
| Contact | LastName |
| Lead | LastName, Company |
| Account | Name |
| Opportunity | Name, 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:
- SignalSmith reads rows from your model query
- Rows are grouped into batches (up to 200 records per API call)
- Each batch is sent to the Salesforce Composite API
- Responses are parsed to track successes and failures
- 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.