Digital Measurement Persistent Identifiers

From Engineering Client Portal

Engineering Portal breadcrumbArrow.png Digital breadcrumbArrow.png Digital Measurement Persistent Identifiers


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=tMmiiTI7IaAcPpQPFQ65uMVCWH8av9jw4cwf/F5HVRQ=

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&

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