Salesforce CDP
Salesforce Customer Data Platform (Data Cloud) for unifying customer data, building segments, and activating audiences across the Salesforce ecosystem.
Prerequisites
Complete these steps in Salesforce before configuring Signal.
Access your Salesforce Data Cloud account
Log in to Salesforce at your org’s login URL (e.g. https://your-org.my.salesforce.com). You need a Salesforce edition that includes Data Cloud (formerly Salesforce CDP). If Data Cloud is not enabled, contact your Salesforce administrator.
Create a Connected App
Navigate to Setup > App Manager (search “App Manager” in Quick Find). Click New Connected App and configure:
- Give the app a name (e.g. “Datafly Signal”).
- Enable OAuth Settings.
- Set the callback URL (e.g.
https://localhost/callback— this is not used for server-to-server but is required). - Under Selected OAuth Scopes, add:
cdp_ingest_api— for Data Cloud Ingestion API accessapi— for general API accessrefresh_token— for token refresh
- Enable Client Credentials Flow under the OAuth settings.
- Save the Connected App.
After saving, copy the Consumer Key (Client ID) and Consumer Secret (Client Secret).
The Consumer Secret is only shown once during creation. Copy it immediately and store it securely.
Find your Salesforce subdomain
Your subdomain is the first part of your Salesforce org URL. For example, if your URL is https://your-org.my.salesforce.com, the subdomain is your-org.
Create a Data Cloud Ingestion API dataset
Navigate to Data Cloud Setup > Ingestion API. Click New to create a new Ingestion API source:
- Give it a name (e.g. “Datafly Signal Events”).
- Define the schema for the data you will ingest.
- Save and note the Dataset ID (also called the Ingestion API connector ID).
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
client_id | string | Yes | The OAuth 2.0 Client ID (Consumer Key) from your Connected App. Found in Setup > App Manager. |
client_secret | secret | Yes | The OAuth 2.0 Client Secret (Consumer Secret) from your Connected App. |
subdomain | string | Yes | Your Salesforce org subdomain (e.g. your-org from your-org.my.salesforce.com). |
dataset_id | string | Yes | The Data Cloud Ingestion API dataset ID. Found in Data Cloud Setup > Ingestion API. |
Signal Setup
Quick Setup
- Navigate to Integrations in the sidebar.
- Open the Integration Library tab.
- Find Salesforce CDP or filter by CDP.
- Click Install, and fill in the required fields with the credentials gathered above.
- Click Install Integration to create the integration with a ready-to-use default configuration.
API Setup
curl -X POST http://localhost:8084/v1/admin/integration-catalog/salesforce_cdp/install \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Salesforce CDP",
"variant": "default",
"config": {
"client_id": "3MVG9...",
"client_secret": "xxxxxxxxxxxxxxxxxxxx",
"subdomain": "your-org",
"dataset_id": "dataset-12345"
},
"delivery_mode": "server_side"
}'Event Mapping
Signal events are mapped to Salesforce Data Cloud Ingestion API calls as follows:
| Signal Event | Salesforce Data Cloud Concept | Notes |
|---|---|---|
page | Engagement event | Page view data ingested as engagement events into the configured dataset |
track | Custom event | Event name and properties ingested as records in the Data Cloud dataset |
identify | Individual profile update | User traits ingested for identity resolution and profile unification |
track (purchase) | Commerce event | Purchase data ingested for revenue attribution and segment building |
Signal handles OAuth 2.0 token management automatically, including token refresh. Data Cloud performs identity resolution across all ingested records using its built-in matching rules.
Delivery
Events are delivered server-side from your Datafly Signal infrastructure directly to the Salesforce Data Cloud Ingestion API. No client-side scripts are loaded for this integration.
Testing
- After installing the integration, trigger a test event from your website or via the Signal event API.
- In Salesforce, navigate to Data Cloud > Data Explorer and query the dataset you configured to verify records were ingested.
- Check Data Cloud > Identity Resolution to verify the test user was matched or created.
- In Signal, check the Live Events view to confirm the event was delivered with a
200response status.
Troubleshooting
| Symptom | Possible Cause | Resolution |
|---|---|---|
401 Unauthorized | Invalid client credentials | Verify the Client ID and Client Secret in Salesforce Setup > App Manager > your Connected App |
403 Forbidden | Missing OAuth scopes | Edit the Connected App and add cdp_ingest_api and api scopes |
404 Not Found | Incorrect subdomain or dataset ID | Verify the subdomain from your Salesforce URL and the dataset ID in Data Cloud Setup > Ingestion API |
| Token refresh failure | Connected App deactivated | Ensure the Connected App status is Active in Salesforce Setup > App Manager |
| Schema validation error | Data format mismatch | Ensure the event properties match the schema defined in the Data Cloud Ingestion API source |
Visit Salesforce Data Cloud documentation for full API reference and Ingestion API setup details.