From ebb071bfd9a1ee731f2609e29ceead9c7bb2f390 Mon Sep 17 00:00:00 2001 From: janko Date: Wed, 11 Sep 2019 13:19:57 +0200 Subject: [PATCH 01/11] Adding basic LiveIntentId info. --- dev-docs/modules/userId.md | 48 +++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index e0b5e6f7bc..3f96a7681d 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -25,6 +25,7 @@ The User ID module supports multiple ways of establishing pseudonymous IDs for u * **ID5 ID** - a neutral identifier for digital advertising that can be used by publishers, brands and ad tech platforms (SSPs, DSPs, DMPs, Data Providers, etc.) to eliminate the need for cookie matching. * **Criteo RTUS ID** – fetches a user id by reaching out to Criteo rtus endpoint for each bidder configured. The result is stored in the user's browser for 1 hour and is passed to bidder adapters to pass it through to SSPs and DSPs that support the ID scheme. * **Identity Link** – provided by LiveRamp, this module calls out to the ATS (Authenticated Traffic Solution) library or a URL to obtain the user’s IdentityLink envelope. +* **LiveIntent ID** – fetches a user ID based on identifiers that are present on the page. It calls the LiveIntent Identity Exchange endpoint which resolves the inbound identifiers to a stable ID. ## How It Works @@ -61,7 +62,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: `"unifiedId"`, `"pubCommonId"`, `"digitrust"`, `"id5id"` or `identityLink` | `"unifiedId"` | +| name | Required | String | May be: `"unifiedId"`, `"pubCommonId"`, `"digitrust"`, `"id5id"`, `identityLink` or `liveIntentId` | `"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"` | @@ -445,6 +446,51 @@ pbjs.setConfig({ {% endfor %} +## LiveIntent ID + +LiveIntent ID solution provides a stable user identifier based on first and third party identifiers. + +### LiveIntent ID configuration + +|Param under usersync.userIds[]|Scope|Type|Description|Example| +|---|:---:|:---:|---:|---:| +|`name`|Required | `String`|The name of this module|`'liveIntentId'`| +|`params`| Required|`Object`|Container of all module params|| +|`params.publisherId`| Required|`String`|The unique identifier of the publisher in question|`'12432415'`| +|`params.identifiersToResolve`|Optional|`Array[String]`|Additional identifier that can be chosen to be sent along with the id resolution request|`['my-id']`| +|`params.url`| Optional|`String`|In case a publisher is running Prebid.js and can call LiveIntent's Identity Exchange endpoint withing it's own domain, this parameter can be used to change the default endpoint URL|`'//idx.my-domain.com'`| + +### LiveIntent ID example + +The minimal setup would be as follows: +``` +pbjs.setConfig({ + usersync: { + userIds: [{ + name: "liveIntentId", + params: { + publisherId: "9896876" + } + }] + } +}) +``` + +If there are additional identifiers that LiveIntent could resolve, those can be added under the `identifiersToResolve` array in config params. +``` +pbjs.setConfig({ + usersync: { + userIds: [{ + name: "liveIntentId", + params: { + publisherId: "9896876", + identifiersToResolve: ["my-own-cookie"] + } + }] + } +}) +``` + ## Bidder Adapter Implementation ### Prebid.js Adapters From 498c9acfa9716a50dfa2933d3f32c6ea39987229 Mon Sep 17 00:00:00 2001 From: janko Date: Wed, 11 Sep 2019 13:37:06 +0200 Subject: [PATCH 02/11] Changed some wording. --- 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 3f96a7681d..a1bfe4ecaa 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -457,7 +457,7 @@ LiveIntent ID solution provides a stable user identifier based on first and thir |`name`|Required | `String`|The name of this module|`'liveIntentId'`| |`params`| Required|`Object`|Container of all module params|| |`params.publisherId`| Required|`String`|The unique identifier of the publisher in question|`'12432415'`| -|`params.identifiersToResolve`|Optional|`Array[String]`|Additional identifier that can be chosen to be sent along with the id resolution request|`['my-id']`| +|`params.identifiersToResolve`|Optional|`Array[String]`|Additional identifiers that can be sent along with the id resolution request|`['my-id']`| |`params.url`| Optional|`String`|In case a publisher is running Prebid.js and can call LiveIntent's Identity Exchange endpoint withing it's own domain, this parameter can be used to change the default endpoint URL|`'//idx.my-domain.com'`| ### LiveIntent ID example From ae5b8865af8e898e6a9fbda350edc8fccec2c7c0 Mon Sep 17 00:00:00 2001 From: janko Date: Thu, 12 Sep 2019 11:28:47 +0200 Subject: [PATCH 03/11] Added the partner as a param --- dev-docs/modules/userId.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index a1bfe4ecaa..231d94a696 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -457,6 +457,7 @@ LiveIntent ID solution provides a stable user identifier based on first and thir |`name`|Required | `String`|The name of this module|`'liveIntentId'`| |`params`| Required|`Object`|Container of all module params|| |`params.publisherId`| Required|`String`|The unique identifier of the publisher in question|`'12432415'`| +|`params.partner`| Optional|`String`|The name of the partner whose data will be returned in the response |`'prebid'`| |`params.identifiersToResolve`|Optional|`Array[String]`|Additional identifiers that can be sent along with the id resolution request|`['my-id']`| |`params.url`| Optional|`String`|In case a publisher is running Prebid.js and can call LiveIntent's Identity Exchange endpoint withing it's own domain, this parameter can be used to change the default endpoint URL|`'//idx.my-domain.com'`| From e2a703ff225e0ef224bad75cc9e991436cfff106 Mon Sep 17 00:00:00 2001 From: janko Date: Thu, 12 Sep 2019 11:31:42 +0200 Subject: [PATCH 04/11] Added the partner config example. --- dev-docs/modules/userId.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index 231d94a696..7b3ed9f9b9 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -492,6 +492,22 @@ pbjs.setConfig({ }) ``` +If there's a partner integration with LiveIntent, and partner specific data is to be returned and passed along in bid requests, the partner name can be set as `partner` in config params. +``` +pbjs.setConfig({ + usersync: { + userIds: [{ + name: "liveIntentId", + params: { + partner: "rubicon", + publisherId: "9896876", + identifiersToResolve: ["my-own-cookie"] + } + }] + } +}) +``` + ## Bidder Adapter Implementation ### Prebid.js Adapters From 4b30e2b843465656c00bb106454fbd1adce2f911 Mon Sep 17 00:00:00 2001 From: Karsten Date: Mon, 16 Sep 2019 17:33:44 +0200 Subject: [PATCH 05/11] Update userId.md changed the paragraph about the LiveIntent ID solution and added an email address to reach out to to get your fpc universe setup --- dev-docs/modules/userId.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index 7b3ed9f9b9..d7503a4124 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -448,7 +448,11 @@ pbjs.setConfig({ ## LiveIntent ID -LiveIntent ID solution provides a stable user identifier based on first and third party identifiers. +LiveIntent ID solution provides a user identifier based on our graph which is driven by publisher email business (e.g. updates, newsletters, and subscriptions). + +### Registering your own first party cookie space that is not PubCommonId + +In order for you to take advantage of the user id resolution in cookie challenged environments like iOS, you need to sync your first party cookie universe with us. For urther information please reach out to peoplebased@liveintent.com. ### LiveIntent ID configuration From 4e5a652585fd674cac6a2a2a99e8b8840d733785 Mon Sep 17 00:00:00 2001 From: bretg Date: Fri, 20 Sep 2019 14:51:59 -0400 Subject: [PATCH 06/11] misc updates fixed typo, added to implementation section --- dev-docs/modules/userId.md | 45 +++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index 0e4c6e1873..846b992f15 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -62,7 +62,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: `"unifiedId"`, `"pubCommonId"`, `"digitrust"`, `"id5id"`, `identityLink` or `liveIntentId` | `"unifiedId"` | +| name | Required | String | May be: `"criteortus"`, `"digitrust"`, `"id5id"`, `identityLink`, `liveIntentId`, `"pubCommonId"`, or `"unifiedId"` | `"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"` | @@ -450,9 +450,9 @@ pbjs.setConfig({ LiveIntent ID solution provides a user identifier based on our graph which is driven by publisher email business (e.g. updates, newsletters, and subscriptions). -### Registering your own first party cookie space that is not PubCommonId +### Registering your own first party cookie space -In order for you to take advantage of the user id resolution in cookie challenged environments like iOS, you need to sync your first party cookie universe with us. For urther information please reach out to peoplebased@liveintent.com. +In order for you to take advantage of the user id resolution in cookie-challenged environments like iOS, you need to sync your first party cookie universe with us. For further information please reach out to peoplebased@liveintent.com. ### LiveIntent ID configuration @@ -521,10 +521,13 @@ Bidders that want to support the User ID module in Prebid.js, need to update the {: .table .table-bordered .table-striped } | ID System Name | ID System Host | Prebid.js Attr | Example Value | | --- | --- | --- | --- | --- | --- | -| PubCommon ID | n/a | bidRequest.userId.pubcid | `"1111"` | -| Unified ID | Trade Desk | bidRequest.userId.tdid | `"2222"` | +| CriteoRTUS | Criteo | bidRequest.userId.criteortus | `"1111"` | | DigiTrust | IAB | bidRequest.userId.digitrustid | `{data: {id: "DTID", keyv: 4, privacy: {optout: false}, producer: "ABC", version: 2}` | -| ID5 ID | ID5 | bidRequest.userId.id5id | `"ID5-12345"` | +| ID5 ID | ID5 | bidRequest.userId.id5id | `"1111"` | +| IdentityLink | Trade Desk | bidRequest.userId.identityLinkId | `"1111"` | +| LiveIntent ID | Live Intent | bidRequest.userId.liveIntentId | `"1111"` | +| PubCommon ID | n/a | bidRequest.userId.pubcid | `"1111"` | +| Unified ID | Trade Desk | bidRequest.userId.tdid | `"1111"` | For example, the adapter code might do something like: @@ -550,21 +553,33 @@ Bidders that want to support the User ID module in Prebid Server, need to update "rtiPartner": "TDID" } }] - }, - { - "source": "pubcommon", // PubCommon ID + },{ + "source": "pubcommon", "uids": [{ "id":"11111111" }] - }, - { - "source": "id5id", // ID5 ID + },{ + "source": "id5", "uids": [{ "id": "ID5-12345" }] - } - ], - "digitrust": { // DigiTrust + },{ + "source": "identityLink", + "uids": [{ + "id": "11111111" + }] + },{ + "source": "criteortus", + "uids": [{ + "id": "11111111" + }] + },{ + "source": "liveIntent", + "uids": [{ + "id": "11111111" + }] + }], + "digitrust": { // DigiTrust is not in the eids section "id": "11111111111", "keyv": 4 } From bc2daecb3594cadadc762d60e7d01b7f75d2c696 Mon Sep 17 00:00:00 2001 From: bretg Date: Fri, 20 Sep 2019 17:07:37 -0400 Subject: [PATCH 07/11] tweaking openrtb values --- 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 846b992f15..21a72aefde 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -524,7 +524,7 @@ Bidders that want to support the User ID module in Prebid.js, need to update the | CriteoRTUS | Criteo | bidRequest.userId.criteortus | `"1111"` | | DigiTrust | IAB | bidRequest.userId.digitrustid | `{data: {id: "DTID", keyv: 4, privacy: {optout: false}, producer: "ABC", version: 2}` | | ID5 ID | ID5 | bidRequest.userId.id5id | `"1111"` | -| IdentityLink | Trade Desk | bidRequest.userId.identityLinkId | `"1111"` | +| IdentityLink | Trade Desk | bidRequest.userId.identityLink | `"1111"` | | LiveIntent ID | Live Intent | bidRequest.userId.liveIntentId | `"1111"` | | PubCommon ID | n/a | bidRequest.userId.pubcid | `"1111"` | | Unified ID | Trade Desk | bidRequest.userId.tdid | `"1111"` | @@ -559,7 +559,7 @@ Bidders that want to support the User ID module in Prebid Server, need to update "id":"11111111" }] },{ - "source": "id5", + "source": "id5-sync.com", "uids": [{ "id": "ID5-12345" }] @@ -569,7 +569,7 @@ Bidders that want to support the User ID module in Prebid Server, need to update "id": "11111111" }] },{ - "source": "criteortus", + "source": "criteo", "uids": [{ "id": "11111111" }] From c68963657861381b4573b2ca6918a469f9369a91 Mon Sep 17 00:00:00 2001 From: janko Date: Wed, 25 Sep 2019 23:52:24 +0200 Subject: [PATCH 08/11] Mentioning segments in the response and userId object. --- dev-docs/modules/userId.md | 48 ++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/dev-docs/modules/userId.md b/dev-docs/modules/userId.md index 21a72aefde..b3e66f636e 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -433,22 +433,27 @@ pbjs.setConfig({ }); {% endhighlight %} -## Adapters Supporting the User ID Sub-Modules +## LiveIntent ID -{% assign bidder_pages = site.pages | where: "layout", "bidder" %} +LiveIntent ID solution provides a user identifier based on our graph which is driven by publisher email business (e.g. updates, newsletters, and subscriptions). - - -{% for item in bidder_pages %} -{% if item.userIds != nil %} - -{% endif %} -{% endfor %} -
BidderIDs Supported
{{item.biddercode}}{{item.userIds}}
+It is possible, that depending on the `partner` & `publisherId` combination, the response contains segment ids which have been mapped against partner systems and their segments. For example, if LiveIntent has created a segmentId `999` which can be mapped to (`partner: test-partner`) `test-partner`'s segment, the response from LiveIntent's ID solution could look like: +``` +{ + "unifiedId": "T7JiRRvsRAmh88", + "segments": ["999"] +} +``` -## LiveIntent ID +The `request.userId.lipb` object would then look like +``` +{ + "lipbid": "T7JiRRvsRAmh88", + "segments": ["999"] +} +``` -LiveIntent ID solution provides a user identifier based on our graph which is driven by publisher email business (e.g. updates, newsletters, and subscriptions). +Therefore, the adapters can then be implemented to use the `lipibid` as the identifier, and `segments` to which that identifier is associated with. ### Registering your own first party cookie space @@ -467,7 +472,7 @@ In order for you to take advantage of the user id resolution in cookie-challenge ### LiveIntent ID example -The minimal setup would be as follows: +The minimal setup would be as follows: ``` pbjs.setConfig({ usersync: { @@ -481,7 +486,7 @@ pbjs.setConfig({ }) ``` -If there are additional identifiers that LiveIntent could resolve, those can be added under the `identifiersToResolve` array in config params. +If there are additional identifiers that LiveIntent could resolve, those can be added under the `identifiersToResolve` array in config params. ``` pbjs.setConfig({ usersync: { @@ -496,7 +501,7 @@ pbjs.setConfig({ }) ``` -If there's a partner integration with LiveIntent, and partner specific data is to be returned and passed along in bid requests, the partner name can be set as `partner` in config params. +If there's a partner integration with LiveIntent, and partner specific data is to be returned and passed along in bid requests, the partner name can be set as `partner` in config params. ``` pbjs.setConfig({ usersync: { @@ -512,6 +517,19 @@ pbjs.setConfig({ }) ``` +## Adapters Supporting the User ID Sub-Modules + +{% assign bidder_pages = site.pages | where: "layout", "bidder" %} + + + +{% for item in bidder_pages %} +{% if item.userIds != nil %} + +{% endif %} +{% endfor %} +
BidderIDs Supported
{{item.biddercode}}{{item.userIds}}
+ ## Bidder Adapter Implementation ### Prebid.js Adapters From 679b148eb2c7cee7b16ff74a43faff31e52f4d68 Mon Sep 17 00:00:00 2001 From: bretg Date: Mon, 30 Sep 2019 15:05:51 -0400 Subject: [PATCH 09/11] Update userId.md --- 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 b3e66f636e..d51cfc934c 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -542,7 +542,7 @@ Bidders that want to support the User ID module in Prebid.js, need to update the | CriteoRTUS | Criteo | bidRequest.userId.criteortus | `"1111"` | | DigiTrust | IAB | bidRequest.userId.digitrustid | `{data: {id: "DTID", keyv: 4, privacy: {optout: false}, producer: "ABC", version: 2}` | | ID5 ID | ID5 | bidRequest.userId.id5id | `"1111"` | -| IdentityLink | Trade Desk | bidRequest.userId.identityLink | `"1111"` | +| IdentityLink | Trade Desk | bidRequest.userId.idl_env | `"1111"` | | LiveIntent ID | Live Intent | bidRequest.userId.liveIntentId | `"1111"` | | PubCommon ID | n/a | bidRequest.userId.pubcid | `"1111"` | | Unified ID | Trade Desk | bidRequest.userId.tdid | `"1111"` | From 29806dd6b736d4cde0b2c250d6657b2937926245 Mon Sep 17 00:00:00 2001 From: janko Date: Tue, 1 Oct 2019 11:38:29 +0200 Subject: [PATCH 10/11] Not mentioning ios --- 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 b3e66f636e..1bd1744705 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -457,7 +457,7 @@ Therefore, the adapters can then be implemented to use the `lipibid` as the iden ### Registering your own first party cookie space -In order for you to take advantage of the user id resolution in cookie-challenged environments like iOS, you need to sync your first party cookie universe with us. For further information please reach out to peoplebased@liveintent.com. +In order for you to take advantage of the user id resolution in cookie-challenged environments, you need to sync your first party cookie universe with us. For further information please reach out to peoplebased@liveintent.com. ### LiveIntent ID configuration From 7d780d085292e042abb69d2a7218241f6f2361de Mon Sep 17 00:00:00 2001 From: janko Date: Tue, 15 Oct 2019 03:46:21 +0200 Subject: [PATCH 11/11] Fixing the docs for lipb.lipbid --- 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 65be9f0065..9ba1869cdf 100644 --- a/dev-docs/modules/userId.md +++ b/dev-docs/modules/userId.md @@ -584,7 +584,7 @@ Bidders that want to support the User ID module in Prebid.js, need to update the | DigiTrust | IAB | bidRequest.userId.digitrustid | `{data: {id: "DTID", keyv: 4, privacy: {optout: false}, producer: "ABC", version: 2}` | | ID5 ID | ID5 | bidRequest.userId.id5id | `"1111"` | | IdentityLink | Trade Desk | bidRequest.userId.idl_env | `"1111"` | -| LiveIntent ID | Live Intent | bidRequest.userId.liveIntentId | `"1111"` | +| LiveIntent ID | Live Intent | bidRequest.userId.lipb.lipbid | `"1111"` | | PubCommon ID | n/a | bidRequest.userId.pubcid | `"1111"` | | Unified ID | Trade Desk | bidRequest.userId.tdid | `"1111"` |