Salesforce CDP

What Is Salesforce CDP?

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


Capabilities

  • 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.

Considerations

  • 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.

Limitations

  • 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.

Starter Kit Setup Guide

1. Gather Credentials

  • 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.

2. Add a Salesforce CDP Integration

  • From the integration library, add a Salesforce CDP integration. Then, fill out the Connection Parameters:
Connection ParameterDescription
CLIENT_IDENTIFIERA unique identifier for the client's environment.
INGESTION_API_NAMEThe specific name for the ingestion API being used.
CLIENT_IDThe client ID for Salesforce CDP authentication.
USER_NAMEThe username associated with the Salesforce CDP account.
LOGIN_URLThe login URL for Salesforce CDP (varies by environment).
PRIVATE_KEYThe private key for secure authentication access.

3. Configure Event Mapping

  • 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.

4. Deploy to Pipeline

  • In the Pipelines tab, add your Salesforce CDP integration.
  • Select the correct integration revision.
  • Click Add Integration to finalize deployment.

Event Mappings

Global

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 KeyDescriptionExpected Input
anonymous_idString: Unique identifier for anonymous users.anonymousId
createdDateTime: Timestamp of the event creation.timestamp

Event Specific

Identify

Output KeyDescriptionExpected Input
user_agentString: User agent string of the device.context.userAgent
user_idString: Unique identifier for the user.userId
emailString: User's email address.traits.email
pinterest_idString: Pinterest identifier.context.providers.pinterest.derived_epik
tradedesk_idString: Trade Desk identifier.context.providers.theTradeDesk.ttd_id
ip_addressString: IP address of the user.context.ip

Page

Output KeyDescriptionExpected Input
pathString: URL path of the page visited.context.page.path
titleString: Title of the page visited.context.page.title
urlString: Full URL of the page visited.context.page.url
referrerString: Referring URL of the page visited.context.page.referrer
event_idString: Unique identifier for the event.messageId

Product List Viewed

Output KeyDescriptionExpected Input
list_idString: Identifier for the product list.properties.list_id
categoryString: Category of the product list.properties.category
event_idString: Unique identifier for the event.messageId

Product Viewed

Output KeyDescriptionExpected Input
product_idString: Identifier for the viewed product.properties.product_id
skuString: Stock keeping unit for the viewed product.properties.sku
categoryString: Category of the viewed product.properties.category
nameString: Name of the viewed product.properties.name
brandString: Brand of the viewed product.properties.brand
variantString: Variant of the viewed product.properties.variant
priceNumber: Price of the viewed product.properties.price
couponString: Coupon applied to the viewed product.properties.coupon
positionNumber: Position of the product in the list.properties.position
urlString: URL of the viewed product.properties.url
image_urlString: URL of the product image.properties.image_url
event_idString: Unique identifier for the viewed event.messageId

Product Added

Output KeyDescriptionExpected Input
cart_idString: Identifier for the cart.properties.cart_id
product_idString: Identifier for the product.properties.product_id
skuString: Stock keeping unit for the product.properties.sku
categoryString: Category of the product.properties.category
nameString: Name of the product.properties.name
brandString: Brand of the product.properties.brand
variantString: Variant of the product.properties.variant
priceNumber: Price of the product.properties.price
quantityNumber: Quantity of the product added.properties.quantity
couponString: Coupon applied to the product.properties.coupon
positionNumber: Position of the product in the list.properties.position
urlString: URL of the product.properties.url
image_urlString: URL of the product image.properties.image_url
event_idString: Unique identifier for the event.messageId

Cart Viewed

Output KeyDescriptionExpected Input
cart_idString: Identifier for the cart.properties.cart_id
product_idString: Concatenated product IDs.Expression – joins product_id across properties.products
skuString: Concatenated SKUs.Expression – joins sku across properties.products
categoryString: Concatenated categories.Expression – joins category across properties.products
nameString: Concatenated product names.Expression – joins name across properties.products
brandString: Concatenated brands.Expression – joins brand across properties.products
variantString: Concatenated variants.Expression – joins variant across properties.products
priceString: Concatenated prices.Expression – joins price across properties.products
quantityString: Concatenated quantities.Expression – joins quantity across properties.products
couponString: Concatenated coupons.Expression – joins coupon across properties.products
positionString: Concatenated positions.Expression – joins position across properties.products
urlString: Concatenated URLs.Expression – joins url across properties.products
image_urlString: Concatenated image URLs.Expression – joins image_url across properties.products
event_idString: Unique identifier for the event.messageId

Order Completed

Output KeyDescriptionExpected Input
checkout_idString: Identifier for the checkout session.properties.checkout_id
totalNumber: Total amount of the order.properties.total
order_idString: Identifier for the order.properties.order_id
revenueNumber: Revenue generated from the order.properties.revenue
shippingNumber: Shipping cost for the order.properties.shipping
taxNumber: Tax amount for the order.properties.tax
couponString: Coupon code applied to the order.properties.coupon
event_idString: Unique identifier for the event.messageId

Required & Recommended Identifiers

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.

AttributeExampleSync Injector Required?
anonymous_ida7f5d3b1-9c8e-4e1d-842b-4f9d3a2f1b45No

Integration Validation

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.