DestinationsCRMSalesforce Data Cloud

Salesforce Data Cloud

Ingest customer data into Salesforce Data Cloud for unified profiles, segmentation, and activation. Stream records into Data Cloud data streams, update unified profiles, manage segments, and trigger activations.

Prerequisites

  • A Salesforce org with Data Cloud provisioned and enabled
  • A Connected App with the required Data Cloud OAuth scopes
  • Access to the Data Cloud Setup to create ingestion data streams

Authentication

Salesforce Data Cloud supports two authentication methods:

  1. SignalSmith initiates a secure OAuth flow with your Salesforce org
  2. Authorize SignalSmith to access Data Cloud APIs
  3. SignalSmith automatically manages token refresh

Client Credentials (Server-to-Server)

  1. In Salesforce, navigate to Setup > App Manager
  2. Create a new Connected App with Enable OAuth Settings checked
  3. Add the required scopes:
    • api
    • cdp_ingest_api
    • cdp_profile_api
    • cdp_query_api
    • cdp_segment_api
    • refresh_token
    • offline_access
  4. Enable Client Credentials Flow
  5. Copy the Client ID and Client Secret
  6. Enter them in SignalSmith when creating the destination

Configuration

FieldTypeRequiredDescription
Instance URLTextYesYour Salesforce instance URL (e.g., https://myorg.my.salesforce.com). Auto-populated when using OAuth.
API VersionSelectYesSalesforce API version. Default: v59.0
Data SpaceTextNoThe Data Cloud data space to operate in. Default: default

Target Settings

FieldTypeRequiredDescription
Object TypeSelectYesThe type of Data Cloud object to sync to: Data Stream, Unified Profile, Activation Target, or Segment
Data Stream NameTextConditionalAPI name of the ingestion data stream (required for Data Stream). Example: MyDataStream__dlm
Source Object NameTextConditionalSource object name within the data stream (required for Data Stream). Example: MySourceObject__c
Profile API NameTextConditionalUnified profile object API name (required for Unified Profile). Default: UnifiedIndividual__dlm
Activation Target IDTextConditionalThe activation target identifier (required for Activation Target)
Segment NameTextConditionalThe segment API name or ID (required for Segment)
Ingestion ModeSelectNoSync (waits for confirmation) or Async (returns immediately). Default: Sync. Only applies to Data Stream.

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 Data Streams and Unified Profiles

Required Mapping Fields

Object TypeRequired Fields
Data Streammaid__c (Record ID / Primary Key)
Unified ProfileIndividualId__c (Individual ID)

Default Destination Fields

Data Stream

maid__c, FirstName__c, LastName__c, Email__c, Phone__c, City__c, State__c, Country__c, PostalCode__c, Company__c, CreatedDate__c, ModifiedDate__c

Unified Profile

IndividualId__c, FirstName, LastName, Email, Phone

Segment

IndividualId__c, SegmentMembershipStatus

Activation Target

IndividualId__c, ActivationStatus

How It Works

SignalSmith to Salesforce Data Cloud sync flow

Data Streams (Ingestion API)

Data Streams are the primary ingestion mechanism for Data Cloud. SignalSmith pushes records in batches of up to 200 rows (max 10 MB per request) into your configured data stream. Data Cloud then processes, deduplicates, and unifies these records according to your identity resolution rules.

Important: Data streams must be created in the Salesforce Data Cloud Setup before syncing. SignalSmith validates the data stream exists before the first sync.

Unified Profiles

Update individual unified profile records directly. Each row maps to a profile update using the Individual ID as the key. This is best for targeted updates to specific profile attributes.

Segments

Add or remove individuals from Data Cloud segments. SignalSmith maps each row to a segment membership operation using the Individual ID.

Activation Targets

Trigger activations to push segments to downstream platforms (advertising, email, etc.). This publishes your Data Cloud segments to connected activation destinations.

Setting Up a Data Stream

Before syncing, you must create a data stream in Data Cloud:

  1. In Salesforce, navigate to Data Cloud Setup > Data Streams
  2. Click New and select Ingestion API as the source
  3. Define the schema (fields) for your data stream
  4. Note the Data Stream API Name (ends in __dlm) and Source Object Name (ends in __c)
  5. Use these values when configuring the destination in SignalSmith

Rate Limits

  • Ingestion API: 200 records per call, 10 MB payload limit
  • Composite API (Profiles): 25 sub-requests per call
  • Segment API: 200 member operations per call
  • SignalSmith handles rate limiting, payload splitting, and automatic retries

Troubleshooting

Data stream not found

Ensure the Data Stream API Name matches exactly (including the __dlm suffix). Data streams must be created in Data Cloud Setup > Data Streams before syncing.

Authentication failed

For OAuth: Re-authorize the connection from the destination settings page. For Client Credentials: verify the Connected App has the required CDP scopes and that Client Credentials Flow is enabled.

Insufficient CDP scopes

The Connected App must include Data Cloud-specific scopes (cdp_ingest_api, cdp_profile_api, etc.). Add these in Setup > App Manager > Your Connected App > OAuth Scopes.

Payload too large

Data Cloud enforces a 10 MB limit per ingestion request. SignalSmith automatically splits large batches, but if individual rows contain very large JSON fields, consider reducing the number of mapped columns.

Records rejected by Data Cloud

Check the sync run details for per-record error messages. Common causes include schema mismatches (wrong field names or types) and missing required fields in the data stream definition.