Digital Measurement Persistent Identifiers
From Engineering Client Portal
Persistent identifiers like Hashed email address (HEM) or/and Unified Identifier 2 (UID2) can be passed for the purpose of enhancing Digital Content and Ad Ratings products through the various integration solution we have like Nielsen Digital SDKs, Cloud API, Server-to-Server, DAR pixel tags or DAR.js Javascript tags.
Currently persistent identifiers can be passed in the following formats:
Hashed Email(HEM)
Please use the parameter that matches your hashing algorithm. For example, if you are using sha256 to encode the email address, then use the parameter name hem_sha256.
Name | Description | Available Tag Parameter |
---|---|---|
Hashed Email | User’s email address that has been run through a hashing algorithm (e.g. SHA256, MD5, SHA1) to create a unique 32-character hexadecimal string. | hem_sha256 (preferred) hem_md5 hem_sha1 |
Example
hem_sha256=e46f3f2c8c0e1d509aeb04d2fd78f0481c8520cb6769c258a50ddb98b073dabc
Unified ID
Name | Description | Available Tag Parameter |
---|---|---|
Unified ID 2.0 | An identifier based on a user’s verifiable PII (e.g. hashed email). UID2.0 was initially created by The Trade Desk (TTD) and is now managed by Prebid. | uid2 |
Unified ID 2.0 Token | Encrypted Unified ID 2.0 | uid2_token |
Example
uid2=MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=
uid2_token=AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8QlDSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeKQI1mp015jsNnpX5/
xGgXldcgVz+gFnyh3T8/3agMwRmyrhCxG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&
DAR Tag Integration
Web Browser DAR tag example
https://secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&am=3&at=view&rt=banner&st=image&ca=nlsn12452&cr=crtve&pc=<creativeid>_plc0001&ce=<siteid>&hem_sha256=e46f3f2c8c0e1d509aeb04d2fd78f0481c8520cb6769c258a50ddb98b073dabc&r=<timestamp>
Mobile-App DAR Tag Extension example
https://secure-gl.imrworldwide.com/cgi-bin/m?ci=nlsnci535&am=3&at=view&rt=banner&st=image&ca=nlsn12452&cr=crtve&pc=<creativeid>_plc0001&ce=<siteid>&c7=osgrp,IOS&c8=devgrp,PHN&c9=devid,XXXX-XX-XXXXX-XXXX &c10=plt,MBL&c12=apv,<appVersion>&c13=asid,NIELSEN-PROVIDEDID&c14=osver,7.0.4&hem_sha256=e46f3f2c8c0e1d509aeb04d2fd78f0481c8520cb6769c258a50ddb98b073dabc&uoo=0&r=<timestamp>
SDK Integration
In case of mobile or browser SDK integrations, the 1st party identifiers can be passed in the SDK initialization call. For example:
Android AppSDK Integration
Initialization of App SDK object through a JSON object
JSONObject config = null;
try
{
// Prepare AppSdk configuration object (JSONObject)
JSONObject appSdkConfig = new JSONObject()
.put("appid", "PXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")
.put("sfcode", "dcr")
.put("nol_devDebug", "INFO") // only for debug builds
.put("custom_key1", "custom_value1")
.put("custom_key2", "custom_value2")
.put("uid2", "MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=")
.put("uid2_token", "AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8QlDSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeKQI1mp015jsNnpX5/xGgXldcgVz+gFnyh3T8/3agMwRmyrhCxG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA==")
.put("hem_sha256", "e46f3f2c8c0e1d509aeb04d2fd78f0481c8520cb6769c258a50ddb98b073dabc")
.put("hem_sha1", "")
.put("hem_md5", "");
// Pass appSdkConfig to the AppSdk constructor
mAppSdk = new AppSdk(appContext, appSdkConfig, appSdkListener);
}
catch (JSONException e)
{
Log.e(TAG, "Couldn’t prepare JSONObject for appSdkConfig", e);
}
Here, appContext
is the App context object and appSdkConfig
is JSON object for holding the parameters (appid
, sfcode
) the App passes to the Nielsen App SDK via a JSON string. The appid is obtained from Nielsen operational support and is unique to the app.
IOS AppSDK Integration
Example
NSDictionary* appInformation = @
{
@"sfcode": @"dcr",
@"appid": @"PXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
@"hem_MD5": @"dea036a534e3cfb72cb786d48eae0fd4",
@"hem_sha1": @"7e77fc5552938f67f5071ce99ec0cb058c2b1c7c",
@"hem_sha256": @"e46f3f2c8c0e1d509aeb04d2fd78f0481c8520cb6769c258a50ddb98b073dabc",
@"uid2": @"MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=",
@"uid2_token": @"AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8Ql
DSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeK QI1mp015jsNnpX5/xGgXldcgVz+gFnyh3T8/3agMwRmyrhC xG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA&",
@"nol_devDebug": @"INFO"
};
nlsAppApiMeter = [[NielsenAppApi alloc] initWithAppInfo:appInformation delegate:self];
Browser SDK Integration
Example SDK Initialization
var nSdkInstance = NOLBUNDLE.nlsQ("XXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX", "nlsnInstance", {nol_sdkDebug: "debug",
uid2: "MTKVpUAzwYAPnHrtfE0wlINOMzhU7UUEjjVdCdRu63k=",
uid2_token: "AgAAAAPFR0zA5ogv/yaAPiUsAdZPsfqS8QlDSGxAB+rr8yekFs3AjLYVk5qqqiyV2XHbSuwzHmxSlLeQeKQI1mp015jsNnpX5/xGgXldcgVz+gFnyh3T8/3agMwRmyrhCxG4oH2C7fc48AQk2eotE7FW0ZDEYM8fD9ZxDaxFUC/OV3OuZA==",
hem_sha256: "e46f3f2c8c0e1d509aeb04d2fd78f0481c8520cb6769c258a50ddb98b073dabc",
hem_sha1: "",
hem_md5: ""
});
Note: The debug parameter,
nol_sdkDebug
, is only used for testing and should be removed before moving to production. The output is displayed in console debuggers when enabled..
When the initialization call is made, a unique static configuration file, <apid>.js, will be downloaded based on the apid and will be cached on the user’s browser.
Once the configuration is downloaded, the SDK itself will be downloaded and initialized. All SDK modules are included in one file: “nlsSDK601.bundle.min.js”.