Experience Management Integration Guide


The Salesforce Data Management Platform (DMP) supports the use of audience data within experience management systems (EMS) for content and offer personalization. Segments used for marketing and media, or other segments, can be utilized to personalize content and offers for a user derived from that user’s demographics, previous behaviors, and various client-created models.

The Salesforce DMP, using real-time segments and data on-page, provides data to the EMS. Salesforce DMP integrates with EMSes in this fashion to:

  • Minimize segment delivery delays to support true real-time content and offer personalization
  • Leverage data to target a user on their first page view for a client
  • Receive feedback on what works and what doesn’t from the EMS to provide analytics for content optimization

Salesforce DMP deploys via an asynchronous implementation, instead of synchronously. Together with pre-set default content, asynchronous deployment helps minimize any disruptions of the user experience.

This article describes how data makes its way to the client page, and how an EMS would take that data and use it. This article also covers how to provide data back to Salesforce DMP for content personalization, performance and analytics.

On-Page Segment Delivery

The Salesforce DMP personalizes content using both standard processed segments and real-time segments. In addition to on-page data processing, a request is sent to Salesforce DMP servers. That request contains the segments a user belongs to for the particular client they are using.

Together, these segments, along with the Krux user ID, are stored in the browser’s local storage. They are made available in two JavaScript variables for an EMS to access:

  • user, which stores the user’s Salesforce DMP ID
  • [partner]segments, which stores the segments the user belongs in for the client. The segments are unique IDs instead of normal names. Normal readable names can be retrieved via an API, outlined below.

Once Salesforce DMP is called via our on-page Control Tag, those two variables will be available for the EMS to access. The EMS should use segments for delivering personalized content and utilizing the user ID for returning data to Salesforce DMP.

Salesforce DMP Segment Data API

With client authorization, Salesforce DMP can provide an EMS with API access to give the EMS the ability to map segment IDs to segment names. Because segment names do not change frequently, the API should only need to be accessed once a day. These segment names can then be used in the EMS interface to provide the client with efficient utilization of segments fromSalesforce DMP.

Salesforce DMP Feedback Pixel

Salesforce DMP will also provide the EMS with a pixel endpoint to fire after the personalized content is delivered. Firing the pixel endpoint provides Salesforce DMP with feedback on what personalized content was delivered. Salesforce DMP then returns billing and analytics on segment performance against content at a segment level and sends that back to the client.

Multiple pixels can be fired on a single page view; one for each personalized element. Salesforce DMP recommends firing this pixel on the next page view so that clicks (or non-clicks) on offers from the previous page view can be taken into account.

The pixel endpoint is as follows:

http(s)://beacon.krxd.net/ad_impression.gif?confid=[CONFID]&ksegs=[SEGMENT_ID(s) comma separated]&kxtype=billing&campaign_id=[CAMPAIGN_ID]&campaign_name=[CAMPAIGN_NAME]&ad_id=[AD_ID]&ad_name=[AD_NAME]&_kuid=[Krux.user]
  • CONFID will be a unique ID, to be provided by Salesforce DMP
  • SEGMENT_USED should be the segment ID(s) from Salesforce DMP that were explicitly used by the decision engine in determining what content was surfaced, comma separated
  • CAMPAIGN_ID can be any unique ID you choose (optional)
  • CAMPAIGN_NAME should be the name of the site, please make sure its URL encoded (optional)
  • AD_ID can be any unique ID you choose (optional)
  • AD_NAME should be the name of the personalized offer, please make sure it's URL encoded (optional)
  • KUID should be the user ID from Krux.user (optional)


Have more questions? Submit a request


Article is closed for comments.