diff --git a/docs/guides/integration-prebid-advanced.md b/docs/guides/integration-prebid-advanced.md
new file mode 100644
index 000000000..e659b1dcb
--- /dev/null
+++ b/docs/guides/integration-prebid-advanced.md
@@ -0,0 +1,172 @@
+---
+title: Prebid.js Advanced Integration
+sidebar_label: Prebid.js Advanced Integration
+pagination_label: Prebid Advanced Integration
+description: Information about integrating with Prebid as part of your UID2 implementation.
+hide_table_of_contents: false
+sidebar_position: 04
+---
+
+# Prebid.js Advanced Integration Guide
+
+
+
+This guide is for publishers who want to integrate with UID2 and generate [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) (advertising tokens) to be passed by Prebid in the RTB bid stream. It covers advanced use cases for publishers who want to generate and optionally refresh UID2 tokens by making server-side API calls to the UID2 operator. For integration instructions that do not require server-side changes, please see the [Prebid.js Integration Guide](./integration-prebid.md).
+
+This guide outlines the basic steps to consider if you're building a direct integration with UID2 and you use Prebid for header bidding.
+
+## Introduction
+
+If you're a publisher using Prebid for header bidding, there are a few extra steps to take so that your Prebid header bidding implementation also supports UID2.
+
+In addition, if you don't already have one, you must set up a UID2 account: see [Account Setup](../getting-started/gs-account-setup.md).
+
+## UID2 Prebid Module Page
+
+Information about how to integrate Prebid with UID2 is also in these locations:
+- On the [Unified ID 2.0](https://docs.prebid.org/dev-docs/modules/userid-submodules/unified2.html) page for the Prebid User ID submodule on the Prebid site.
+- In the [UID2 User ID Submodule](https://github.com/prebid/Prebid.js/blob/master/modules/uid2IdSystem.md) page in the Prebid GitHub repository.
+
+## Integration Steps
+
+At a high level, to integrate with UID2 using Prebid, you'll need to complete the following steps.
+
+| Step | Action | Link to Instructions |
+| --- | --- | --- |
+| 1 | Send a server-side API call to generate a UID2 token. | [Generate UID2 Token](#generate-uid2-token) |
+| 2 | Store the response value, so that the Prebid module can manage token refresh as well as opt-out if needed. | [Client Refresh Mode](#client-refresh-mode) |
+
+## Generate UID2 Token
+
+You can generate tokens by calling the [POST /token/generate](../endpoints/post-token-generate.md) endpoint.
+
+## UID2 User ID Submodule
+
+The UID2 module handles storing, providing, and optionally refreshing UID2 tokens.
+
+>**Important:** UID2 is not designed to be used where GDPR applies. The module checks the passed-in consent data, and does not operate if the `gdprApplies` flag is set to `true`.
+
+## Client Refresh Mode
+
+You must provide the Prebid module with the full JSON response body from the applicable endpoint:
+
+- [POST /token/generate](../endpoints/post-token-generate.md) for a new UID2 token.
+- [POST /token/refresh](../endpoints/post-token-refresh.md) for a refreshed UID2 token.
+
+For an example, see [Sample Token](#sample-token).
+
+As long as the refresh token remains valid, the module refreshes the UID2 token as needed.
+
+### Response Storage Options
+
+When you configure the module to use Client Refresh mode, you must choose **one** of the following options for storing the API response information.
+
+| Option | Details | Use Case |
+| --- | --- | --- |
+| Set `params.uid2Cookie` to the name of the cookie that contains the response body as a JSON string. | See [Client Refresh Cookie Example](#client-refresh-cookie-example). | Do not choose this option unless you are sure there's enough space left in your cookie to store the response body. |
+| Set `params.uid2Token` to the response body as a JavaScript object. | See [Client Refresh uid2Token Example](#client-refresh-uid2token-example). | You might choose to provide the response body via `params.uid2Token` in either of these cases:
- If storing the response body on the cookie will exceed the cookie size limit.
- If you prefer to have the flexibility to manage the storage of the response body yourself. |
+
+### Client Refresh Cookie Example
+
+In this example, the cookie is called `uid2_pub_cookie`.
+
+#### Cookie
+```
+uid2_pub_cookie={"advertising_token":"...advertising token...","refresh_token":"...refresh token...","identity_expires":1684741472161,"refresh_from":1684741425653,"refresh_expires":1684784643668,"refresh_response_key":"...response key..."}
+```
+
+#### Configuration
+
+```javascript
+pbjs.setConfig({
+ userSync: {
+ userIds: [{
+ name: 'uid2',
+ params: {
+ uid2Cookie: 'uid2_pub_cookie'
+ }
+ }]
+ }
+});
+```
+
+### Client Refresh uid2Token Example
+
+The following example shows a sample configuration. For the contents of the token, see [Sample Token](#sample-token).
+
+```javascript
+pbjs.setConfig({
+ userSync: {
+ userIds: [{
+ name: 'uid2',
+ params: {
+ uid2Token: {
+ 'advertising_token': '...advertising token...',
+ 'refresh_token': '...refresh token...',
+ // etc. - see the sample token for contents of this object
+ }
+ }
+ }]
+ }
+});
+```
+
+## Storage of Internal Values
+
+The UID2 Prebid module stores some internal values. By default, all values are stored in HTML5 local storage. If needed, you can switch to cookie storage by setting `params.storage` to `cookie`. The cookie size can be significant, so we don't recommend this solution, but it is a possible solution if local storage is not an option.
+
+## Sample Token
+
+The following sample is fictitious, but shows what the token response object looks like:
+
+```javascript
+{
+ "advertising_token": "...",
+ "refresh_token": "...",
+ "identity_expires": 1633643601000,
+ "refresh_from": 1633643001000,
+ "refresh_expires": 1636322000000,
+ "refresh_response_key": "wR5t6HKMfJ2r4J7fEGX9Gw=="
+}
+```
+
+## Prebid Implementation Notes and Tips
+
+In planning your Prebid implementation, consider the following:
+
+- If you're trying to limit the size of cookies, provide the token in configuration and use the default option of local storage.
+
+- If you provide an expired identity, and the module has a valid identity which was refreshed from the identity you provide, the module uses the refreshed identity. The module stores the original token that it used for refreshing the token, and uses the refreshed tokens as long as the original token matches the token that you provided.
+
+- If you provide a new token that does not match the original token used to generate any refreshed tokens, all stored tokens are discarded and the new token used instead (refreshed if necessary).
+
+- During integration testing, you can set `params.uid2ApiBase` to `"https://operator-integ.uidapi.com"`. Be aware that you must use the same environment (production or integration) that you use for generating tokens.
+
+- For an example of what a UID2 token might look like in the bid stream, when it's sent from an SSP to a DSP, see [What does a UID2 token look like in the bid stream?](../getting-started/gs-faqs.md#what-does-a-uid2-token-look-like-in-the-bid-stream)
+
+## Configuration Parameters for `usersync`
+
+The following parameters apply only to the UID2 Prebid User ID Module integration.
+
+| Param under userSync.userIds[] | Scope | Type | Description | Example |
+| --- | --- | --- | --- | --- |
+| name | Required | String | ID value for the UID2 module - `"uid2"` | `"uid2"` |
+| value | Optional, server only | Object | An object containing the value for the advertising token. | See [Sample Token](#sample-token). |
+| params.uid2Token | Optional, client refresh | Object | The initial UID2 token. This should be the `body` element of the decrypted response from a call to the `/token/generate` or `/token/refresh` endpoint. | See [Sample Token](#sample-token). |
+| params.uid2Cookie | Optional, client refresh | String | The name of a cookie that holds the initial UID2 token, set by the server. The cookie should contain JSON in the same format as the uid2Token param. **If uid2Token is supplied, this param is ignored.** | See [Sample Token](#sample-token). |
+| params.uid2ApiBase | Optional, client refresh | String | Overrides the default UID2 API endpoint. | `"https://prod.uidapi.com"` (the default)|
+| params.storage | Optional, client refresh | String | Specify the module internal storage method: `cookie` or `localStorage`. We recommend that you do not provide this parameter. Instead, allow the module to use the default. | `localStorage` (the default) |
diff --git a/docs/guides/integration-prebid.md b/docs/guides/integration-prebid.md
index 5c1881f9d..36a436922 100644
--- a/docs/guides/integration-prebid.md
+++ b/docs/guides/integration-prebid.md
@@ -1,172 +1,245 @@
---
-title: Prebid Integration
-sidebar_label: Prebid
-pagination_label: Prebid Integration
-description: Information about integrating with Prebid as part of your UID2 implementation.
+title: Prebid.js Integration
+sidebar_label: Prebid.js
+pagination_label: Prebid.js Integration
+description: Information about integrating with Prebid.js as part of your UID2 implementation.
hide_table_of_contents: false
sidebar_position: 04
---
-# Prebid Integration Guide
+# Prebid.js Integration Guide
-
+This guide does not apply to publishers that want to use a [private operator](../ref-info/glossary-uid.md#gl-private-operator), or those that want to generate tokens server-side.
+Those publishers should follow the [Prebid.js Advanced Integration Guide](./integration-prebid-advanced.md).
-This guide is for publishers who want to integrate with UID2 and generate [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) (advertising tokens) to be passed by Prebid in the RTB bid stream.
+UID2 provides a [Prebid.js module](https://docs.prebid.org/dev-docs/modules/userid-submodules/unified2.html) with the following features:
-It outlines the basic steps to consider if you're building a direct integration with UID2 and you use Prebid for header bidding.
+- UID2 token generation.
+- Automatic refreshing of UID2 tokens.
+- Automatic storage of UID2 tokens in the browser.
+- Automatic passing of UID2 tokens to the bid stream.
-## Introduction
+In order to follow this guide you will need to make changes to the HTML and JavaScript on your site. No server-side work is required.
-If you're a publisher using Prebid for header bidding, there are a few extra steps to take so that your Prebid header bidding implementation also supports UID2.
+To integrate with UID2 using Prebid.js you will need to complete the following steps:
-In addition, if you don't already have one, you must set up a UID2 account: see [Account Setup](../getting-started/gs-account-setup.md).
+1. Complete the [UID2 Account Setup](../getting-started/gs-account-setup.md).
+2. Add Prebid.js to your site.
+3. Configure the UID2 module.
-## UID2 Prebid Module Page
+## Complete UID2 Account Setup
-Information about how to integrate Prebid with UID2 is also in these locations:
-- On the [Unified ID 2.0](https://docs.prebid.org/dev-docs/modules/userid-submodules/unified2.html) page for the Prebid User ID submodule on the Prebid site.
-- In the [UID2 User ID Submodule](https://github.com/prebid/Prebid.js/blob/master/modules/uid2IdSystem.md) page in the Prebid GitHub repository.
+Complete the UID2 account setup by following the steps described in the [Account Setup](../getting-started/gs-account-setup.md) page. You will need to provide a list of domain names for the sites that you will be using with Prebid.js as part of the account setup process.
-## Integration Steps
+When account setup is complete you will be provided with a **public key** and **subscription ID**. These will be used to configure the UID2 module.
-At a high level, to integrate with UID2 using Prebid, you'll need to complete the following steps.
+:::tip
+Only root-level domains are required for account setup. For example, if you are going to use UID2 with Prebid.js on example.com, shop.example.com, and example.org, you only need to provide the domain names example.com and example.org.
+:::
-| Step | Action | Link to Instructions |
-| --- | --- | --- |
-| 1 | Send a server-side API call to generate a UID2 token. | [Generate UID2 Token](#generate-uid2-token) |
-| 2 | Store the response value, so that the Prebid module can manage token refresh as well as opt-out if needed. | [Client Refresh Mode](#client-refresh-mode) |
+## Add Prebid.js to your site
-## Generate UID2 Token
+Follow the [Prebid.js documentation](https://docs.prebid.org/dev-docs/getting-started.html) to add Prebid.js to your site. Make sure to use Prebid.js version 8.21.0 or higher.
-UID2 requires initial tokens to be generated server-side. You can do this by calling the [POST /token/generate](../endpoints/post-token-generate.md) endpoint to generate a new UID2 token.
+When you download the Prebid.js package, add the UID2 module by checking the box next to the module named "Unified ID 2.0". The module is listed under the section *User ID Modules*.
-## UID2 User ID Submodule
+Once you have added Prebid.js to your site and confirmed that it is working properly, you are ready to configure the UID2 module.
-UID2 requires initial tokens to be generated server-side. The UID2 module handles storing, providing, and optionally refreshing them. The module operates in Client Refresh mode.
+:::tip
+Ensure the UID2 module is installed by finding the string "uid2IdSystem" in the [`pbjs.installedModules` array](https://docs.prebid.org/dev-docs/publisher-api-reference/installedModules.html).
+:::
->**Important:** UID2 is not designed to be used where GDPR applies. The module checks the passed-in consent data, and does not operate if the `gdprApplies` flag is set to `true`.
+## Configure the UID2 module
-## Client Refresh Mode
+To configure the UID2 module, call `pbjs.setConfig` with an object containing the **public key** and **subscription ID** obtained during account setup, as well as the user's hashed or unhashed [DII](../ref-info/glossary-uid.md#gl-dii) (email address or phone number).
-You must provide the Prebid module with the full JSON response body from the applicable endpoint:
+Once configured, the UID2 module will generate a UID2 token for the user and store it in the user's browser. The module will automatically refresh the token as required while your site is open in the user's browser.
-- [POST /token/generate](../endpoints/post-token-generate.md) for a new UID2 token.
-- [POST /token/refresh](../endpoints/post-token-refresh.md) for a refreshed UID2 token.
+The user's DII can be passed to the UID2 module hashed or unhashed. If the DII is passed to the UID2 module unhashed, the module will hash it for you. If the DII is passed to the module hashed, it must be normalized before hashing. See [Normalization and Encoding](../getting-started/gs-normalization-encoding.md) for more details.
-For an example, see [Sample Token](#sample-token).
+The UID2 module will encrypt the hashed DII before sending it to the UID2 service.
-As long as the refresh token remains valid, the module refreshes the UID2 token as needed.
+For a given user on your site, the module can be configured for **one** of the following at a time:
-### Response Storage Options
+- An email address,
+- A hashed email address,
+- A phone number, or
+- A hashed phone number.
-When you configure the module to use Client Refresh mode, you must choose **one** of the following options for storing the API response information.
+If the module is configured multiples times it will use the most recent configuration values.
-| Option | Details | Use Case |
-| --- | --- | --- |
-| Set `params.uid2Cookie` to the name of the cookie that contains the response body as a JSON string. | See [Client Refresh Cookie Example](#client-refresh-cookie-example). | Do not choose this option unless you are sure there's enough space left in your cookie to store the response body. |
-| Set `params.uid2Token` to the response body as a JavaScript object. | See [Client Refresh uid2Token Example](#client-refresh-uid2token-example). | You might choose to provide the response body via `params.uid2Token` in either of these cases:
- If storing the response body on the cookie will exceed the cookie size limit.
- If you prefer to have the flexibility to manage the storage of the response body yourself. |
+The following sections demonstrate the different ways to configure the UID2 module and list the requirements for the DII passed to the module.
-### Client Refresh Cookie Example
+:::note
+The examples assume you are using the UID2 production environment. During integration testing use the UID2 integration environment by setting `params.uid2ApiBase` to `"https://operator-integ.uidapi.com"`. Tokens from the UID2 integration environment must not be passed to the bid stream. You will have a different **subscription ID** and **public key** for the integration environment.
+:::
-In this example, the cookie is called `uid2_pub_cookie`.
+### Configure for email address
-#### Cookie
+Configure the UID2 module with an email address:
+
+```js
+pbjs.setConfig({
+ userSync: {
+ userIds: [{
+ name: 'uid2',
+ params: {
+ serverPublicKey: publicKey,
+ subscriptionId: subscriptionId,
+ email: 'user@example.com',
+ }
+ }]
+ }
+});
```
-uid2_pub_cookie={"advertising_token":"...advertising token...","refresh_token":"...refresh token...","identity_expires":1684741472161,"refresh_from":1684741425653,"refresh_expires":1684784643668,"refresh_response_key":"...response key..."}
+
+No normalization or hashing is required by the publisher.
+
+The UID2 module will normalize and hash the email address before sending the encrypted hash to the UID2 service.
+
+### Configure for phone number
+
+Configure the UID2 module with a phone number:
+
+```js
+pbjs.setConfig({
+ userSync: {
+ userIds: [{
+ name: 'uid2',
+ params: {
+ serverPublicKey: publicKey,
+ subscriptionId: subscriptionId,
+ phone: '+1111111111',
+ }
+ }]
+ }
+});
```
-#### Configuration
+**The publisher is responsible for normalizing the phone number**. Refer to [Normalization and Encoding](../getting-started/gs-normalization-encoding.md#phone-number-normalization) for details on phone number normalization.
+
+The UID2 module will hash the phone number before sending the encrypted hash to the UID2 service.
-```javascript
+### Configure for hashed email address
+
+Configure the UID2 module with a hashed email address:
+
+```js
pbjs.setConfig({
userSync: {
userIds: [{
name: 'uid2',
params: {
- uid2Cookie: 'uid2_pub_cookie'
+ serverPublicKey: publicKey,
+ subscriptionId: subscriptionId,
+ emailHash: 'eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc=',
}
}]
}
});
```
-### Client Refresh uid2Token Example
+**The publisher is responsible for normalizing and hashing the email address**. Refer to [Normalization and Encoding](../getting-started/gs-normalization-encoding.md) for details on email address normalization and hashing.
+
+The UID2 module will encrypt the hash before sending it to the UID2 service.
-The following example shows a sample configuration. For the contents of the token, see [Sample Token](#sample-token).
+### Configure for hashed phone number
-```javascript
+Configure the UID2 module with a hashed phone number:
+
+```js
pbjs.setConfig({
userSync: {
userIds: [{
name: 'uid2',
params: {
- uid2Token: {
- 'advertising_token': '...advertising token...',
- 'refresh_token': '...refresh token...',
- // etc. - see the sample token for contents of this object
- }
+ serverPublicKey: publicKey,
+ subscriptionId: subscriptionId,
+ phoneHash: 'eVvLS/Vg+YZ6+z3i0NOpSXYyQAfEXqCZ7BTpAjFUBUc=',
}
}]
}
});
```
-## Storage of Internal Values
+**The publisher is responsible for normalizing and hashing the phone number**. Refer to [Normalization and Encoding](../getting-started/gs-normalization-encoding.md) for details on phone number normalization and hashing.
+
+The UID2 module will encrypt the hash before sending it to the UID2 service.
+
+## Module storage
+
+By default the UID2 module will store data using local storage. To use a cookie instead, set `params.storage` to "cookie". See the [UID2 module documentation](https://docs.prebid.org/dev-docs/modules/userid-submodules/unified2.html#unified-id-20-configuration) for more details.
+
+## When to pass DII to the UID2 module
+
+If possible, configure the UID2 module with the user's DII on each page load.
+
+When the UID2 module is configured it will check for an existing UID2 token in the user's browser. If there is an existing token that was generated from the same DII and the token has not expired or can be refreshed, the module will use or refresh the existing token instead of generating a new token.
-The UID2 Prebid module stores some internal values. By default, all values are stored in HTML5 local storage. If needed, you can switch to cookie storage by setting `params.storage` to `cookie`. The cookie size can be significant, so we don't recommend this solution, but it is a possible solution if local storage is not an option.
+If there is no existing token, or the token has expired and cannot be refreshed, the UID2 module can not generate a new token without being passed DII.
-## Sample Token
+As a result it's recommended to configure the UID2 module with the user's DII on each page load.
-The following sample is fictitious, but shows what the token response object looks like:
+In some cases the user's DII is not available on page load and obtaining the DII has some associated cost. For example, an API call might be required to fetch the DII, or the user has to be prompted to enter their DII.
-```javascript
-{
- "advertising_token": "...",
- "refresh_token": "...",
- "identity_expires": 1633643601000,
- "refresh_from": 1633643001000,
- "refresh_expires": 1636322000000,
- "refresh_response_key": "wR5t6HKMfJ2r4J7fEGX9Gw=="
+That cost can be avoided by checking for an existing token that is able to be used or refreshed.
+
+To check for an existing token that is able to be used or refreshed, check the value returned by `pbjs.getUserIds().uid2`:
+
+```js
+const params = {};
+
+if (!pbjs.getUserIds().uid2) {
+ // There is no token that can be used or refreshed.
+ // The UID2 module must be configured with DII in order to generate a new token.
+ params.email = getUserEmail();
+ params.serverPublicKey = publicKey;
+ params.subscriptionId = subscriptionId;
}
+
+pbjs.setConfig({
+ userSync: {
+ userIds: [{
+ name: 'uid2',
+ params: params
+ }]
+ }
+});
```
-## Prebid Implementation Notes and Tips
+## Checking the integration
-In planning your Prebid implementation, consider the following:
+Check that the UID2 module has successfully generated a UID2 token by calling `pbjs.getUserIds().uid2`. If a value is returned, a token has been successfully generated.
-- If you're trying to limit the size of cookies, provide the token in configuration and use the default option of local storage.
+If there are problems with the integration:
-- If you provide an expired identity, and the module has a valid identity which was refreshed from the identity you provide, the module uses the refreshed identity. The module stores the original token that it used for refreshing the token, and uses the refreshed tokens as long as the original token matches the token that you provided.
+- Check the browser console logs.
+- Check that you are using the correct **subscription ID** and **public key**.
+- Check that the domain name of the site was provided to UID2 during account setup.
+- Use the browser developer tools to inspect the API call(s) to the UID2 service.
-- If you provide a new token that does not match the original token used to generate any refreshed tokens, all stored tokens are discarded and the new token used instead (refreshed if necessary).
+For further help, refer to Prebid's documentation on [Troubleshooting Prebid.js](https://docs.prebid.org/troubleshooting/troubleshooting-guide.html) and [Debugging Prebid.js](https://docs.prebid.org/debugging/debugging.html).
-- During integration testing, you can set `params.uid2ApiBase` to `"https://operator-integ.uidapi.com"`. Be aware that you must use the same environment (production or integration) that you use for generating tokens.
+## Optional: Reduce latency by setting the API base URL
-- For an example of what a UID2 token might look like in the bid stream, when it's sent from an SSP to a DSP, see [What does a UID2 token look like in the bid stream?](../getting-started/gs-faqs.md#what-does-a-uid2-token-look-like-in-the-bid-stream)
+By default, the UID2 module will make API calls to a UID2 server in the USA. Publishers should take into account where their users are based and consider choosing a server closer to their users in order to reduce latency.
-## Configuration Parameters for `usersync`
+Publishers can choose a different UID2 server by setting the optional `params.uid2ApiBase` parameter when configuring the UID2 module:
-The following parameters apply only to the UID2 Prebid User ID Module integration.
+```js
+pbjs.setConfig({
+ userSync: {
+ userIds: [{
+ name: 'uid2',
+ params: {
+ uid2ApiBase: baseUrl,
+ // ...
+ }
+ }]
+ }
+});
+```
-| Param under userSync.userIds[] | Scope | Type | Description | Example |
-| --- | --- | --- | --- | --- |
-| name | Required | String | ID value for the UID2 module - `"uid2"` | `"uid2"` |
-| value | Optional, server only | Object | An object containing the value for the advertising token. | See [Sample Token](#sample-token). |
-| params.uid2Token | Optional, client refresh | Object | The initial UID2 token. This should be the `body` element of the decrypted response from a call to the `/token/generate` or `/token/refresh` endpoint. | See [Sample Token](#sample-token). |
-| params.uid2Cookie | Optional, client refresh | String | The name of a cookie that holds the initial UID2 token, set by the server. The cookie should contain JSON in the same format as the uid2Token param. **If uid2Token is supplied, this param is ignored.** | See [Sample Token](#sample-token). |
-| params.uid2ApiBase | Optional, client refresh | String | Overrides the default UID2 API endpoint. | `"https://prod.uidapi.com"` (the default)|
-| params.storage | Optional, client refresh | String | Specify the module internal storage method: `cookie` or `localStorage`. We recommend that you do not provide this parameter. Instead, allow the module to use the default. | `localStorage` (the default) |
+Refer to [Environments](../getting-started/gs-environments.md) for the list of possible base URLs.
diff --git a/docs/guides/summary-guides.md b/docs/guides/summary-guides.md
index 6d8bdca00..7501af15d 100644
--- a/docs/guides/summary-guides.md
+++ b/docs/guides/summary-guides.md
@@ -25,7 +25,6 @@ Publisher integrations fall into the following main categories:
- [Web Integrations](#web-integrations)
- [Mobile](#mobile)
- [Google Ad Manager Integrations](#google-ad-manager-integrations)
-- [Prebid Integrations](#prebid-integrations)
### Web Integrations
@@ -33,6 +32,8 @@ The following resources are available for publisher web integrations.
| Integration Guide | Content Description |
| :--- | :--- |
+| [Prebid.js Integration Guide](./integration-prebid.md) | An integration guide for publishers who want to integrate with UID2 and generate identity tokens to be passed by Prebid in the RTB bid stream. |
+| [Prebid.js Advanced Integration Guide](./integration-prebid-advanced.md) | An integration guide for publishers who want to integrate with UID2 and generate identity tokens to be passed by Prebid in the RTB bid stream. This guide is for publishers that are using a private operator or that want to generate tokens server-side. |
| [UID2 SDK for JavaScript Integration Guide](publisher-client-side.md) | This integration guide for publishers covers standard web integration scenarios that use the UID2 SDK for JavaScript. |
| [Publisher Integration Guide, Server-Only](custom-publisher-integration.md) | This integration guide is for publishers that do not use the UID2 SDK for JavaScript. |
@@ -57,14 +58,6 @@ The following resources are available for publishers integrating with Google Ad
| [UID2 IMA Plugin for Android Integration Guide](mobile-plugin-ima-android.md) | The UID2 Interactive Media Ads (IMA) Plugin for Android enables publishers that use the [Google IMA SDK for Android](https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side) to send [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) as [secure signals](https://support.google.com/admob/answer/11556288) in ad requests from Android apps. |
| [UID2 IMA Plugin for iOS Integration Guide](mobile-plugin-ima-ios.md) | The UID2 Interactive Media Ads (IMA) Plugin for iOS enables publishers that use the [Google IMA SDK for iOS](https://developers.google.com/interactive-media-ads/docs/sdks/ios/client-side) to send [UID2 tokens](../ref-info/glossary-uid.md#gl-uid2-token) as [secure signals](https://support.google.com/admob/answer/11556288) in ad requests from iOS apps. |
-### Prebid Integrations
-
-The following resources are available for publishers integrating with Prebid.
-
-| Integration Guide | Content Description |
-| :--- | :--- |
-| [Prebid Integration Guide](integration-prebid.md) | An integration guide for publishers who want to integrate with UID2 and generate identity tokens to be passed by Prebid in the RTB bid stream. |
-
## Advertiser/Data Provider Integrations
The following resources are available for advertisers and data providers integrating with UID2.
diff --git a/docs/overviews/overview-publishers.md b/docs/overviews/overview-publishers.md
index 3554bd5bf..7689a431c 100644
--- a/docs/overviews/overview-publishers.md
+++ b/docs/overviews/overview-publishers.md
@@ -41,7 +41,6 @@ The following documentation resources are available for publishers to implement
- [Web Integrations](#web-integrations)
- [Mobile](#mobile)
- [Google Ad Manager Integrations](#google-ad-manager-integrations)
-- [Prebid Integrations](#prebid-integrations)
### Web Integrations
@@ -49,6 +48,8 @@ The following resources are available for publisher web integrations.
| Integration Type | Integration Guide | Content Description | Audience |
| :---| :--- | :--- | :--- |
+| Prebid | [Prebid.js Integration Guide](../guides/integration-prebid.md) | An integration guide for publishers who want to integrate with UID2 and generate identity tokens to be passed by Prebid in the RTB bid stream. | Publishers |
+| Prebid | [Prebid.js Advanced Integration Guide](../guides/integration-prebid-advanced.md) | An integration guide for publishers who want to integrate with UID2 and generate identity tokens to be passed by Prebid in the RTB bid stream. This guide is for publishers that are using a private operator or that want to generate tokens server-side. | Publishers |
| Client-Side (Web) Integration | [UID2 SDK for JavaScript Integration Guide](../guides/publisher-client-side.md) | This integration guide for publishers covers standard web integration scenarios that use the UID2 SDK for JavaScript. | Publishers |
| Server-Side Integration | [Publisher Integration Guide, Server-Only](../guides/custom-publisher-integration.md) | This integration guide is for publishers that do not use the [UID2 SDK for JavaScript Reference Guide](../sdks/client-side-identity.md). | Publishers |
@@ -74,14 +75,6 @@ The following resources are available for publishers integrating with Google Ad
| IMA for Android | [UID2 IMA Plugin for Android Integration Guide](../guides/mobile-plugin-ima-android.md) | This integration guide enables publishers that use the Google Interactive Media Ads (IMA) SDK to include UID2 tokens in ad requests from their Android apps. | Publishers |
| IMA for iOS | [UID2 IMA Plugin for iOS Integration Guide](../guides/mobile-plugin-ima-ios.md) | This integration guide enables publishers that use the Google Interactive Media Ads (IMA) SDK to include UID2 tokens in ad requests from their iOS apps. | Publishers |
-### Prebid Integrations
-
-The following resources are available for publishers integrating with Prebid.
-
-| Integration Type| Documentation | Content Description | Audience |
-| :--- | :--- | :--- | :--- |
-| Prebid | [Prebid Integration Guide](../guides/integration-prebid.md) | An integration guide for publishers who want to integrate with UID2 and generate identity tokens to be passed by Prebid in the RTB bid stream. | Publishers |
-
## Workflow for Publishers
The following diagram shows the UID2 workflow for publishers.
diff --git a/sidebars.js b/sidebars.js
index 3753b5747..936ed112a 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -96,6 +96,7 @@ const sidebars = {
collapsed: true,
items: [
'guides/integration-prebid',
+ 'guides/integration-prebid-advanced',
'guides/publisher-client-side',
'guides/custom-publisher-integration',
'guides/google-ss-integration',