Salesforce Service Cloud
Sync data from your warehouse to Salesforce Service Cloud objects. Use Zeotap to keep your Salesforce Cases, Contacts, and Accounts up to date with your latest customer data, so your support and service teams always work from a complete customer profile.
Salesforce Service Cloud runs on the same Salesforce Platform as Sales Cloud, so Zeotap connects to it using the standard Salesforce REST and Composite APIs. The Service Cloud destination defaults its object selection toward service objects such as Case, Contact, and Account.
Prerequisites
- A Salesforce account with Service Cloud and API access enabled
- A Salesforce user with permissions to read/write the target objects (a system administrator or dedicated integration user is recommended)
- API access must be included in your Salesforce edition (Enterprise, Unlimited, Developer, or Performance)
- For upsert syncs, a field marked as an External ID on the target object (or use
Emailfor Contact and Lead)
Authentication
Salesforce Service Cloud uses OAuth 2.0 with PKCE for secure authentication.
- Click Connect with OAuth in Zeotap
- Sign in to your Salesforce account
- Authorize Zeotap to access your Salesforce data
- You are redirected back to Zeotap with the connection established
Zeotap requests the following OAuth scopes: api, refresh_token, offline_access.
The Instance URL is automatically populated from the OAuth response, so all subsequent API calls are routed to your org’s instance.
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: v61.0, v60.0, v59.0. Default: v61.0 |
Target Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Salesforce Object | Select | Yes | The Service Cloud object to sync data to: Case, Contact, Account, Lead, 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. |
| External ID Field | Text | No | The Salesforce field to use as the external ID for upsert operations (e.g., Email, External_ID__c). Defaults to Email for Contact and Lead objects. |
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 — Zeotap reads field definitions from the Salesforce Describe API
Required Mapping Fields
Required fields depend on the selected Salesforce Object:
| Object | Required Fields |
|---|---|
| Case | Subject |
| Contact | LastName |
| Lead | LastName, Company |
| Account | Name |
Your Salesforce org may enforce additional required fields through validation rules, page layouts, or required custom fields. These surface as per-record errors at sync time rather than during configuration.
Supported Objects
- Case — Customer service tickets and support requests
- Contact — Individual people associated with Accounts
- Account — Companies or organizations
- Lead — Prospective customers not yet converted to Contacts
- Custom Object — Any custom Salesforce object using its API name (e.g.,
My_Object__c)
How It Works
Zeotap uses the Salesforce Composite API to batch upsert, insert, or update records efficiently. For each sync run:
- Zeotap reads rows from your model query
- Rows are grouped into batches (up to 25 records per Composite API call)
- Each batch is sent to the Salesforce Composite API with partial-success enabled, so a single bad record does not fail the whole batch
- For upsert modes, records are matched on the configured External ID field — existing records are updated and new ones are created
- For mirror and remove audience modes, records absent from your audience are deleted
- Responses are parsed per record to track successes and failures
- Failed records are logged with the Salesforce error code and message
If a session token expires mid-sync, Zeotap automatically refreshes it and retries the affected batch.
Rate Limits
Salesforce enforces a daily API request limit that varies by edition (Enterprise starts at 100,000 requests per 24 hours, plus an allowance per user license). Because the Composite API counts each batch of up to 25 records as a single request, Zeotap keeps request consumption low. If the org’s limit is reached, Salesforce returns a REQUEST_LIMIT_EXCEEDED error and Zeotap pauses briefly before retrying rate-limited batches.
Best Practices
- Use Upsert with a dedicated External ID field to avoid creating duplicate records on repeated syncs
- Authenticate with a dedicated integration user that has access to all target objects and fields
- Map field API names (not labels) — for example, use
AccountId, not “Account Name” - For Cases, populate
Subject,Status, andOriginto satisfy common org defaults and validation rules - Schedule large syncs outside peak hours to preserve your daily API quota
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_SESSION_ID error
The Salesforce session was revoked server-side. Zeotap automatically invalidates and refreshes the token and retries once. If the error persists, reconnect the destination.
REQUIRED_FIELD_MISSING error
A required Salesforce field is not included in your field mapping. For Cases this is often Subject; check the object’s required fields in Salesforce Setup and add the missing mapping.
DUPLICATE_VALUE error
An upsert matched more than one existing record on the External ID field, or a unique-field constraint was violated. Ensure the External ID field is marked Unique and contains a distinct value per record.
Upsert is creating duplicates instead of updating
The configured External ID Field must be an explicit External ID type field in Salesforce (not just any field used as a key). Mark the field as External ID and Unique in Salesforce Setup, then re-run the sync.
Instance URL not set
Field introspection and API calls require the Instance URL, which is populated automatically after OAuth completes. Reconnect the destination if the Instance URL is blank.
Field is not createable or updateable
The mapped destination field is read-only or computed (for example, Case.CaseNumber). Zeotap only writes fields the Salesforce Describe API reports as writable. Remove the read-only field from your mapping.
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.