Salesforce Customer Data Platform (CDP) is a data management tool designed to unify and centralize customer data from various sources across an organization. It helps create a comprehensive, single view of each customer by consolidating data such as demographic information, interactions, purchase history, and preferences. Salesforce CDP supports powerful segmentation and audience targeting, enabling personalized marketing and engagement at scale. Built on Salesforce's robust platform, it integrates seamlessly with other Salesforce products, allowing businesses to leverage customer insights across sales, service, and marketing channels. The platform emphasizes data privacy and compliance, ensuring customer data is securely managed and used responsibly.
Product Type: Customer Data Platform
Integration Type: Starter Kit
Event Source Type: Web
Event Scope: Full-Funnel Events
- Event-Based Data Mapping: Supports a variety of event types (e.g.,
identify, page, order_completed, product_added), ensuring data is directed to the Salesforce CDP Ingestion API endpoint.
- Automated Data Consistency: Ensures that data is formatted consistently across various events, improving data quality and segmentation capabilities in Salesforce CDP.
- Batch Data Ingestion: Processes data in batches of 100, optimizing for efficient handling of large data volumes.
- Identifiers from other third-party vendors, such as The Trade Desk and Pinterest, can be supported and sent to Salesforce CDP when their respective syncs are in place. This kit maps Pinterest and The Trade Desk identifiers by default.
- Data Transformation Constraints: The integration relies on specific data mappings. Data not aligned with these mappings might result in errors or data loss.
- Asynchronous Data Processing: Salesforce CDP processes data ingestion asynchronously, typically every three minutes, so data might not be immediately available for real-time use.
- Set up a connected app in Salesforce and obtain the following:
- Client Identifier: A unique identifier for your Salesforce CDP instance, assigned during CDP environment setup.
- Ingestion API Name: The name assigned to your ingestion API, defined when you create an Ingestion API data stream.
- Client ID: Generated when you create a connected app in Salesforce.
- User Name: The username of the Salesforce account used for API access. Ensure the user has permissions to interact with Salesforce CDP APIs (e.g., Data Cloud Admin or Data Cloud Integrator roles).
- Login URL:
https://login.salesforce.com for production, or https://test.salesforce.com for sandbox.
- Private Key: Generate a private key and digital certificate, then upload the certificate when setting up your connected app.
- From the integration library, add a Salesforce CDP integration. Then, fill out the Connection Parameters:
| Connection Parameter | Description |
|---|
CLIENT_IDENTIFIER | A unique identifier for the client's environment. |
INGESTION_API_NAME | The specific name for the ingestion API being used. |
CLIENT_ID | The client ID for Salesforce CDP authentication. |
USER_NAME | The username associated with the Salesforce CDP account. |
LOGIN_URL | The login URL for Salesforce CDP (varies by environment). |
PRIVATE_KEY | The private key for secure authentication access. |
- MetaRouter provides all of the event mappings that Salesforce CDP integrations typically require. You may add custom events, parameters, or mappings in accordance with Salesforce CDP's API documentation.
- In the Pipelines tab, add your Salesforce CDP integration.
- Select the correct integration revision.
- Click Add Integration to finalize deployment.
Global mappings will be applied to all events. If your parameter names do not match the Expected Inputs provided, you will need to overwrite the Inputs provided with your own.
| Output Key | Description | Expected Input |
|---|
anonymous_id | String: Unique identifier for anonymous users. | anonymousId |
created | DateTime: Timestamp of the event creation. | timestamp |
| Output Key | Description | Expected Input |
|---|
user_agent | String: User agent string of the device. | context.userAgent |
user_id | String: Unique identifier for the user. | userId |
email | String: User's email address. | traits.email |
pinterest_id | String: Pinterest identifier. | context.providers.pinterest.derived_epik |
tradedesk_id | String: Trade Desk identifier. | context.providers.theTradeDesk.ttd_id |
ip_address | String: IP address of the user. | context.ip |
| Output Key | Description | Expected Input |
|---|
path | String: URL path of the page visited. | context.page.path |
title | String: Title of the page visited. | context.page.title |
url | String: Full URL of the page visited. | context.page.url |
referrer | String: Referring URL of the page visited. | context.page.referrer |
event_id | String: Unique identifier for the event. | messageId |
| Output Key | Description | Expected Input |
|---|
list_id | String: Identifier for the product list. | properties.list_id |
category | String: Category of the product list. | properties.category |
event_id | String: Unique identifier for the event. | messageId |
| Output Key | Description | Expected Input |
|---|
product_id | String: Identifier for the viewed product. | properties.product_id |
sku | String: Stock keeping unit for the viewed product. | properties.sku |
category | String: Category of the viewed product. | properties.category |
name | String: Name of the viewed product. | properties.name |
brand | String: Brand of the viewed product. | properties.brand |
variant | String: Variant of the viewed product. | properties.variant |
price | Number: Price of the viewed product. | properties.price |
coupon | String: Coupon applied to the viewed product. | properties.coupon |
position | Number: Position of the product in the list. | properties.position |
url | String: URL of the viewed product. | properties.url |
image_url | String: URL of the product image. | properties.image_url |
event_id | String: Unique identifier for the viewed event. | messageId |
| Output Key | Description | Expected Input |
|---|
cart_id | String: Identifier for the cart. | properties.cart_id |
product_id | String: Identifier for the product. | properties.product_id |
sku | String: Stock keeping unit for the product. | properties.sku |
category | String: Category of the product. | properties.category |
name | String: Name of the product. | properties.name |
brand | String: Brand of the product. | properties.brand |
variant | String: Variant of the product. | properties.variant |
price | Number: Price of the product. | properties.price |
quantity | Number: Quantity of the product added. | properties.quantity |
coupon | String: Coupon applied to the product. | properties.coupon |
position | Number: Position of the product in the list. | properties.position |
url | String: URL of the product. | properties.url |
image_url | String: URL of the product image. | properties.image_url |
event_id | String: Unique identifier for the event. | messageId |
| Output Key | Description | Expected Input |
|---|
cart_id | String: Identifier for the cart. | properties.cart_id |
product_id | String: Concatenated product IDs. | Expression – joins product_id across properties.products |
sku | String: Concatenated SKUs. | Expression – joins sku across properties.products |
category | String: Concatenated categories. | Expression – joins category across properties.products |
name | String: Concatenated product names. | Expression – joins name across properties.products |
brand | String: Concatenated brands. | Expression – joins brand across properties.products |
variant | String: Concatenated variants. | Expression – joins variant across properties.products |
price | String: Concatenated prices. | Expression – joins price across properties.products |
quantity | String: Concatenated quantities. | Expression – joins quantity across properties.products |
coupon | String: Concatenated coupons. | Expression – joins coupon across properties.products |
position | String: Concatenated positions. | Expression – joins position across properties.products |
url | String: Concatenated URLs. | Expression – joins url across properties.products |
image_url | String: Concatenated image URLs. | Expression – joins image_url across properties.products |
event_id | String: Unique identifier for the event. | messageId |
| Output Key | Description | Expected Input |
|---|
checkout_id | String: Identifier for the checkout session. | properties.checkout_id |
total | Number: Total amount of the order. | properties.total |
order_id | String: Identifier for the order. | properties.order_id |
revenue | Number: Revenue generated from the order. | properties.revenue |
shipping | Number: Shipping cost for the order. | properties.shipping |
tax | Number: Tax amount for the order. | properties.tax |
coupon | String: Coupon code applied to the order. | properties.coupon |
event_id | String: Unique identifier for the event. | messageId |
These identifiers must be mapped to Salesforce CDP in order for successful user matching to occur. Without these IDs, any events sent to Salesforce CDP may not be accurately reflected in reporting. For your convenience, recommended IDs are mapped as Global parameters to ensure they are added to every event.
| Attribute | Example | Sync Injector Required? |
|---|
anonymous_id | a7f5d3b1-9c8e-4e1d-842b-4f9d3a2f1b45 | No |
Coordinate with your Salesforce representative, or use the Salesforce CDP (Data Cloud) dashboard, to confirm that events are being received and processed correctly on their backend.