Data Management Platform (DMP) Integration

Integration Steps

  1. Your Account Manager initiates the integration project in collaboration with our Professional Services team and an audience provider is added for your Pulse account.
  2. After identifying which segments to target in Pulse, you configure the audience segmentations and audience segments:
    1. by using the Audience Management API,
    2. or by providing us with the Segment Identification Document.
  3. You set up the async pixel request to Pulse backend. This step can be executed by your developer team or the DMP integrations team. It consists of a request sent towards Pulse to assign users to their segments. See Async Pixel Protocol below.
  4. If using session store, you add Additional Code to all platforms.
  5. INVIDI and you test the integration.

Segment Identification Document

The segment identification document is a CSV file identifying each unique targeting segment, allowing Pulse to match the information coming from the audience data provider with the targeting segments displayed in Pulse.

CSV Row Format

CSV row Description Type Example
Index Value between 0-199 identifying the segmentation key (internal to Pulse). Integer 0
Value Value between 1-15 identifying the value (internal to Pulse). Integer 1
Category Segment category. String Demographics
Subcategory Segment subcategory. String Professionals
Key Label Segmentation key label displayed in the Pulse UI. String Gender
Value Label Segmentation value label displayed in the Pulse UI. String Male
Parameter Name Segmentation key sent in the async pixel request, used to parse incoming requests. String xyz
Parameter Value Segmentation value sent in the async pixel request, used to parse incoming requests. String 123

Example

  1. No segment categories or subcategories, only flat keywords. You can associate a user with 1 or more keywords.

    "0","1","DMP name","DMP name","keyword","travel","xyz","123"

    "1","1","DMP name","DMP name","keyword","sports","xyz","456"

    "2","1","DMP name","DMP name","keyword","automotive","xyz","789"

    "3","1","DMP name","DMP name","keyword","banking/finance","xyz","012"

    "4","1","DMP name","DMP name","keyword","beauty","xyz","345"

  2. Segment users using groups and subgroups. A user can only belong to one subgroup at a time. For example, gender can only be female or male, not both.

    "0","1","demographics","demographics","age","20-34","a","1"

    "0","2","demographics","demographics","age","35-49","a","2"

    "0","3","demographics","demographics","age","50-54","a","3"

    "1","1","demographics","demographics","gender","female","g","1"

    "1","2","demographics","demographics","gender","male","g","2"

Async Pixel Protocol

You populate user segments in session store or in a local cookie by using asynchronous HTTP requests to Pulse backend.
  • If using session store:
    • Maximum one async HTTP request per day and per unique user.
    • Minimum one update every 13 days per unique user.
    Note: Inactive users are automatically purged after 13 days. The data is lost from the session store, making the users unavailable for audience management. Campaigns using audience targeting do not deliver to purged users.
  • If using cookies: Maximum one async HTTP request per day and per unique user.

Adding Data

Segments are transferred individually or in group according to the following protocol:

{Base URL}?{dataproviderid}={URL encoded comma separated string of parameter names and values}
//using cookie
http://subdomain.videoplaza.tv/proxy/pixel/v2?dmpParam=a%3D1%2Cg%3D2 //a=1,g=2 

//using session store. You also need to send the user ID as a parameter (pid) in the request.
http://subdomain.videoplaza.tv/proxy/pixel/v2?dmpParam=a%3D1%2Cg%3D2&pid=2467a22f-9d74-406a-ab62-54fae1414af9

Updating Data

Segments are updated individually or in group according to the following protocol:

{Base URL}?{dataproviderid}={URL encoded comma separated string of parameter names and values}

Each user needs to be updated every 13 days at least, by using the described protocol to resend the segments.

//using cookie
http://subdomain.videoplaza.tv/proxy/pixel/v2?dmpParam=a%3D3%2Cg%3D4 //a=3,g=4

//using session store. You also need to send the user ID as a parameter (pid) in the request.
http://subdomain.videoplaza.tv/proxy/pixel/v2?dmpParam=a%3D3%2Cg%3D4&pid=2467a22f-9d74-406a-ab62-54fae1414af9

Removing Data

Remove all Pulse Audience Management cookies or session store data for a user by calling:

{Base URL}?{dataproviderid}=DELETE
//using cookie
http://subdomain.videoplaza.tv/proxy/pixel/v2?dmpParam=DELETE

//using session store. You also need to send the user ID as a param (pid) in the request.
http://subdomain.videoplaza.tv/proxy/pixel/v2?dmpParam=DELETE&pid=2467a22f-9d74-406a-ab62-54fae1414af9

Additional Code (if Using Session Store)

If session store is enabled, the PID (user persistent ID) parameter can be sent with every ad request coming from the player.

Anonymous users

  • If a user is anonymous (does not authenticate and has no unique ID), do not set the PID parameter. Pulse backend dynamically creates a random ID for this user and stores it in a cookie.
  • If a user is anonymous and uses a native app that does not allow third-party cookies, set the PID to a unique device number (for example, Device ID).

Authenticated users

  • If a user is authenticated, use the user Authentication ID as the PID parameter.

Setting the PID Parameter in Different Platforms

VAST and VMAP

See VAST and VMAP for more information.

//in VAST and VMAP, an extra parameter (pid) needs to be sent in the HTTP request
 http://subdomain.videoplaza.tv/proxy/distributor/v2?rt=vast_2.0&tt=p&pid=2467a22f-9d74-406a-ab62-54fae1414af9
http://subdomain.videoplaza.tv/proxy/distributor/v2?rt=vmap_1.0&tt=p&pid=2467a22f-9d74-406a-ab62-54fae1414af9

HTML5

See Pulse HTML5 SDK for more information.

setPulseHost(pulseHost, deviceContainer, persistentId, ignoreSecure, disableFlash);

iOS

See Pulse iOS SDK for more information.

(void)setPulseHost:(NSString *)host
   deviceContainer:(NSString *)deviceContainer
      persistentId:(NSString *)persistentId;

Android

See Pulse Android SDK for more information.

setPulseHost(host, deviceContainer, persistentId)

Also see Pulse SDKs Tutorial for examples on how to set the persistent identifier in Pulse SDKs.