Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add docs for SharedID #1923

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 66 additions & 1 deletion dev-docs/modules/userId.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ The User ID module supports multiple ways of establishing pseudonymous IDs for u
* **PubCommon ID** – an ID is generated on the user’s browser and stored for later use on this publisher’s domain.
* **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.
* **SharedID** – A first party id written in the publishers domain. This open UUID can be used used to efficiently sell & deliver interest based advertisements. Using this UUID requires no registration, and can be deployed and added to the bid stream with minimal effort. Adapters that support SharedID will be able to pick up the user ID and return it for additional server-side cross device tracking.

## How It Works

Expand Down Expand Up @@ -67,7 +68,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"`, `"digitrust"`, `"id5id"`, `identityLink`, `"liveIntentId"`, `"parrableId"`, `"netId"`, `"pubCommonId"`, or `"unifiedId"` | `"unifiedId"` |
| name | Required | String | May be: `"britepoolId"`, `"criteo"`, `"digitrust"`, `"id5id"`, `identityLink`, `"liveIntentId"`, `"parrableId"`, `"netId"`, `"pubCommonId"`, `"SharedID"`, or `"unifiedId"` | `"unifiedId"` |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shouldn't this be "sharedId" (lowercase "s" and "d")?

Suggested change
| name | Required | String | May be: `"britepoolId"`, `"criteo"`, `"digitrust"`, `"id5id"`, `identityLink`, `"liveIntentId"`, `"parrableId"`, `"netId"`, `"pubCommonId"`, `"SharedID"`, or `"unifiedId"` | `"unifiedId"` |
| name | Required | String | May be: `"britepoolId"`, `"criteo"`, `"digitrust"`, `"id5id"`, `identityLink`, `"liveIntentId"`, `"parrableId"`, `"netId"`, `"pubCommonId"`, `"sharedId"`, 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"` |
Expand Down Expand Up @@ -604,6 +605,70 @@ pbjs.setConfig({
});
{% endhighlight %}

#### SharedID

The SharedId UUID is a native Prebid identity service. SharedID has been designed to minimize its footprint on publishers pages, and optimized for the most common identity use case, interest based advertising. SharedID writes a simple 1st party ID in the publisher's domain. The first 48 bits represents the UUID’s birthdate, followed by 80 bits of random characters. Yes, a user will have a unique SharedID identity for each publisher they visit. However, since each UUID is available to all bidders who integrate with this identity service, we expect an open & transparent graph of users to emerge. Delegating this task to the community, and supporting it with this simple, efficient 1st party identity is beneficial to all parties participating in the RTB ecosystem.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comma is not needed here:
SharedID has been designed to minimize its footprint on publishers pages, and optimized for the most common identity use case, interest based advertising.

Suggested minor edits:
Yes, a user will have a unique SharedID identity for each publisher they visit. However, since each UUID is available to all bidders who integrate with this identity service, we expect an open & transparent graph of users to emerge. Delegating this task to the community, and supporting it with this simple, efficient 1st party identity is beneficial to all parties participating in the RTB ecosystem.

should be:

A user will have a unique SharedID identity for each publisher they visit. Since each UUID is available to all bidders who integrate with this identity service we expect an open & transparent graph of users to emerge. Delegating this task to the community, and supporting it with this simple, efficient 1st party identity is beneficial to all parties participating in the RTB ecosystem.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, didn't notice this, suggested edit:

SharedID has been designed to minimize its footprint on publishers pages and is optimized for the most common identity use case, interest-based advertising.


Add it to your Prebid.js package with:

{: .alert.alert-info :}
gulp build --modules=sharedIdSystem

#### SharedID Registration

SharedID does not require registration, publishers may use the SharedID identity service at their own discretion. Each publisher's privacy policy should take SharedID into account.


#### SharedID ID Example

1) Publisher supports SharedID and first party domain cookie storage

{% highlight javascript %}
pbjs.setConfig({
userSync: {
userIds: [{
name: "sharedId",
storage: {
type: "cookie",
name: "sharedid", // create a cookie with this name
expires: 28 // expires in 28 days
}
}]
}
});
{% endhighlight %}

2) Publisher supports both UnifiedID and SharedID and first party domain cookie storage

{% highlight javascript %}

pbjs.setConfig({
userSync: {
userIds: [{
name: "unifiedId",
params: {
partner: "myTtdPid"
},
storage: {
type: "cookie",
name: "pbjs-unifiedid", // create a cookie with this name
expires: 60
}
},{
name: "sharedId",
storage: {
type: "cookie",
name: "sharedid", // create a cookie with this name
expires: 28
}
}],
syncDelay: 5000 // 5 seconds after the first bidRequest()
}
});

{% endhighlight %}


### Unified ID

The Unified ID solution is provided by adsrvr.org and the Trade Desk.
Expand Down