Skip to Content
DestinationsCRMSalesforce Service Cloud

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 Email for Contact and Lead)

Authentication

Salesforce Service Cloud uses OAuth 2.0 with PKCE for secure authentication.

  1. Click Connect with OAuth in Zeotap
  2. Sign in to your Salesforce account
  3. Authorize Zeotap to access your Salesforce data
  4. 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

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

Target Settings

FieldTypeRequiredDescription
Salesforce ObjectSelectYesThe Service Cloud object to sync data to: Case, Contact, Account, Lead, 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.
External ID FieldTextNoThe 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

ModeSupported
UpsertYes
InsertYes
UpdateYes
Mirror

Audience Sync Modes

ModeSupported
AddYes
RemoveYes
MirrorYes
UpsertYes

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:

ObjectRequired Fields
CaseSubject
ContactLastName
LeadLastName, Company
AccountName

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:

  1. Zeotap reads rows from your model query
  2. Rows are grouped into batches (up to 25 records per Composite API call)
  3. Each batch is sent to the Salesforce Composite API with partial-success enabled, so a single bad record does not fail the whole batch
  4. For upsert modes, records are matched on the configured External ID field — existing records are updated and new ones are created
  5. For mirror and remove audience modes, records absent from your audience are deleted
  6. Responses are parsed per record to track successes and failures
  7. 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, and Origin to 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.

Last updated on