From de3d1ccf18d1b2561bae67fe1b89cc3ad9eef19a Mon Sep 17 00:00:00 2001 From: jdwieland8282 Date: Tue, 22 Sep 2020 12:36:31 -0600 Subject: [PATCH 1/7] Update userId.md adding documentation for the Pubprovided user id module --- dev-docs/modules/userId.md | 63 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index 05792303a3..44be0077ad 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -30,6 +30,7 @@ The User ID module supports multiple ways of establishing pseudonymous IDs for u * **Merkle Merkury ID** - Merkury enables marketers, media owners, and publishers to own, build, and control a cookie-less Private Identity Graph. Merkury uses an organization’s first-party CRM data and valuable interactions such as logins, outbound email campaigns and media reach to create and grow a universe of person-based IDs for cross-channel targeting, personalization, measurement and more. * **Parrable ID** - an encrypted pseudonymous ID that is consistent across all browsers and webviews on a device for every publisher the device visits. This module contacts Parrable to obtain the Parrable EID belonging to the specific device which can then be used by the bidder. * **PubCommon ID** – an ID is generated on the user’s browser and stored for later use on this publisher’s domain. +* **PubProvided** - A simple first party publisher provided user id, set and distributed to bid adapters. * **Quantcast ID** - an ID independent of third-party cookies for publishers with Quantcast Measure tag. * **Unified ID** – a simple cross-vendor approach – it calls out to a URL that responds with that user’s ID in one or more ID spaces (e.g. adsrvr.org). * **netID** – provides an open, standardized, EU-GDPR compliant, IAB TCF aware, cross-device enabled Advertising Identifier Framework, which can be leveraged by publishers and advertisers (and vendors supporting them) to efficiently deliver targeted advertising bought through programmatic systems. @@ -73,7 +74,7 @@ of sub-objects. The table below has the options that are common across ID system {: .table .table-bordered .table-striped } | Param under userSync.userIds[] | Scope | Type | Description | Example | | --- | --- | --- | --- | --- | -| name | Required | String | May be: `"britepoolId"`, `"criteo"`, `"id5id"`, `identityLink`, `"intentIqId"`, `"liveIntentId"`, `"lotamePanoramaId"`, `"merkleId"`, `"parrableId"`, `"quantcastId"`, `"netId"`, `"pubCommonId"`, `"unifiedId"`, `"zeotapIdPlus"` | `"unifiedId"` | +| name | Required | String | May be: `"britepoolId"`, `"criteo"`, `"id5id"`, `identityLink`, `"intentIqId"`, `"liveIntentId"`, `"lotamePanoramaId"`, `"merkleId"`, `"parrableId"`, `"quantcastId"`, `"netId"`, `"pubCommonId"`, `"pubProvidedId"`,`"unifiedId"`, `"zeotapIdPlus"` | `"unifiedId"` | | params | Based on User ID sub-module | Object | | | | storage | Optional | Object | The publisher can specify some kind of local storage in which to store the results of the call to get the user ID. This can be either cookie or HTML5 storage. This is not needed when `value` is specified or the ID system is managing its own storage | | | storage.type | Required | String | Must be either `"cookie"` or `"html5"`. This is where the results of the user ID will be stored. | `"cookie"` | @@ -745,6 +746,53 @@ pbjs.setConfig({ }); {% endhighlight %} +### PubProvided ID + +The PubProvided Id module allows publishers to set and pass a first party user id into the bid stream. This module has 3 unique chareristics: + +1. The module supports a user defined function, that generates an eids style object (publisher's can also use a static eids object and pull in their user id from local storage or cookies). +`pbjs.setConfig({ + userSync: { + userIds: [{ + name: "publisherProvided", + params: { + eidsFunction: getHashedEmail // any function that exists in the page + } + }] + } +});` + +**Output +*After consent is checked + +`{ + eids: [{ + source: "domain.com", + uids:[{ + id: "value read from cookie or local storage", + atype: 1, + ext: { + stype: "ppuid" + } + + }] + },{ + source: "3rdpartyprovided.com", + uids:[{ + id: "value read from cookie or local storage", + atype: 3, + ext: { + stype: "sha256email" + } + }] + }] +}` + +2. Allows for the setting of 2 or more uuids in the eids object, publishers may work with id providers, 3rd parties, to nest their id within the same eids object the publisher is using to set their owned UUID. The opportunity to link a 1st party uuid and a 3rd party generated UUID, presents publishers with a unique ability to address their users in a way demand sources will understand. + +3. Finally, this module allows publishers to broadcast their user id, dervied from their own in house developed tech, directly to buyers within the confines of existing compliance (CCPA & GDPR) frameworkds. + + ### Quantcast ID Quantcast ID enables publishers that use Quantcast Measure tag to uniquely identify @@ -979,7 +1027,8 @@ Bidders that want to support the User ID module in Prebid.js, need to update the | IntentIQ ID | IntentIQ | bidRequest.userId.intentiqid | `"1111"` | | Lotame Panorama ID | Lotame | bidRequest.userId.lotamePanoramaId | `"e4b96a3d9a8e8761cef5656fb05f16d53938069f1684df4b2257e276e8b89a0e"` | | Parrable ID | Parrable | bidRequest.userId.parrableId | `{"eid":"01.1594654046.cd0972d861e98ff3723a368a6efa69287a0df3f1cac9142afc2e7aed1caa8dd1b7fc0590b3baf67525f53e1228024c2805b6041206c7a23e34bb823b0659547d7d1d0dac2a11938e867f"}` | -| PubCommon ID | n/a | bidRequest.userId.pubcid | `"1111"` | +| PubCommon ID | n/a | bidRequest.userId.pubProvidedId | `"1111"` | +| PubProvided ID | n/a | bidRequest.userId.pubcid | `"1111"` | | Unified ID | Trade Desk | bidRequest.userId.tdid | `"1111"` | | netID | netID | bidRequest.userId.netId | `"fH5A3n2O8_CZZyPoJVD-eabc6ECb7jhxCicsds7qSg"` | | Shared ID | SharedId | bidRequest.userId.sharedid | `{"id":"01EAJWWNEPN3CYMM5N8M5VXY22","third":"01EAJWWNEPN3CYMM5N8M5VXY22"}` | @@ -1063,6 +1112,16 @@ Bidders that want to support the User ID module in Prebid Server, need to update "third": "01EAJWWNEPN3CYMM5N8M5VXY22" } }] + }, + { + "source": "pub.com", // Puplisher must configure their TLD+1 here + "uids": [{ + "id": "01EAJWWNEPN3CYMM5N8M5VXY22", + "atype":1 //ADCOM- Type of user agent the match is from + "ext": { + "stype": "DMP" //currently supported values (DMP,ppuid,sha256email) + } + }] }] } } From 01d58614f960cca091d7b3f5862538a9bdc99fe3 Mon Sep 17 00:00:00 2001 From: jdwieland8282 Date: Tue, 22 Sep 2020 13:18:52 -0600 Subject: [PATCH 2/7] Update userId.md changed DMP to lowercase dmp in stype supported values comment --- dev-docs/modules/userId.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index 44be0077ad..736ef5e5fa 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -1119,7 +1119,7 @@ Bidders that want to support the User ID module in Prebid Server, need to update "id": "01EAJWWNEPN3CYMM5N8M5VXY22", "atype":1 //ADCOM- Type of user agent the match is from "ext": { - "stype": "DMP" //currently supported values (DMP,ppuid,sha256email) + "stype": "DMP" //currently supported values (dmp,ppuid,sha256email) } }] }] From 6a38474846ff745bc6922dba6645aa497545ccee Mon Sep 17 00:00:00 2001 From: bretg Date: Tue, 22 Sep 2020 15:30:43 -0400 Subject: [PATCH 3/7] typos, wordsmithing --- dev-docs/modules/userId.md | 42 ++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index 736ef5e5fa..4c8a20ebca 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -748,24 +748,30 @@ pbjs.setConfig({ ### PubProvided ID -The PubProvided Id module allows publishers to set and pass a first party user id into the bid stream. This module has 3 unique chareristics: +The PubProvided Id module allows publishers to set and pass a first party user id into the bid stream. This module has 3 unique characteristics: -1. The module supports a user defined function, that generates an eids style object (publisher's can also use a static eids object and pull in their user id from local storage or cookies). -`pbjs.setConfig({ +1. The module supports a user defined function, that generates an eids-style object: + +``` +pbjs.setConfig({ userSync: { userIds: [{ name: "publisherProvided", params: { - eidsFunction: getHashedEmail // any function that exists in the page + eidsFunction: getIdsFn // any function that exists in the page } }] } -});` - -**Output -*After consent is checked +}); +``` -`{ +Or, the eids values can be passed directly into the `setConfig` call: +``` +pbjs.setConfig({ + userSync: { + userIds: [{ + name: "example.com", + params: { eids: [{ source: "domain.com", uids:[{ @@ -786,11 +792,17 @@ The PubProvided Id module allows publishers to set and pass a first party user i } }] }] -}` + } + }] + } +}); +``` + +In either case, bid adapters will receive the eid values after consent is validated -2. Allows for the setting of 2 or more uuids in the eids object, publishers may work with id providers, 3rd parties, to nest their id within the same eids object the publisher is using to set their owned UUID. The opportunity to link a 1st party uuid and a 3rd party generated UUID, presents publishers with a unique ability to address their users in a way demand sources will understand. +2. This design allows for the setting of any number of uuids in the eids object. Publishers may work with multiple ID providers and nest their own id within the same eids object. The opportunity to link a 1st party uuid and a 3rd party generated UUID presents publishers with a unique ability to address their users in a way demand sources will understand. -3. Finally, this module allows publishers to broadcast their user id, dervied from their own in house developed tech, directly to buyers within the confines of existing compliance (CCPA & GDPR) frameworkds. +3. Finally, this module allows publishers to broadcast their user id, derived from in-house tech, directly to buyers within the confines of existing compliance (CCPA & GDPR) frameworks. ### Quantcast ID @@ -1114,12 +1126,12 @@ Bidders that want to support the User ID module in Prebid Server, need to update }] }, { - "source": "pub.com", // Puplisher must configure their TLD+1 here + "source": "pub.com", // Publisher must configure their domain here "uids": [{ "id": "01EAJWWNEPN3CYMM5N8M5VXY22", - "atype":1 //ADCOM- Type of user agent the match is from + "atype":1 //ADCOM - Type of user agent the match is from "ext": { - "stype": "DMP" //currently supported values (dmp,ppuid,sha256email) + "stype": "dmp" //currently supported values (dmp,ppuid,sha256email) } }] }] From 0940ba7bb6deab05e69dd8e5323de13734f301b8 Mon Sep 17 00:00:00 2001 From: bretg Date: Tue, 22 Sep 2020 15:37:24 -0400 Subject: [PATCH 4/7] added note about stype --- dev-docs/modules/userId.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index 4c8a20ebca..fc6a1e84bd 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -748,7 +748,7 @@ pbjs.setConfig({ ### PubProvided ID -The PubProvided Id module allows publishers to set and pass a first party user id into the bid stream. This module has 3 unique characteristics: +The PubProvided Id module allows publishers to set and pass a first party user id into the bid stream. This module has several unique characteristics: 1. The module supports a user defined function, that generates an eids-style object: @@ -798,12 +798,18 @@ pbjs.setConfig({ }); ``` -In either case, bid adapters will receive the eid values after consent is validated +In either case, bid adapters will receive the eid values after consent is validated. 2. This design allows for the setting of any number of uuids in the eids object. Publishers may work with multiple ID providers and nest their own id within the same eids object. The opportunity to link a 1st party uuid and a 3rd party generated UUID presents publishers with a unique ability to address their users in a way demand sources will understand. 3. Finally, this module allows publishers to broadcast their user id, derived from in-house tech, directly to buyers within the confines of existing compliance (CCPA & GDPR) frameworks. +4. The `eids.uids.ext.stype` "source-type" extension helps downstream entities know what do with the data. Currently defined values are: + +- dmp - this uid comes from the in-page dmp named in eids.source +- ppuid - this uid comes from the publisher named in eids.source +- sha256email - this uid is based on an email hash from the entity named in eids.source + ### Quantcast ID From 6cad670b06826116a0faf2b3e0f7a01a1fef15cd Mon Sep 17 00:00:00 2001 From: jdwieland8282 Date: Tue, 22 Sep 2020 15:17:59 -0600 Subject: [PATCH 5/7] Update download.md adding support to download.md --- download.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/download.md b/download.md index 5e86ddda9f..cf10e1f2e5 100644 --- a/download.md +++ b/download.md @@ -550,6 +550,9 @@ Prebid.js is open source software that is offered for free as a convenience. Whi
+ +
+
From 572b8a7445cee153982a33278578c2ae4e0b7993 Mon Sep 17 00:00:00 2001 From: jdwieland8282 Date: Wed, 23 Sep 2020 11:59:01 -0600 Subject: [PATCH 6/7] Update userId.md --- dev-docs/modules/userId.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index 3af82ee68a..d01cc4d709 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -806,7 +806,7 @@ pbjs.setConfig({ id: "value read from cookie or local storage", atype: 3, ext: { - stype: "sha256email" + stype: "dmp" } }] }] @@ -826,7 +826,7 @@ In either case, bid adapters will receive the eid values after consent is valida - dmp - this uid comes from the in-page dmp named in eids.source - ppuid - this uid comes from the publisher named in eids.source -- sha256email - this uid is based on an email hash from the entity named in eids.source +- other - TBD ### Quantcast ID @@ -1130,7 +1130,7 @@ Bidders that want to support the User ID module in Prebid Server, need to update "id": "01EAJWWNEPN3CYMM5N8M5VXY22", "atype":1 //ADCOM - Type of user agent the match is from "ext": { - "stype": "dmp" //currently supported values (dmp,ppuid,sha256email) + "stype": "dmp" //currently supported values (dmp,ppuid,other) } }] }] From 37ce6c5a5c1164c6e4c5001017d5738128a6b1a5 Mon Sep 17 00:00:00 2001 From: jdwieland8282 Date: Fri, 25 Sep 2020 06:17:56 -0600 Subject: [PATCH 7/7] Update userId.md adding language about the userid.pubProvided value and userIdAsEids value/function --- dev-docs/modules/userId.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index d01cc4d709..cc59b8d885 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -828,6 +828,8 @@ In either case, bid adapters will receive the eid values after consent is valida - ppuid - this uid comes from the publisher named in eids.source - other - TBD +5. Bid adapters listening for "userIds.pubProvidedId" will not receive a string, please use the userIdAsEids value/function to return the userid as a string. + ### Quantcast ID