-

{{ page.title }}

+

{{ page.title }}

-

Features

+

Features

{{content}} diff --git a/_layouts/bidder.html b/_layouts/bidder.html index 62a52c9e95..0b88d873fe 100644 --- a/_layouts/bidder.html +++ b/_layouts/bidder.html @@ -33,7 +33,7 @@

Back to Bidders

-

{{ page.title }}

+

{{ page.title }}

{% if page.enable_download == false %}
@@ -43,17 +43,17 @@

Note:

This adapter is not available in current versions of Prebid.js. R {% if page.s2s_only == true %}
-

Note:

This is a Prebid Server adapter only. +

Note:

This is a Prebid Server adapter only.
{% endif %} -

Features

+

Features

{% include dev-docs/bidder-meta-data.html page=page %} {{content}} -

"Send All Bids" Ad Server Keys

+

"Send All Bids" Ad Server Keys

These are the bidder-specific keys that would be targeted within GAM in a Send-All-Bids scenario. GAM truncates keys to 20 characters. diff --git a/_sass/components/_pb.scss b/_sass/components/_pb.scss index 9033387d5d..e60c411026 100644 --- a/_sass/components/_pb.scss +++ b/_sass/components/_pb.scss @@ -24,7 +24,7 @@ } .pb-content { - $lt-content-font-size: 19px; + $lt-content-font-size: 16px; padding: 22px 30px; border: 1px solid $t-divider-color; diff --git a/dev-docs/analytics/agma.md b/dev-docs/analytics/agma.md index 1129d80856..947b9784f3 100644 --- a/dev-docs/analytics/agma.md +++ b/dev-docs/analytics/agma.md @@ -10,14 +10,14 @@ prebid_member: false gvl_id: 1122 --- -#### Analytics Options +## Analytics Options {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | |-------------|---------|--------------------|-----------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|------------------| | code | required | Provided by agma | `'my-code'` | string | -### Example Configuration +## Example Configuration ```javascript pbjs.enableAnalytics({ @@ -28,6 +28,6 @@ pbjs.enableAnalytics({ }); ``` -#### Registration +## Registration Please contact [team-internet@agma-mmc.de](mailto:team-internet@agma-mmc.de) for signup. diff --git a/dev-docs/bidders/ttd.md b/dev-docs/bidders/ttd.md index adc903af42..88a2b7c367 100644 --- a/dev-docs/bidders/ttd.md +++ b/dev-docs/bidders/ttd.md @@ -38,11 +38,11 @@ Note: The Trade Desk Header Bidding adapter requires setup and approval before b | Name | Scope | Description | Example | Type | | --- | --- | --- | --- | --- | | `supplySourceId` | required | The TTD-provided supply source name. | `'supplier'` | `String` | -| `publisherId` | required | The publisher ID. If there is a sellers.json, this should be the same as the seller_id in the sellers.json for the site being trafficked. If there is no sellers.json, this should be hardcoded to "1". | `'1427ab10f2e448057ed3b422'` | `String` | +| `publisherId` | required | The publisher ID. If there is a sellers.json, this should be the same as the seller_id in the sellers.json for the site being trafficked. If there is no sellers.json, this should be hardcoded to "1". | 1427ab10f2e448057ed3b422 | `String` | | `placementId` | optional | This field is optional if GPID is passed through the GPT module . If that module isn't used, the GPID value should be passed in this field. | `'/1111/home#header'` | `String` | | `banner` | optional | Display banner targeting parameters. See the banner section below. | `{}` | `object` | | `bidfloor` | optional | Sets a bid floor price | `0.95` | `Float` | -| `customBidderEndpoint` | optional | Only set if TTD has provided a custom endpoint. If set the custom endpoint will take precedent over the hard-coded endpoints | `https://customBidderEndpoint/bid/bidder/` | `String` | +| `customBidderEndpoint` | optional | Only set if TTD has provided a custom endpoint. If set the custom endpoint will take precedent over the hard-coded endpoints | `https://custom/bid/` | `String` | ## Banner Object @@ -54,7 +54,7 @@ The following banner parameters are supported: | --- | --- | --- | --- | --- | | `expdir` | optional | Directions in which the banner may expand. See "Expandable Direction" in the [OpenRTB 2.5 docs](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) for possible values. | `[1, 3]` | `Array[integer]` | -## `mediaTypes.banner` Parameters +### `mediaTypes.banner` Parameters The TTD adapter for banner uses certain parameters in the AdUnit's [mediaTypes.banner](https://docs.prebid.org/dev-docs/adunit-reference.html#adUnit.mediaTypes.banner) definition. Specifically, `sizes` is required for banner ad units. `pos` is recommended. @@ -90,7 +90,7 @@ var bannerAdUnit = { ## Video -## `mediaTypes.video` Parameters +### `mediaTypes.video` Parameters The TTD adapter for video requires certain parameters in the AdUnit's [mediaTypes.video](https://docs.prebid.org/dev-docs/adunit-reference.html#adUnit.mediaTypes.video) definition. Specifically, `maxduration`, `api`, `mimes`, `plcmt`, and `protocols` are all required for video ad units. `playerSize`, `startdelay`, `playbackmethod`, and `pos` are recommended. `minduration`, `minbitrate`, `maxbitrate`, `skip`, `skipmin`, and `skipafter` are optional. From 82e02f525b4887cad4456ce8ce106a6b542eb989 Mon Sep 17 00:00:00 2001 From: verben-gh Date: Tue, 14 Apr 2026 13:01:58 +0300 Subject: [PATCH 544/665] New adapter: Verben (#6490) * New adapter: Verben * Apply suggestion from @muuki88 * New Adapter Verben: Enabled pbs and pbs_app_supported --------- Co-authored-by: Verben Co-authored-by: Muki Seiler --- dev-docs/bidders/verben.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-docs/bidders/verben.md b/dev-docs/bidders/verben.md index 4875e430ec..d08e2339a8 100644 --- a/dev-docs/bidders/verben.md +++ b/dev-docs/bidders/verben.md @@ -16,8 +16,8 @@ media_types: banner, video, native multiformat_supported: will-bid-on-one userIds: all pbjs: true -pbs: false -pbs_app_supported: false +pbs: true +pbs_app_supported: true safeframes_ok: true sidebarType: 1 --- From e5589be2bec860b57ab7d604e70ccaf923366ebd Mon Sep 17 00:00:00 2001 From: prebid-reklamup Date: Tue, 14 Apr 2026 15:35:52 +0300 Subject: [PATCH 545/665] New adapter reklamup (#6460) * New adapter reklamup * New adapter reklamup: Disable pbs and pbs_app_supported --------- Co-authored-by: Reklamup --- dev-docs/bidders/reklamup.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 dev-docs/bidders/reklamup.md diff --git a/dev-docs/bidders/reklamup.md b/dev-docs/bidders/reklamup.md new file mode 100644 index 0000000000..7612322a62 --- /dev/null +++ b/dev-docs/bidders/reklamup.md @@ -0,0 +1,35 @@ +--- +layout: bidder +title: Reklamup +description: Prebid Reklamup Bidder Adapter +biddercode: reklamup +gpp_sids: usstate_all +tcfeu_supported: false +usp_supported: true +coppa_supported: true +schain_supported: true +deals_supported: false +floors_supported: true +fpd_supported: false +ortb_blocking_supported: false +media_types: banner, video, native +multiformat_supported: will-bid-on-one +userIds: all +pbjs: true +pbs: false +pbs_app_supported: false +safeframes_ok: true +sidebarType: 1 +--- + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|--------------|---------------------------------|------------| +| `placementId` | optional | Placement Id | `'0'` | `'string'` | +| `endpointId` | optional | Endpoint Id | `'0'` | `'string'` | + +### Note + +For the prebid server and prebid.js you only need to use one parameter: either placementId or endpointId From aa8b37c0d5a3da4aef4712a2ce694b5062e9a607 Mon Sep 17 00:00:00 2001 From: markappmedia Date: Wed, 15 Apr 2026 13:50:30 +0300 Subject: [PATCH 546/665] Added Bid Adapter Harion (#6413) * new adapter harion * fix(pbs): set to false * Update dev-docs/bidders/harion.md Co-authored-by: Muki Seiler * Update dev-docs/bidders/harion.md Co-authored-by: Muki Seiler * feat(pbs): values changed * refactor(lint): removed empty line --------- Co-authored-by: Vitalii Sumlennyi Co-authored-by: Muki Seiler --- dev-docs/bidders/harion.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 dev-docs/bidders/harion.md diff --git a/dev-docs/bidders/harion.md b/dev-docs/bidders/harion.md new file mode 100644 index 0000000000..ec8f1fd981 --- /dev/null +++ b/dev-docs/bidders/harion.md @@ -0,0 +1,36 @@ +--- +layout: bidder +title: harion +description: Prebid Harion Bidder Adapter +biddercode: harion +gpp_sids: usstate_all +tcfeu_supported: true +usp_supported: true +coppa_supported: true +schain_supported: true +deals_supported: false +floors_supported: true +fpd_supported: false +ortb_blocking_supported: false +media_types: banner, video, native +multiformat_supported: will-bid-on-one +userIds: all +pbjs: false +pbs: false +pbs_app_supported: false +safeframes_ok: true +sidebarType: 1 +gvl_id: 1406 +--- + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|--------------|---------------------------------|------------| +| `placementId` | optional | Placement Id | `'0'` | `'string'` | +| `endpointId` | optional | Endpoint Id | `'0'` | `'string'` | + +### Note + +For the prebid server and prebid.js you only need to use one parameter: either `placementId` or `endpointId`. From 93a1b07177882d03aefb3b7046e6e524cfbcfc8b Mon Sep 17 00:00:00 2001 From: Pavlo Kavulych <72217414+Chucky-choo@users.noreply.github.com> Date: Thu, 16 Apr 2026 15:16:39 +0300 Subject: [PATCH 547/665] New Adapter: revealon (#6493) --- dev-docs/bidders/revealon.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 dev-docs/bidders/revealon.md diff --git a/dev-docs/bidders/revealon.md b/dev-docs/bidders/revealon.md new file mode 100644 index 0000000000..10da25d256 --- /dev/null +++ b/dev-docs/bidders/revealon.md @@ -0,0 +1,32 @@ +--- +layout: bidder +title: Revealon +description: Revealon Bidder Adapter +biddercode: revealon +media_types: banner, video +coppa_supported: true +tcfeu_supported: false +usp_supported: true +prebid_member: false +pbjs: true +pbs: false +schain_supported: true +floors_supported: true +multiformat_supported: will-bid-on-any +sidebarType: 1 +safeframes_ok: true +dchain_supported: false +deals_supported: true +fpd_supported: false +ortb_blocking_supported: true +privacy_sandbox: no +--- + +### Prebid.js Bid params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|-------------|----------|-----------------------------|------------------------------------|-----------| +| `pid` | required | Placement ID | `0e232769e6f71d291ee7dbc9d157cf84` | `string` | +| `env` | optional | Environment name | `revealon` | `string` | +| `ext` | optional | Specific integration config | `{}` | `object` | From 7a0142684efa928f1702d9be50fbf6b089a8eb1a Mon Sep 17 00:00:00 2001 From: Vasu Jain Date: Thu, 16 Apr 2026 05:17:39 -0700 Subject: [PATCH 548/665] Docs: add minWinningBidCacheTTL / targeted-bid cache TTL to setConfig (#6479) * Add minimum cache TTL for targeted bids in setConfig documentation Enhanced the documentation for the `setConfig` method to include details on the `minWinningBidCacheTTL` setting. This addition clarifies how to manage bid caching for targeted bids, addressing potential issues with ad rendering delays and memory trade-offs. Included code examples and considerations for publishers regarding bid expiration and memory usage. * Update setConfig documentation to clarify minimum cache TTL for targeted bids Renamed `minWinningBidCacheTTL` to `minTargetedBidCacheTTL` in the documentation to accurately reflect its purpose. Updated explanations and code examples to enhance clarity on managing bid caching and the implications for ad rendering and memory usage. --- dev-docs/publisher-api-reference/setConfig.md | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/dev-docs/publisher-api-reference/setConfig.md b/dev-docs/publisher-api-reference/setConfig.md index cebebcc32d..00aff32682 100644 --- a/dev-docs/publisher-api-reference/setConfig.md +++ b/dev-docs/publisher-api-reference/setConfig.md @@ -346,6 +346,43 @@ When set, bids are only kept in memory for the duration of their actual TTL life Put another way, this setting doesn't define each bid's TTL, but rather controls how long it's kept around in memory for analytics purposes. +### Minimum cache TTL for targeted bids + + + +When using `minBidCacheTTL` to limit how long bids stay in memory, bids that have already been sent to the ad server (targeting set) can expire before the ad is rendered. This often happens with GPT lazy load or other delayed render: the ad is requested and targeting is set, but the slot only renders when the user scrolls. If the bid is dropped from cache before render, you may see "cannot find ad" (or similar) errors. + +Use **`minTargetedBidCacheTTL`** to give targeted bids a longer (or unlimited) cache time than other bids: + +```javascript +pbjs.setConfig({ + minBidCacheTTL: 30, // drop non-targeted bids after 30s + minTargetedBidCacheTTL: Infinity // keep targeted bids until page unload (lazy-load / long-delay render) +}); +``` + +* When set, it overrides `minBidCacheTTL` only for bids that have had **targeting set** (e.g. sent to GPT via `setTargetingForGPTAsync` / `setTargetingForGPT`). +* When unset, all bids use `minBidCacheTTL` (current behavior). +* Use a number (seconds) for a longer but finite TTL, or `Infinity` to keep targeted bids for the life of the page. + +#### Publisher choices when using bid cache TTL +{: .no_toc} + +If you use `minBidCacheTTL` (with or without `minTargetedBidCacheTTL`), you are making a tradeoff between memory and ad availability. Be explicit about what should happen when: + +1. A bid expires after targeting but before render + * Rely on `minTargetedBidCacheTTL` so targeted bids stay in cache until render, or + * Accept that the slot may show no ad / blank, or + * Run a new auction when the slot is about to render (e.g. in a lazy-load callback). + +2. Bids are dropped for memory saving + * Decide whether you prefer lower memory (shorter TTL) or fewer "missing ad" cases (longer TTL or `minTargetedBidCacheTTL`). + +#### SSP / revenue note +{: .no_toc} + +Bids have a TTL from the bidder/SSP. If an ad is rendered **after** that TTL, the SSP may treat the bid as expired and may not attribute revenue. Keeping bids in Prebid's cache longer (e.g. with `minTargetedBidCacheTTL`) does not change the SSP's own TTL. Use this setting when the delay is on your side (e.g. lazy load), not to extend the SSP's idea of when the bid is valid. + ### Event history TTL From 07314b809681a89ca7e30c53bd3ba3d6c8623123 Mon Sep 17 00:00:00 2001 From: tccdeniz Date: Thu, 16 Apr 2026 15:18:34 +0300 Subject: [PATCH 549/665] Updated adplus docs (#6476) * Added and updated AdPlus docs * Fixed linter issues * Removed unnecessary adplus params --- dev-docs/modules/userid-submodules/adplus.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/dev-docs/modules/userid-submodules/adplus.md b/dev-docs/modules/userid-submodules/adplus.md index fefbb4611c..1fadf949f1 100644 --- a/dev-docs/modules/userid-submodules/adplus.md +++ b/dev-docs/modules/userid-submodules/adplus.md @@ -21,8 +21,6 @@ gulp build --modules=adplusIdSystem,userId | Param under userSync.userIds[] | Scope | Type | Description | Example | | --- | --- | --- | --- | --- | | name | Required | String | The name of this module: `"adplusId"` | `"adplusId"` | -| storage.expires | Optional | Number | How long (in days) the user ID information will be stored | `7` (recommended) | -| storage.refreshInSeconds | Optional | Number | How many seconds until the ID is refreshed | `24 * 3600` (recommended) | ## AdPlus ID Example @@ -32,10 +30,7 @@ pbjs.setConfig({ userIds: [{ name: "adplusId", storage: { - name: "adplusId", - type: "cookie&html5", - expires: 7, - refreshInSeconds: 24 * 3600 + name: "adplusId" } }] } From d06a009604e1e722df5f3fbaf3f8a212ffbcf89a Mon Sep 17 00:00:00 2001 From: iprom-adserver <79305981+iprom-adserver@users.noreply.github.com> Date: Thu, 16 Apr 2026 14:18:49 +0200 Subject: [PATCH 550/665] Updated documentaion to reflect adapter changes. (#6475) Co-authored-by: oskarcokl --- dev-docs/bidders/iprom.md | 40 ++++++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/dev-docs/bidders/iprom.md b/dev-docs/bidders/iprom.md index 5689594c25..6252832ee4 100644 --- a/dev-docs/bidders/iprom.md +++ b/dev-docs/bidders/iprom.md @@ -1,22 +1,48 @@ --- layout: bidder title: iPROM -description: iPROM Prebid Adaptor +description: iPROM Prebid Adapter biddercode: iprom media_types: banner pbjs: true +pbs: false +gvl_id: 811 +tcfeu_supported: true +usp_supported: false +dsa_supported: false +coppa_supported: false +gpp_sids: none +schain_supported: true +dchain_supported: false +userId: none enable_download: true +safeframes_ok: false +deals_supported: false +floors_supported: false +fpd_supported: true +prebid_member: false +ortb_blocking_supported: false +privacy_sandbox: no sidebarType: 1 --- -### Prebid Server Note +## Prebid Server Note For registration with our bidder please see our website at [www.iprom.eu](https://www.iprom.eu) or contact us at . -### Bid Params +## First Party Data + +iPROM supports first-party data (`ortb2`) and SupplyChain (`schain`) objects. +In legacy mode, `schain` is sent separately and the remaining `ortb2` data is passed as `firstPartyData`. +In ORTB mode, the adapter builds an OpenRTB request from the available Prebid request data. + +## Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|-------------|----------|--------------------------------|---------|-----------| -| `id` | required | The site ID from iPROM. | '1234' | string | -| `dimension` | required | iPROM specific bidding zone. | '300x250' | string | + +| Name | Scope | Description | Example | Type | +|-------------|----------|-------------------------------------------------------------------------------|-----------------------------------------|---------| +| `id` | required | The site ID from iPROM. | `'1234'` | string | +| `dimension` | optional | iPROM-specific bidding zone. Comma-separated if multiple values are provided. | `'300x250'` | string | +| `endpoint` | optional | A different HTTPS endpoint to use for bid responses. | `'https://core.iprom.net/programmatic'` | string | +| `ortb` | optional | Whether the request payload should be constructed using the OpenRTB format. | `true` | boolean | From 4d90dde6b07ddce1b966d34ff60f14bbdb29c425 Mon Sep 17 00:00:00 2001 From: SmartHubSolutions <87376145+SmartHubSolutions@users.noreply.github.com> Date: Thu, 16 Apr 2026 15:21:07 +0300 Subject: [PATCH 551/665] Attekmi: add PBS to Amcom (#6357) Co-authored-by: Victor --- dev-docs/bidders/amcom.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/bidders/amcom.md b/dev-docs/bidders/amcom.md index 5db785a20f..e80083e0f4 100644 --- a/dev-docs/bidders/amcom.md +++ b/dev-docs/bidders/amcom.md @@ -14,7 +14,7 @@ deals_supported: true floors_supported: true fpd_supported: false pbjs: true -pbs: false +pbs: true pbs_app_supported: true multiformat_supported: will-bid-on-any --- From de62968e29311e7272cb6d04de8560e15dcb5383 Mon Sep 17 00:00:00 2001 From: Demetrio Girardi Date: Thu, 16 Apr 2026 05:26:51 -0700 Subject: [PATCH 552/665] Update GAM video tutorial to explain local cache (#6527) * local cache tutorial * lint --- dev-docs/modules/dfp_video.md | 8 ++- dev-docs/show-video-with-a-dfp-video-tag.md | 78 ++++++++++++++++++--- 2 files changed, 72 insertions(+), 14 deletions(-) diff --git a/dev-docs/modules/dfp_video.md b/dev-docs/modules/dfp_video.md index 9b577f06c7..2ea4b4d631 100644 --- a/dev-docs/modules/dfp_video.md +++ b/dev-docs/modules/dfp_video.md @@ -3,7 +3,7 @@ layout: page_v2 page_type: module title: Module - Google Ad Manager Video description: Required for serving instream video through Google Ad Manager. -module_code : dfpAdServerVideo +module_code : gamAdServerVideo display_name : Google Ad Manager Video Support enable_download : true vendor_specific: true @@ -11,7 +11,6 @@ sidebarType : 1 --- - # Google Ad Manager Video {:.no_toc} @@ -27,7 +26,10 @@ The standard options: ## Step 2: Integrate into your prebid.js configuration -The method exposes the [`pbjs.adServers.dfp.buildVideoUrl`]({{site.baseurl}}/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.html) method to use. For an example, see the DFP video guide linked below. +This module exposes the following methods: + +- [`pbjs.adServers.gam.buildVideoUrl`](/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.html) +- [`pbjs.adServers.gam.getVastXml`](/dev-docs/publisher-api-reference/adServers.dfp.getVastXml.html) # Further Reading diff --git a/dev-docs/show-video-with-a-dfp-video-tag.md b/dev-docs/show-video-with-a-dfp-video-tag.md index 36f72fc8ae..b7eba0fbfd 100644 --- a/dev-docs/show-video-with-a-dfp-video-tag.md +++ b/dev-docs/show-video-with-a-dfp-video-tag.md @@ -29,13 +29,13 @@ The code example below was built using the following libraries: Also, you need to make sure to build Prebid.js with: * Support for at least one video-enabled bidder -* Support for the `dfpAdServerVideo` ad server adapter, which will provide the video ad support +* Support for the `gamAdServerVideo` ad server adapter, which will provide the video ad support For example, to build with the AppNexus bidder adapter and the Google Ad Manager Video ad server adapter, use the following command: ```bash -gulp build --modules=dfpAdServerVideo,appnexusBidAdapter +gulp build --modules=gamAdServerVideo,appnexusBidAdapter ``` For more information about how to build with modules, see the [Prebid.js project README](https://github.com/prebid/Prebid.js/blob/master/README.md#build-optimization). @@ -82,8 +82,7 @@ For full details on video ad unit parameters, see [Ad Unit Reference for Video]( By default, Prebid.js caps all CPMs at $20. As a video seller, you may expect to see CPMs over $20. In order to receive those bids, you'll need to implement custom price buckets setting the [priceGranularity](/dev-docs/publisher-api-reference/setConfig.html#setConfig-Price-Granularity) object in the `setConfig` method. -For instructions and sample code, see [Custom Price Granularity Buckets -](/dev-docs/examples/custom-price-buckets.html). +For instructions and sample code, see [Custom Price Granularity Buckets](/dev-docs/examples/custom-price-buckets.html). ### 3. Request bids, build video URL @@ -91,7 +90,7 @@ Next, we need to do the standard Prebid "add ad units and request bids" dance. In the example below, our callback builds the video URL the player needs using the `buildVideoUrl` method from the Google Ad Manager ad server module that we built into our copy of Prebid.js in the **Prerequisites** section. -For more information, see the API documentation for [pbjs.adServers.dfp.buildVideoUrl](/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.html). Understanding the arguments to this method is *especially* important if you plan to pass any custom parameters to Google Ad Manager. The `params` key in the argument to `buildVideoUrl` supports all parameters from the [Google Ad Manager API](https://support.google.com/admanager/answer/1068325). +For more information, see the API documentation for [pbjs.adServers.gam.buildVideoUrl](/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.html). Understanding the arguments to this method is *especially* important if you plan to pass any custom parameters to Google Ad Manager. The `params` key in the argument to `buildVideoUrl` supports all parameters from the [Google Ad Manager API](https://support.google.com/admanager/answer/1068325). ```javascript pbjs.que.push(function() { @@ -106,7 +105,7 @@ pbjs.que.push(function() { pbjs.requestBids({ bidsBackHandler: function(bids) { - var videoUrl = pbjs.adServers.dfp.buildVideoUrl({ + var videoUrl = pbjs.adServers.gam.buildVideoUrl({ adUnit: videoAdUnit, params: { iu: '/19968336/prebid_cache_video_adunit' @@ -120,12 +119,12 @@ pbjs.que.push(function() { #### Notes on Prebid Cache -The VAST XML has to be cached somewhere because most video players can only work with a URL that returns VAST XML, not VAST directly. Some bidders cache the VAST XML on the server side, while others depend on Prebid.js to perform the caching. +The VAST XML is typically cached somewhere because GAM expects a URL that returns VAST XML, not a VAST document directly (but see [using the local cache](#local-cache)). Some bidders cache the VAST XML on the server side, while others depend on Prebid.js to perform the caching. * In general, video-enabled bidders must supply `bid.videoCacheKey`, `bid.vastXml`, or `bid.vastUrl` on their responses, and can provide any combination of the three. -* If `pbjs.setConfig({cache: {URL}})` isn't set and the bidder supplies only `bid.vastXml` in its bid response, [`pbjs.adServers.dfp.buildVideoUrl`](/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.html) will not be able to generate a videoCacheKey, and it will be dropped from the auction. +* If `pbjs.setConfig({cache: {URL}})` isn't set and the bidder supplies only `bid.vastXml` in its bid response, [`pbjs.adServers.gam.buildVideoUrl`](/dev-docs/publisher-api-reference/adServers.gam.buildVideoUrl.html) will not be able to generate a videoCacheKey, and it will be dropped from the auction. * If `pbjs.setConfig({cache: {URL}})` is defined and the bidder responds with `bid.videoCacheKey`, Prebid.js will not re-cache the VAST XML. -* If `options.url` is passed as an argument to [`pbjs.adServers.dfp.buildVideoUrl`](/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.html): +* If `options.url` is passed as an argument to [`pbjs.adServers.gam.buildVideoUrl`](/dev-docs/publisher-api-reference/adServers.gam.buildVideoUrl.html): * If Prebid Cache is disabled, Prebid sets `description_url` field to the bid response's `bid.vastUrl`. * If Prebid Cache is enabled, Prebid sets `description_url` field to the cache URL. @@ -136,7 +135,7 @@ Display banners are rendered with the help of the renderAd function. This functi ```javascript pbjs.requestBids({ bidsBackHandler: function(bids) { - var videoUrl = pbjs.adServers.dfp.buildVideoUrl({ + var videoUrl = pbjs.adServers.gam.buildVideoUrl({ adUnit: videoAdUnit, params: { iu: '/19968336/prebid_cache_video_adunit' @@ -145,7 +144,7 @@ pbjs.requestBids({ // Mark the bid, used in buildVideoUrl, as used pbjs.markWinningBidAsUsed({ - adUnitCode: videoAdUnit.code // optional if you know the adId + adUnitCode: videoAdUnit.code, // optional if you know the adId adId: bid.adId // optional }); @@ -189,6 +188,63 @@ In the body of the page, the following HTML and JS will show the ad: If you have [set up your ad server line items and creatives correctly]({{site.baseurl}}/adops/setting-up-prebid-video-in-dfp.html), you should see an instream pre-roll video ad followed by the oceans video from the [video.js homepage](https://videojs.com/). + + +### 5. Using the local cache + +Since version 10.23 it is possible to work around GAM's requirement for a cached VAST URL by using a combination of [client side caching](/dev-docs/publisher-api-reference/setConfig.html#client-side-caching-of-vast-xml) and [`getVastXml`](/dev-docs/publisher-api-reference/adServers.gam.getVastXml.html). This uses the same setup described above, except that the cache is set to local: + +```javascript +pbjs.setConfig({ + cache: { + useLocal: true + } +}); +``` + +And passing a VAST document directly to the player (instead of an ad tag URL). Using VideoJS: + +```javascript + function invokeVideoPlayer() { + videojs("vid1").ready(function() { + this.vastClient({ + adTagXml: function(callback) { + pbjs.adServers.gam.getVastXml({ + adUnit: videoAdUnit, + params: { + iu: '/19968336/prebid_cache_video_adunit' + } + }).then(function(vastXml) { + callback(null, vastXml); + }) + }, + playAdAlways: true, + verbosity: 0, + vpaidFlashLoaderPath: "https://github.com/MailOnline/videojs-vast-vpaid/blob/RELEASE/bin/VPAIDFlash.swf?raw=true", + autoplay: true + }); + this.muted(true); + this.play(); + }); + } +``` + +See [below](#examples) for more examples. + +The way this works is: + +* when Prebid receives a video bid, it stores its VAST document in the browser as a [blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob), and updates its `.videoCacheKey` with the ID of that blob; +* `getVastXml` first makes a request to GAM (using the URL returned by `getVideoUrl`); +* If a Prebid bid wins the GAM auction (and the line items are set up as described in [GAM Step by Step - Video Creatives](/adops/setting-up-prebid-video-in-dfp.md)), the response will contain a VAST URL with a cache key that matches a blob ID; +* `getVastXml` scans the response for such URLs, and replaces them with an inlined copy of the matching VAST XML from blob storage. + +This means that you can migrate an existing setup using a 3rd party cache service to local caching without any changes in GAM (the VAST URLs in GAM creatives are ignored except for the cache key portion). + +{: .alert.alert-warning :} +Video players often add signals to the GAM ad tag URL. They cannot do this when using `getVastXml`, as there is no URL to augment. This can impact the GAM auction; in practice, this means that using client-side caching will likely result in lower AdX demand. + + + ## Working Examples **Note:** Prebid video is designed to work across devices and browsers. This demo has been developed and tested only for Chrome desktop, Firefox desktop, and Chrome Android; additional device/browser support is planned to be added at a later date. From f6435166a69765d1de6600fbcdeb9a4091318ee4 Mon Sep 17 00:00:00 2001 From: Miguel Date: Fri, 17 Apr 2026 01:05:47 -0700 Subject: [PATCH 553/665] Adds agentic audiences module docs (#6518) * adds agentic audiences module docs * documents aa object and gvl mapping * fixes lint error --------- Co-authored-by: Miguel Morales --- dev-docs/modules/agenticAudienceAdapter.md | 152 +++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 dev-docs/modules/agenticAudienceAdapter.md diff --git a/dev-docs/modules/agenticAudienceAdapter.md b/dev-docs/modules/agenticAudienceAdapter.md new file mode 100644 index 0000000000..c4355c526c --- /dev/null +++ b/dev-docs/modules/agenticAudienceAdapter.md @@ -0,0 +1,152 @@ +--- +layout: page_v2 +title: Agentic Audiences Real-Time Data Module +display_name: Agentic Audiences RTD +description: Injects Agentic Audiences embedding signals from browser storage into OpenRTB bid requests +page_type: module +module_type: rtd +module_code: agenticAudienceAdapter +enable_download: true +sidebarType: 1 +--- + +# Agentic Audiences Real-Time Data Module + +## Overview + +This Real-Time Data (RTD) submodule reads **Agentic Audiences** embedding data from browser storage (localStorage, with cookie fallback) and merges it into the outbound bid request via `ortb2Fragments.global`. It follows the community extension [**Agentic Audiences in OpenRTB**](https://github.com/InteractiveAdvertisingBureau/openrtb/blob/main/extensions/community_extensions/agentic-audiences.md) (see [IAB Tech Lab — Agentic Audiences](https://iabtechlab.com/standards/agentic-audiences/) and the [reference repository](https://github.com/IABTechLab/agentic-audiences)). + +The module injects **one** OpenRTB `Data` object under `user.data`: `name` is always the submodule id `agenticAudience`, and `segment` is built from the stored `entries` array. Embedding fields from each stored entry are placed under **`segment.ext.aa`** (`ver`, `vector`, `dimension`, `model`, `type`); optional `id` and `name` on the segment come from the stored entry when present. Fields are copied **without validation or coercion**. + +Implementation reference: [Prebid.js PR #14626](https://github.com/prebid/Prebid.js/pull/14626). + +## Integration + +1. Build the module into your Prebid.js bundle. The parent [**rtdModule**](/dev-docs/publisher-api-reference/setConfig.html#setConfig-realTimeData) is required. `agenticAudienceAdapter` is listed in `modules/.submodules.json`, so builds that include only `agenticAudienceAdapter` still pull in `rtdModule`: + + ```bash + gulp build --modules=rtdModule,agenticAudienceAdapter,... + ``` + +2. Register the data provider with `pbjs.setConfig({ realTimeData: ... })` as shown below. + +### Configuration + +```javascript +pbjs.setConfig({ + realTimeData: { + auctionDelay: 300, + dataProviders: [{ + name: 'agenticAudience', + waitForIt: true, + params: { + storageKey: '_my_agentic_audience_' // optional; see below + } + }] + } +}); +``` + +Use **`name: 'agenticAudience'`** in `realTimeData.dataProviders[]` so the RTD core loads this submodule. Other fields such as `auctionDelay` and `waitForIt` are generic RTD behavior; see [Publisher Real-Time Data Configuration](/dev-docs/publisher-api-reference/setConfig.html#setConfig-realTimeData). + +### Parameters under `params` + +{: .table .table-bordered .table-striped } + +| Parameter | Type | Description | +| :-- | :-- | :-- | +| `storageKey` | string | Optional. Key used for `localStorage` and, if nothing is found there, for the cookie API. If omitted or an empty string, the module uses the default key **`_agentic_audience_`** (exported as `DEFAULT_STORAGE_KEY` in the module source). | + +`init` always returns success; if storage is missing, invalid, or has no mappable segments, the module simply does not merge `user` into `ortb2Fragments.global`. + +## Storage format + +The value at the resolved storage key must be a **string**: Base64-encoded JSON (`atob` + `JSON.parse`). The parsed object must include an **`entries`** array. Each element should be a plain object; the module maps it to an OpenRTB segment as follows: + +- `id`, `name` → segment `id`, `name` (optional; may be undefined if absent in storage) +- `ver`, `vector`, `dimension`, `model`, `type` → `segment.ext.aa.*` (passed through as-is; no normalization) + +Invalid Base64/JSON or a missing/non-array `entries` field results in no injection. + +## OpenRTB output shape + +When at least one segment is produced, the module **`mergeDeep`s** into `reqBidsConfigObj.ortb2Fragments.global` approximately: + +```json +{ + "user": { + "data": [ + { + "name": "agenticAudience", + "segment": [ + { + "id": "seg-1", + "name": "identity-contextual", + "ext": { + "aa": { + "ver": "1.0.0", + "vector": "", + "dimension": 10, + "model": "sbert-mini-ctx-001", + "type": [1, 2] + } + } + } + ] + } + ] + } +} +``` + +Downstream consumers should expect the **`ext.aa`** object as emitted by this submodule (see the [OpenRTB community extension](https://github.com/InteractiveAdvertisingBureau/openrtb/blob/main/extensions/community_extensions/agentic-audiences.md) for semantic definitions of the embedding fields). + +## Privacy / storage access + +Reads go through Prebid’s **storage manager** for the RTD module type and submodule name `agenticAudience`, so access respects the same activity and consent controls as other RTD submodules in your build. + +### TCF: `gvlMapping` for `agenticAudience` + +If you use [TCF Control](/dev-docs/modules/tcfControl.html) (or related GDPR consent settings) and the submodule is treated as an unknown vendor, map the **submodule name** `agenticAudience` to the correct **IAB Global Vendor List (GVL) ID** for the party whose storage or data processing applies (for example, the embedding provider). Use the real integer from the GVL instead of placeholders. + +`gvlMapping` only: + +```javascript +pbjs.setConfig({ + gvlMapping: { + agenticAudience: XXX, + }, +}); +``` + +(`XXX` stands in for your vendor’s numeric GVL ID.) + +Together with `realTimeData` (same `setConfig` call or a later one; Prebid merges top-level keys): + +```javascript +pbjs.setConfig({ + gvlMapping: { + agenticAudience: 123, // example only — use your vendor’s GVL ID + }, + realTimeData: { + dataProviders: [{ name: 'agenticAudience', params: {} }], + }, +}); +``` + +See the [`gvlMapping` note](/dev-docs/modules/tcfControl.html) on the TCF Control module page for general behavior. + +## Testing + +From the Prebid.js repository: + +```bash +npm test -- --file test/spec/modules/agenticAudienceAdapter_spec.js +``` + +## References + +- [Agentic Audiences in OpenRTB (community extension)](https://github.com/InteractiveAdvertisingBureau/openrtb/blob/main/extensions/community_extensions/agentic-audiences.md) +- [Agentic Audiences | IAB Tech Lab](https://iabtechlab.com/standards/agentic-audiences/) +- [IABTechLab / agentic-audiences (GitHub)](https://github.com/IABTechLab/agentic-audiences) +- [Prebid.js PR #14626 — Agentic Audiences RTD](https://github.com/prebid/Prebid.js/pull/14626) From 5a08d3eaf3b2db4dd42f67a79a75176500e059b9 Mon Sep 17 00:00:00 2001 From: Demetrio Girardi Date: Fri, 17 Apr 2026 01:06:36 -0700 Subject: [PATCH 554/665] Update references to dfpAdServerVideo to use gamAdServerVideo instead (#6529) * Update dfp -> gam * lint --- _includes/video/head.html | 2 +- assets/js/video/pb-is-jw-01.js | 2 +- assets/js/video/pb-ve-jwplayer-platform-h.js | 2 +- dev-docs/examples/instream-banner-mix.md | 4 +- dev-docs/modules/dfp_video.md | 4 +- dev-docs/modules/konduit.md | 2 +- .../bc/bc-prebid-plugin-prebid-options.md | 2 +- .../cross-player-config.md | 2 +- .../adServers.dfp.buildVideoUrl.md | 77 +---------------- .../adServers.gam.buildVideoUrl.md | 84 +++++++++++++++++++ dev-docs/show-video-with-a-dfp-video-tag.md | 2 +- prebid-video/video-getting-started.md | 2 +- 12 files changed, 98 insertions(+), 87 deletions(-) create mode 100644 dev-docs/publisher-api-reference/adServers.gam.buildVideoUrl.md diff --git a/_includes/video/head.html b/_includes/video/head.html index 069581a519..4db1051913 100644 --- a/_includes/video/head.html +++ b/_includes/video/head.html @@ -54,7 +54,7 @@ pbjs.requestBids({ bidsBackHandler: function(bids) { - var videoUrl = pbjs.adServers.dfp.buildVideoUrl({ + var videoUrl = pbjs.adServers.gam.buildVideoUrl({ adUnit: videoAdUnit, params: { iu: '/19968336/prebid_cache_video_adunit', diff --git a/assets/js/video/pb-is-jw-01.js b/assets/js/video/pb-is-jw-01.js index ec05dfcb8f..34dc298029 100644 --- a/assets/js/video/pb-is-jw-01.js +++ b/assets/js/video/pb-is-jw-01.js @@ -42,7 +42,7 @@ pbjs.que.push(function(){ pbjs.requestBids({ bidsBackHandler: function(bids) { - var videoUrl = pbjs.adServers.dfp.buildVideoUrl({ + var videoUrl = pbjs.adServers.gam.buildVideoUrl({ adUnit: videoAdUnit, params: { iu: '/19968336/prebid_cache_video_adunit', diff --git a/assets/js/video/pb-ve-jwplayer-platform-h.js b/assets/js/video/pb-ve-jwplayer-platform-h.js index eed52dd020..299e2d4684 100644 --- a/assets/js/video/pb-ve-jwplayer-platform-h.js +++ b/assets/js/video/pb-ve-jwplayer-platform-h.js @@ -41,7 +41,7 @@ function loadVideoData() { pbjs.requestBids({ bidsBackHandler: function(bids) { - var videoUrl = pbjs.adServers.dfp.buildVideoUrl({ + var videoUrl = pbjs.adServers.gam.buildVideoUrl({ adUnit: videoAdUnit, params: { iu: '/19968336/prebid_cache_video_adunit', diff --git a/dev-docs/examples/instream-banner-mix.md b/dev-docs/examples/instream-banner-mix.md index a099bc3f42..57753efcf1 100644 --- a/dev-docs/examples/instream-banner-mix.md +++ b/dev-docs/examples/instream-banner-mix.md @@ -187,8 +187,8 @@ function initAdserver(bids) { } }); - // Build DFP URL with targeting for videoAdUnit - var videoUrl = pbjs.adServers.dfp.buildVideoUrl({ + // Build GAM URL with targeting for videoAdUnit + var videoUrl = pbjs.adServers.gam.buildVideoUrl({ adUnit: videoAdUnit, params: { iu: '/19968336/prebid_cache_video_adunit', diff --git a/dev-docs/modules/dfp_video.md b/dev-docs/modules/dfp_video.md index 2ea4b4d631..60b16d3e8f 100644 --- a/dev-docs/modules/dfp_video.md +++ b/dev-docs/modules/dfp_video.md @@ -28,8 +28,8 @@ The standard options: This module exposes the following methods: -- [`pbjs.adServers.gam.buildVideoUrl`](/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.html) -- [`pbjs.adServers.gam.getVastXml`](/dev-docs/publisher-api-reference/adServers.dfp.getVastXml.html) +- [`pbjs.adServers.gam.buildVideoUrl`](/dev-docs/publisher-api-reference/adServers.gam.buildVideoUrl.html) +- [`pbjs.adServers.gam.getVastXml`](/dev-docs/publisher-api-reference/adServers.gam.getVastXml.html) # Further Reading diff --git a/dev-docs/modules/konduit.md b/dev-docs/modules/konduit.md index 811753be93..e798acf5e1 100644 --- a/dev-docs/modules/konduit.md +++ b/dev-docs/modules/konduit.md @@ -110,7 +110,7 @@ pbjs.que.push(function() { adUnitCode: videoAdUnit[0].code, timeout: 1500, callback: function (error, bids) { - var videoUrl = pbjs.adServers.dfp.buildVideoUrl({ + var videoUrl = pbjs.adServers.gam.buildVideoUrl({ ... }); ​ diff --git a/dev-docs/plugins/bc/bc-prebid-plugin-prebid-options.md b/dev-docs/plugins/bc/bc-prebid-plugin-prebid-options.md index 5380e3a9be..0c28b7e060 100644 --- a/dev-docs/plugins/bc/bc-prebid-plugin-prebid-options.md +++ b/dev-docs/plugins/bc/bc-prebid-plugin-prebid-options.md @@ -325,7 +325,7 @@ None Parameters used when using Google Ad Manager as the ad server. -See prebid.org documentation for [buildVideoUrl](/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.html) +See prebid.org documentation for [buildVideoUrl](/dev-docs/publisher-api-reference/adServers.gam.buildVideoUrl.html) **Acceptable Values:** diff --git a/dev-docs/plugins/cross-player-prebid-component/cross-player-config.md b/dev-docs/plugins/cross-player-prebid-component/cross-player-config.md index 2e6418c867..ee65cff4a8 100644 --- a/dev-docs/plugins/cross-player-prebid-component/cross-player-config.md +++ b/dev-docs/plugins/cross-player-prebid-component/cross-player-config.md @@ -209,7 +209,7 @@ None Parameters used when using Google Ad Manager (formerly DFP) as the ad server. -See documentation for [buildVideoUrl](/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.html) for more information. +See documentation for [buildVideoUrl](/dev-docs/publisher-api-reference/adServers.gam.buildVideoUrl.html) for more information. **Acceptable Values:** diff --git a/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.md b/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.md index 6c8ccae331..0a98367501 100644 --- a/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.md +++ b/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.md @@ -5,80 +5,7 @@ description: adServers.dfp.buildVideoUrl API sidebarType: 1 --- +See [adServers.gam.buildVideoUrl](/dev-docs/publisher-api-reference/adServers.gam.buildVideoUrl.html). {: .alert.alert-info :} -The Google Ad Manager implementation of this function requires including the `dfpAdServerVideo` module in your Prebid.js build. - -This method combines publisher-provided parameters with Prebid.js targeting parameters to build a Google Ad Manager video ad tag URL that can be used by a video player. - -#### Argument Reference - -##### The `options` object - -{: .table .table-bordered .table-striped } -| Field | Type | Description | -|----------+--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `adUnit` | object | *Required*. The Prebid ad unit to which the returned URL will map. | -| `params` | object | *Optional*. Querystring parameters that will be used to construct the Google Ad Manager video ad tag URL. Publisher-supplied values will override values set by Prebid.js. See below for fields. | -| `url` | string | *Optional*. The video ad server URL. When given alongside params, the parsed URL will be overwritten with any matching components of params. | -| `bid` | object | *Optional*. The Prebid bid for which targeting will be set. If this is not defined, Prebid will use the bid with the highest CPM for the adUnit. | - -{: .alert.alert-warning :} -One or both of options.params and options.url is required. In other words, you may pass in one, the other, or both, but not neither. - -##### The `options.params` object - -{: .table .table-bordered .table-striped } -| Field | Type | Description | Example | -|-------------------+--------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------| -| `iu` | string | *Required*. Google Ad Manager ad unit ID. | `/19968336/prebid_cache_video_adunit` | -| `cust_params` | object | *Optional*. Key-value pairs merged with Prebid's targeting values and sent to Google Ad Manager on the video ad tag URL. | `{section: "blog", anotherKey: "anotherValue"}` | -| `description_url` | string | *Optional*. Describes the video. Required for Ad Exchange. Prebid.js will build this for you unless you pass it explicitly. | `https://www.example.com` | - -For more information on any of these params, see [the Google Ad Manager video tag documentation](https://support.google.com/admanager/answer/1068325). - -#### Examples - -There are several different ways to build up your video URL, as shown in the examples below: - -Using `options.params` only: - -```javascript -pbjs.requestBids({ - bidsBackHandler: function(bids) { - var videoUrl = pbjs.adServers.dfp.buildVideoUrl({ - adUnit: videoAdUnit, - params: { - iu: '/19968336/prebid_cache_video_adunit', - cust_params: { - section: "blog", - anotherKey: "anotherValue" - }, - hl: "en", - output: "xml_vast2", - url: "https://www.example.com", - } - }); - invokeVideoPlayer(videoUrl); - } -}); -``` - -Using `options.url` only: - -```javascript -var adserverTag = 'https://pubads.g.doubleclick.net/gampad/ads?' -+ 'sz=640x480&iu=/19968336/prebid_cache_video_adunit&impl=s&gdfp_req=1' -+ '&env=vp&output=xml_vast2&unviewed_position_start=1&hl=en&url=https://www.example.com' -+ '&cust_params=section%3Dblog%26anotherKey%3DanotherValue'; - -var videoUrl = pbjs.adServers.dfp.buildVideoUrl({ - adUnit: videoAdUnit, - url: adserverTag -}); -``` - - - -{: .alert.alert-warning :} -In the event of collisions, querystring values passed via `options.params` take precedence over those passed via `options.url`. +In Prebid 10, the `dfpAdServerVideo` module and the `adServers.dfp.buildVideoUrl` API were renamed to `gamAdServerVideo` and `adServers.gam.buildVideoUrl` respectively.** diff --git a/dev-docs/publisher-api-reference/adServers.gam.buildVideoUrl.md b/dev-docs/publisher-api-reference/adServers.gam.buildVideoUrl.md new file mode 100644 index 0000000000..a071056949 --- /dev/null +++ b/dev-docs/publisher-api-reference/adServers.gam.buildVideoUrl.md @@ -0,0 +1,84 @@ +--- +layout: api_prebidjs +title: pbjs.adServers.gam.buildVideoUrl(options) +description: adServers.gam.buildVideoUrl API +sidebarType: 1 +--- + + +{: .alert.alert-info :} +The Google Ad Manager implementation of this function requires including the `gamAdServerVideo` module in your Prebid.js build. + +This method combines publisher-provided parameters with Prebid.js targeting parameters to build a Google Ad Manager video ad tag URL that can be used by a video player. + +## Argument Reference + +### The `options` object + +{: .table .table-bordered .table-striped } +| Field | Type | Description | +|----------+--------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `adUnit` | object | *Required*. The Prebid ad unit to which the returned URL will map. | +| `params` | object | *Optional*. Querystring parameters that will be used to construct the Google Ad Manager video ad tag URL. Publisher-supplied values will override values set by Prebid.js. See below for fields. | +| `url` | string | *Optional*. The video ad server URL. When given alongside params, the parsed URL will be overwritten with any matching components of params. | +| `bid` | object | *Optional*. The Prebid bid for which targeting will be set. If this is not defined, Prebid will use the bid with the highest CPM for the adUnit. | + +{: .alert.alert-warning :} +One or both of options.params and options.url is required. In other words, you may pass in one, the other, or both, but not neither. + +### The `options.params` object + +{: .table .table-bordered .table-striped } +| Field | Type | Description | Example | +|-------------------+--------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------| +| `iu` | string | *Required*. Google Ad Manager ad unit ID. | `/19968336/prebid_cache_video_adunit` | +| `cust_params` | object | *Optional*. Key-value pairs merged with Prebid's targeting values and sent to Google Ad Manager on the video ad tag URL. | `{section: "blog", anotherKey: "anotherValue"}` | +| `description_url` | string | *Optional*. Describes the video. Required for Ad Exchange. Prebid.js will build this for you unless you pass it explicitly. | `https://www.example.com` | + +For more information on any of these params, see [the Google Ad Manager video tag documentation](https://support.google.com/admanager/answer/1068325). + +## Examples + +There are several different ways to build up your video URL, as shown in the examples below: + +Using `options.params` only: + +```javascript +pbjs.requestBids({ + bidsBackHandler: function(bids) { + var videoUrl = pbjs.adServers.gam.buildVideoUrl({ + adUnit: videoAdUnit, + params: { + iu: '/19968336/prebid_cache_video_adunit', + cust_params: { + section: "blog", + anotherKey: "anotherValue" + }, + hl: "en", + output: "xml_vast2", + url: "https://www.example.com", + } + }); + invokeVideoPlayer(videoUrl); + } +}); +``` + +Using `options.url` only: + +```javascript +var adserverTag = 'https://pubads.g.doubleclick.net/gampad/ads?' ++ 'sz=640x480&iu=/19968336/prebid_cache_video_adunit&impl=s&gdfp_req=1' ++ '&env=vp&output=xml_vast2&unviewed_position_start=1&hl=en&url=https://www.example.com' ++ '&cust_params=section%3Dblog%26anotherKey%3DanotherValue'; + +var videoUrl = pbjs.adServers.gam.buildVideoUrl({ + adUnit: videoAdUnit, + url: adserverTag +}); +``` + + + +{: .alert.alert-warning :} +In the event of collisions, querystring values passed via `options.params` take precedence over those passed via `options.url`. diff --git a/dev-docs/show-video-with-a-dfp-video-tag.md b/dev-docs/show-video-with-a-dfp-video-tag.md index b7eba0fbfd..ad9adde953 100644 --- a/dev-docs/show-video-with-a-dfp-video-tag.md +++ b/dev-docs/show-video-with-a-dfp-video-tag.md @@ -90,7 +90,7 @@ Next, we need to do the standard Prebid "add ad units and request bids" dance. In the example below, our callback builds the video URL the player needs using the `buildVideoUrl` method from the Google Ad Manager ad server module that we built into our copy of Prebid.js in the **Prerequisites** section. -For more information, see the API documentation for [pbjs.adServers.gam.buildVideoUrl](/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.html). Understanding the arguments to this method is *especially* important if you plan to pass any custom parameters to Google Ad Manager. The `params` key in the argument to `buildVideoUrl` supports all parameters from the [Google Ad Manager API](https://support.google.com/admanager/answer/1068325). +For more information, see the API documentation for [pbjs.adServers.gam.buildVideoUrl](/dev-docs/publisher-api-reference/adServers.gam.buildVideoUrl.html). Understanding the arguments to this method is *especially* important if you plan to pass any custom parameters to Google Ad Manager. The `params` key in the argument to `buildVideoUrl` supports all parameters from the [Google Ad Manager API](https://support.google.com/admanager/answer/1068325). ```javascript pbjs.que.push(function() { diff --git a/prebid-video/video-getting-started.md b/prebid-video/video-getting-started.md index 805ff45123..e28cf9701e 100644 --- a/prebid-video/video-getting-started.md +++ b/prebid-video/video-getting-started.md @@ -57,7 +57,7 @@ If you already have a Prebid integration for banner, you don’t need to do anyt Your first step to implementing header bidding for video is to [download Prebid.js](/download.html). Before downloading, select the adapters you want to include. (You can add more adapters later.) - Include at least one bid adapter that supports video. Find a list of eligible adapters in [the video bidders table](/dev-docs/bidders.html#bidder-video-native). -- If Google Ad Manager is your ad server, you must include the [Google Ad Manager Video module](/dev-docs/publisher-api-reference/adServers.dfp.buildVideoUrl.html). +- If Google Ad Manager is your ad server, you must include the [Google Ad Manager Video module](/dev-docs/publisher-api-reference/adServers.gam.buildVideoUrl.html). - If you’ll be integrating with Prebid Server, be sure to include “Prebid Server” in the list of adapters. ### How to integrate From 2d9633aa65ee68a4a279db5d6415c1a90d7c2fb5 Mon Sep 17 00:00:00 2001 From: teqblaze <162988436+teqblaze@users.noreply.github.com> Date: Tue, 21 Apr 2026 08:10:59 +0300 Subject: [PATCH 555/665] New adapter: MyCodeMedia (#6488) * mycodemedia/prebid.github.io * MyCodeMedia Adapter: disable pbs and pbs_app_supported * MyCodeMedia adapter: Enable pbs and pbs_app_supported * MyCodeMedia adapter: Enable pbs and pbs_app_supported --------- Co-authored-by: MyCodeMedia Co-authored-by: mc-pacobernal <119521439+mc-pacobernal@users.noreply.github.com> --- dev-docs/bidders/mycodemedia.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-docs/bidders/mycodemedia.md b/dev-docs/bidders/mycodemedia.md index 6ee7156e87..ac3906834a 100644 --- a/dev-docs/bidders/mycodemedia.md +++ b/dev-docs/bidders/mycodemedia.md @@ -16,8 +16,8 @@ media_types: banner, video, native multiformat_supported: will-bid-on-one userIds: all pbjs: true -pbs: false -pbs_app_supported: false +pbs: true +pbs_app_supported: true safeframes_ok: true sidebarType: 1 --- From 999eb55664bc31668ba627dcd01403d7f1c2998b Mon Sep 17 00:00:00 2001 From: driftpixelai <166716541+driftpixelai@users.noreply.github.com> Date: Tue, 21 Apr 2026 08:11:15 +0300 Subject: [PATCH 556/665] New Adapter: DPAI (#6489) * New adapter DPAI * New adapter DPAI: Added end line * New adapter dpai * new DPA adapter: disable pbs and pbs_app_supported * New adapter DPAI: Enable pbs and pbs_app_supported --- dev-docs/bidders/dpai.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-docs/bidders/dpai.md b/dev-docs/bidders/dpai.md index 5ad9312893..a864ef1819 100644 --- a/dev-docs/bidders/dpai.md +++ b/dev-docs/bidders/dpai.md @@ -16,8 +16,8 @@ media_types: banner, video, native multiformat_supported: will-bid-on-one userIds: all pbjs: true -pbs: false -pbs_app_supported: false +pbs: true +pbs_app_supported: true safeframes_ok: true sidebarType: 1 --- From 0151dabca195dce9889d82e7d5a84792b9dc96ba Mon Sep 17 00:00:00 2001 From: Luca Corbo Date: Tue, 21 Apr 2026 17:34:02 +0200 Subject: [PATCH 557/665] WURFL RTD Provider: update IP retention policy in Privacy & Compliance section (#6531) * WURFL RTD Provider: update IP retention policy in Privacy & Compliance section * WURFL RTD Provider: fix MD060 table column style in docs * WURFL RTD Provider: fix MD060 table column style in docs --- dev-docs/modules/wurflRtdProvider.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dev-docs/modules/wurflRtdProvider.md b/dev-docs/modules/wurflRtdProvider.md index 77f702bba2..4721c0ea3e 100644 --- a/dev-docs/modules/wurflRtdProvider.md +++ b/dev-docs/modules/wurflRtdProvider.md @@ -90,7 +90,7 @@ While the WURFL RTD module enriches the OpenRTB 2.0 payload, SSP adapters must a ### Integration Scenarios | SSP Adapter Status | Required Adapter Changes | Required Server Changes | -|-------------------|--------------------------|-------------------------| +| ------------------ | ------------------------ | ----------------------- | | Already passing ORTB2 device to server | No changes required | Update backend logic to utilize device data | | Not currently passing device data | Update adapter to read `device` and/or `device.ext.wurfl` and pass to endpoint | Update backend logic to utilize device data | | No Bidder Adapter exists | Implement Prebid.js adapter to read and pass `device` and/or `device.ext.wurfl` | Implement endpoint logic to read and utilize data | @@ -124,7 +124,7 @@ pbjs.setConfig({ {: .table .table-bordered .table-striped } | Name | Type | Description | Default | -|------|------|-------------|---------| +| ---- | ---- | ----------- | ------- | | `name` | String | Real time data module name | Always 'wurfl' | | `params` | Object | Configuration parameters | | | `params.altHost` | String | Alternate host to connect to WURFL.js | | @@ -266,6 +266,6 @@ The WURFL RTD module processes minimal personal data under legitimate interest f * Device detection uses only HTTP headers (User-Agent, Client Hints) * No user tracking or cross-site identification -* IP addresses processed transiently for service delivery only +* IP addresses are retained for up to 36 months for fraud detection and invalid traffic prevention, then permanently redacted. They are not used for user identification or behavioral profiling. For questions or support, visit [ScientiaMobile Support](https://support.scientiamobile.com). From f866c278d10f643bf1ae9d0ddb85137074fdbeb1 Mon Sep 17 00:00:00 2001 From: teqblaze <162988436+teqblaze@users.noreply.github.com> Date: Tue, 21 Apr 2026 18:36:10 +0300 Subject: [PATCH 558/665] New adapter: AppMonstaMedia (#6498) * New adapter: AppMonstaMedia * style fixes --------- Co-authored-by: AppMonstaMedia <> --- dev-docs/bidders/appMonstaMedia.md | 37 ++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 dev-docs/bidders/appMonstaMedia.md diff --git a/dev-docs/bidders/appMonstaMedia.md b/dev-docs/bidders/appMonstaMedia.md new file mode 100644 index 0000000000..cae93db35a --- /dev/null +++ b/dev-docs/bidders/appMonstaMedia.md @@ -0,0 +1,37 @@ +--- +layout: bidder +title: AppMonstaMedia +description: Prebid AppMonstaMedia Bidder Adapter +biddercode: appMonstaMedia +gpp_sids: usstate_all +gvl_id: 1283 +tcfeu_supported: true +usp_supported: true +coppa_supported: true +schain_supported: true +deals_supported: false +floors_supported: true +fpd_supported: false +ortb_blocking_supported: false +media_types: banner, video, native +multiformat_supported: will-bid-on-one +userIds: all +pbjs: true +pbs: true +pbs_app_supported: true +safeframes_ok: true +sidebarType: 1 +--- + +## Bid Params + +{: .table .table-bordered .table-striped } + +| Name | Scope | Description | Example | Type | +|---------------|----------|--------------|---------------------------------|------------| +| `placementId` | optional | Placement Id | `'0'` | `'string'` | +| `endpointId` | optional | Endpoint Id | `'0'` | `'string'` | + +## Note + +For the prebid server and prebid.js you only need to use one parameter: either placementId or endpointId From 72776fade222da83d8327e2e79f7fbfa3eb04852 Mon Sep 17 00:00:00 2001 From: markappmedia Date: Wed, 22 Apr 2026 15:04:51 +0300 Subject: [PATCH 559/665] Harion: Set pbjs, pbs, pbs_app_supported to true (#6539) * new adapter harion * fix(pbs): set to false * Update dev-docs/bidders/harion.md Co-authored-by: Muki Seiler * Update dev-docs/bidders/harion.md Co-authored-by: Muki Seiler * feat(pbs): values changed * refactor(lint): removed empty line * Create SECURITY.md * Create dependabot.yml * Adapter harion: Set pbjs, pbs, pbs_app_supported to true * Adapter harion: Remove files * Harion: Fix headlines --------- Co-authored-by: Vitalii Sumlennyi Co-authored-by: Muki Seiler --- dev-docs/bidders/harion.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dev-docs/bidders/harion.md b/dev-docs/bidders/harion.md index ec8f1fd981..154878e483 100644 --- a/dev-docs/bidders/harion.md +++ b/dev-docs/bidders/harion.md @@ -15,15 +15,15 @@ ortb_blocking_supported: false media_types: banner, video, native multiformat_supported: will-bid-on-one userIds: all -pbjs: false -pbs: false -pbs_app_supported: false +pbjs: true +pbs: true +pbs_app_supported: true safeframes_ok: true sidebarType: 1 gvl_id: 1406 --- -### Bid Params +## Bid Params {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | @@ -31,6 +31,6 @@ gvl_id: 1406 | `placementId` | optional | Placement Id | `'0'` | `'string'` | | `endpointId` | optional | Endpoint Id | `'0'` | `'string'` | -### Note +## Note For the prebid server and prebid.js you only need to use one parameter: either `placementId` or `endpointId`. From e24422a8ddb1a52695132fd167e9933e3bf34ffa Mon Sep 17 00:00:00 2001 From: teqblaze <162988436+teqblaze@users.noreply.github.com> Date: Wed, 22 Apr 2026 15:06:26 +0300 Subject: [PATCH 560/665] Adsmovil: fix of the layout (#6532) * New adapter adsmovil * content file added * fixed file content * refactor(adsmovil.md): table fix * refactor(adsmovil.md): table fix * feat(layout): fixed to bidder --------- Co-authored-by: Vitalii Sumlennyi --- dev-docs/bidders/adsmovil.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/bidders/adsmovil.md b/dev-docs/bidders/adsmovil.md index aa67cf3b87..7be33c895f 100644 --- a/dev-docs/bidders/adsmovil.md +++ b/dev-docs/bidders/adsmovil.md @@ -1,5 +1,5 @@ --- -layout: adsmovil +layout: bidder title: adsmovil description: Prebid Adsmovil Adapter biddercode: adsmovil From 0236d7cdba69fe60411b638ed4efc780873a5f34 Mon Sep 17 00:00:00 2001 From: Eric Poul <31760529+EricPoul@users.noreply.github.com> Date: Wed, 22 Apr 2026 15:07:05 +0300 Subject: [PATCH 561/665] MGID: update docs to use ID placeholders (#6535) Co-authored-by: Erik Poul --- dev-docs/bidders/mgid.md | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/dev-docs/bidders/mgid.md b/dev-docs/bidders/mgid.md index f832b549a0..eea6f6d96c 100644 --- a/dev-docs/bidders/mgid.md +++ b/dev-docs/bidders/mgid.md @@ -15,7 +15,7 @@ multiformat_supported: will-bid-on-any sidebarType: 1 --- -### Table of Contents +## Table of Contents - [Table of Contents](#table-of-contents) - [Description](#description) @@ -39,7 +39,6 @@ MGID header bidding adapter connects with MGID demand sources to fetch bids for | Name | Scope | Description | Example | Type | |--------------|----------|------------------------------------|------------|----------| | `accountId` | required | The account ID from Mgid | `'123'` | `string` | -| `placementId`| optional | The placement ID from Mgid | `'123456'` | `string` | | `bidFloor` | optional | Lowest value of expected bid price | `1.1` | `float` | | `currency` | optional | Currency of request and response | `'GBP'` | `string` | @@ -57,11 +56,10 @@ var adUnits = [{ sizes: [[300, 600]] } }, - // Replace this object to test a new Adapter! bids: [{ bidder: 'mgid', - params : { - accountId : "219" //test accountId, please replace after test + params: { + accountId: "#{accountId}" // replace with your accountId } }] }]; @@ -77,11 +75,10 @@ var adUnits = [{ sizes: [[300, 250]] } }, - // Replace this object to test a new Adapter! bids: [{ bidder: 'mgid', - params : { - accountId : "219" //test accountId, please replace after test + params: { + accountId: "#{accountId}" // replace with your accountId } }] }]; @@ -107,16 +104,15 @@ var adUnits = [{ required: true, len: 80 }, - sponsored: { + sponsoredBy: { required: false } } }, - // Replace this object to test a new Adapter! bids: [{ bidder: 'mgid', - params : { - accountId : "219" //test accountId, please replace after test + params: { + accountId: "#{accountId}" // replace with your accountId } }] }]; @@ -147,10 +143,11 @@ For Prebid.js v1.14.0 and before: ```javascript pbjs.setConfig({ - userSync: { + userSync: { iframeEnabled: true, enabledBidders: ['mgid'] - }}); + } +}); ``` Note: Combine the above configuration with any other UserSync configuration. Multiple setConfig() calls overwrite each other and only the last call for a given attribute will take effect. From 6ca92f296e3fa94a0977ac5a963bad406bcd8668 Mon Sep 17 00:00:00 2001 From: jasonc721 Date: Wed, 22 Apr 2026 06:13:35 -0600 Subject: [PATCH 562/665] Documentation update for msft.md (#6512) * Update msft.md * Update msft.md --------- Co-authored-by: Jason Crane --- dev-docs/bidders/msft.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/dev-docs/bidders/msft.md b/dev-docs/bidders/msft.md index 81d0e124f9..e8425c998e 100644 --- a/dev-docs/bidders/msft.md +++ b/dev-docs/bidders/msft.md @@ -67,6 +67,10 @@ All Microsoft (formerly AppNexus/Xandr) placements included in a single call to If you are migrating from the AppNexus bid adapter, a number of the previously available AppNexus bid parameters have been deprecated as available options for the Microsoft bid parameters. These deprecated bid parameters are still available however, they're just read from other standarized locations offered within Prebid.js. This change was implemented to help us align better to the publisher-aligned features (such as First Party Data) to use a single setup for many bidders. +The Microsoft Bid Adapter connects to Microsoft's advertising exchange for bids. This adapter supports banner, video (instream and outstream), and native ad formats using OpenRTB 2.5 standards. + +For reference, here is the IAB OpenRTB 2.5 [specification](https://www.iab.com/wp-content/uploads/2016/03/OpenRTB-API-Specification-Version-2-5-FINAL.pdf) + The following table shows how the bid parameters have changed between the two adapters: {: .table .table-bordered .table-striped } @@ -93,6 +97,11 @@ The following table shows how the bid parameters have changed between the two ad | `params.ext_inv_code` | `params.ext_inv_code` | External inventory code (unchanged) | | `params.external_imp_id` | `params.ext_imp_id` | External impression ID (shortend to ext) | +#### Keywords +With the AppNexus adapter, keywords followed this format: keyname=keyvalue1,keyvalue2,keyvalue3 + +In the Microsoft Bid Adapter, the new required format is: keyname=keyvalue1,keyname=keyvalue2,keyname=keyvalue3 + #### Migrating from the AppNexus Bid Adapter & Ad Server Targeting From d249245c8651bdb507267af449f3239adda0df8a Mon Sep 17 00:00:00 2001 From: Filip Stamenkovic Date: Thu, 23 Apr 2026 11:28:36 +0200 Subject: [PATCH 563/665] rename showheroes bidder (#6505) --- .../{showheroes-bs.md => showheroes.md} | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) rename dev-docs/bidders/{showheroes-bs.md => showheroes.md} (90%) diff --git a/dev-docs/bidders/showheroes-bs.md b/dev-docs/bidders/showheroes.md similarity index 90% rename from dev-docs/bidders/showheroes-bs.md rename to dev-docs/bidders/showheroes.md index d8c298a88a..a5282ce057 100644 --- a/dev-docs/bidders/showheroes-bs.md +++ b/dev-docs/bidders/showheroes.md @@ -3,7 +3,7 @@ layout: bidder title: ShowHeroes description: Prebid ShowHeroes Bidder Adapter pbjs: true -biddercode: showheroes-bs +biddercode: showheroes media_types: video, banner gvl_id: 111 tcfeu_supported: true @@ -17,31 +17,33 @@ sidebarType: 1 pbs: true --- +{: .alert.alert-danger :} +Showheroes bid adapter is going to be renamed in the Prebid.js version 12, from `showheroes-bs` to `showheroes` - -### bid params +## bid params {: .table .table-bordered .table-striped } + | Name | Scope | Description | Example | Type | |-------------|----------------------------------|-------------------------------------|------------------------------------------|-----------| -| `unitId` | required | ShowHeroes MAX unit ID | `'1234abcd-5678efgh'` | `string` | +| `unitId` | required | ShowHeroes MAX unit ID | `'1234abcd-5678efgh'` | `string` | All other parameters should be sent inside openRTB request. -### openRTB2 support +## openRTB2 support {: .alert.alert-danger :} Starting with Prebid.js version 9.18 ShowHeores bidder adapter is requesting bids via openRTB protocol. Publishers can use the `ortb2` method of setting [First Party Data](https://docs.prebid.org/features/firstPartyData.html). Bidder supports all first-party data fields: site, user, segments, and imp-level first-party data. -### testing +## testing While developing or testing locally, you can request a test request by marking the openRTB as a test. -To do that specifically for `showheroes-Bs` you can do: +To do that specifically for `showheroes` you can do: ```javascript pbjs.setBidderConfig({ - bidders: ['showheroesBs'], + bidders: ['showheroes'], config: { ortb2: { test:1 @@ -56,7 +58,7 @@ Or, more easily you can mark the whole request as a test request by doing: pbjs.setConfig({ortb2: {test: 1}}) ``` -#### Prebid Server Test Request +### Prebid Server Test Request To verify that the Prebid Server is working properly with the server-side `Showheroes` adapter a `test` property can be utilized. @@ -77,7 +79,7 @@ To verify that the Prebid Server is working properly with the server-side `Showh } ``` -#### Outstream +### Outstream Example of adunit configuration for the outstream unit: @@ -105,7 +107,7 @@ var adUnits = [ }, }, bids: [{ - bidder: "showheroes-bs", + bidder: "showheroes", params: { unitId: "1234abcd-5678efgh", } @@ -121,7 +123,7 @@ pbjs.que.push(function () { You could use this example and place it in .html example pages inside the Prebid.js repository. -#### instream +### instream Example of adunit configuration for the instream unit: @@ -137,7 +139,7 @@ var videoAdUnit = { }, bids: [ { - bidder: 'showheroesBs', + bidder: 'showheroes', params: { unitId: "1234abcd-5678efgh", } @@ -164,7 +166,7 @@ pbjs.que.push(function(){ You could use this example and place it in the `test/pages/instream.html` example page inside the Prebid.js repository. -#### banner +### banner Example of adunit configuration for banner ads: @@ -180,7 +182,7 @@ var adUnits = [ } }, bids: [{ - bidder: "showheroes-bs", + bidder: "showheroes", params: { unitId: "1234abcd-5678efgh", } From bb594ae2d5ed14b6d8b96773273608a8673b9eae Mon Sep 17 00:00:00 2001 From: Demetrio Girardi Date: Thu, 23 Apr 2026 07:08:22 -0700 Subject: [PATCH 564/665] JS: document gpp control restrictActivities option (#6540) * JS: document gpp control restrictActivities option * fix missin parens * add examples --- dev-docs/modules/gppControl_usnat.md | 22 ++++++++++++++++++++++ dev-docs/modules/gppControl_usstates.md | 17 ++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/dev-docs/modules/gppControl_usnat.md b/dev-docs/modules/gppControl_usnat.md index df2853e3c4..bb84aabfe9 100644 --- a/dev-docs/modules/gppControl_usnat.md +++ b/dev-docs/modules/gppControl_usnat.md @@ -32,6 +32,28 @@ Prebid functionality created to address regulatory requirements does not replace This module activates if the `gpp` object in the consent management configuration section exists and the consentManagementGpp module exists. See that [module's documentation](/dev-docs/modules/consentManagementGpp.html) for parameter definitions. This module does **not** work with static GPP section 7 strings provided in the first-party data `regs.gpp` object, but **does** work if the `gpp.cmpApi` is set to `static` and `gpp.consentData` is appropriately populated via setConfig. +Optional configuration options are: + +{: .table .table-bordered .table-striped } +| Param | Type | Description | Example | +| --- | --- | --- | --- | +| gpp.mspa | `Object` | | | +| gpp.mspa.restrictActivities | `Array` | A list of [activities](/dev-docs/activity-controls.html#activities) to be restricted in addition to the [default restrictions](/features/mspa-usnat.html#usnat-activity-restrictions). If specified, and if not already restricted, they will be treated similarly to `syncUser`. | `['accessDevice']` | + +### Example: disable device access on user opt-out + +```javascript +pbjs.setConfig({ + consentManagement: { + gpp: { + mspa: { + restrictActivities: ['accessDevice', 'accessRequestCredentials'] + } + } + } +}) +``` + ## Build the Package Follow the basic build instructions in the GitHub Prebid.js repo's main [README](https://github.com/prebid/Prebid.js/blob/master/README.md). To include the consent management module and the GPP Control - USNat module, an additional option must be added to the **gulp build** command: diff --git a/dev-docs/modules/gppControl_usstates.md b/dev-docs/modules/gppControl_usstates.md index d15c603fd7..d4fec53cd1 100644 --- a/dev-docs/modules/gppControl_usstates.md +++ b/dev-docs/modules/gppControl_usstates.md @@ -36,6 +36,7 @@ Optional configuration options are: | Param | Type | Description | Example | | --- | --- | --- | --- | | gpp.mspa | `Object` | | | +| gpp.mspa.restrictActivities | `Array` | A list of [activities](/dev-docs/activity-controls.html#activities) to be restricted in addition to the [default restrictions](/features/mspa-usnat.html#usnat-activity-restrictions). If specified, and if not already restricted, they will be treated similarly to `syncUser`. | `['accessDevice']` | | gpp.mspa.sids | `Array` | GPP SIDs that should be covered by activity restrictions. Defaults to all US state SIDs (`[8, 9, 10, 11, 12]`). This is the only value needed for normal operation. Other options are for special cases and future-proofing. | `[8, 9]` | | gpp.mspa.sections | `Object` | Map from section ID to per-section configuration options | `{8: {name: 'usca'}}` | | gpp.mspa.sections.name | `String` | GPP API name to use for the section. Defaults to the names given listed under [section information -> section IDs](https://github.com/InteractiveAdvertisingBureau/Global-Privacy-Platform/blob/main/Sections/Section%20Information.md#section-ids). This option would only be used if your CMP has named their sections in a non-standard way. | `uscav3` | @@ -43,6 +44,20 @@ Optional configuration options are: ### Examples +#### Disable device access on user opt-out + +```javascript +pbjs.setConfig({ + consentManagement: { + gpp: { + mspa: { + restrictActivities: ['accessDevice', 'accessRequestCredentials'] + } + } + } +}) +``` + #### Enable activity controls for certain sections only ```javascript @@ -117,7 +132,7 @@ You can also use the [Prebid.js Download](/download.html) page. - [IAB Global Privacy Platform Full Specification Repository](https://github.com/InteractiveAdvertisingBureau/Global-Privacy-Platform) - [IAB Global Privacy Platform CMP API Specification](https://github.com/InteractiveAdvertisingBureau/Global-Privacy-Platform/blob/main/Core/CMP%20API%20Specification.md) -- [IAB Global Privacy Platform USNat string Specification](https://github.com/InteractiveAdvertisingBureau/Global-Privacy-Platform/blob/main/Sections/US-National/IAB%20Privacy%E2%80%99s%20Multi-State%20Privacy%20Agreement%20(MSPA)%20US%20National%20Technical%20Specification.md +- [IAB Global Privacy Platform USNat string Specification](https://github.com/InteractiveAdvertisingBureau/Global-Privacy-Platform/blob/main/Sections/US-National/IAB%20Privacy%E2%80%99s%20Multi-State%20Privacy%20Agreement%20(MSPA)%20US%20National%20Technical%20Specification.md) - [Prebid US Compliance Support](/features/mspa-usnat.html) - [Prebid Activity Controls](/dev-docs/activity-controls.html) - [Prebid Consent Management - US Privacy Module](/dev-docs/modules/consentManagementUsp.html) From 457c7c6f9a9b067b91a58363a6efeaf269a620f9 Mon Sep 17 00:00:00 2001 From: adzida-adquery Date: Thu, 23 Apr 2026 19:19:57 +0200 Subject: [PATCH 565/665] adQuery: update docs - instream/outstream video (#6520) * adquery: changes in specification * adquery: changes in specification * adquery: update bidder documentation with expanded specs and examples * update docs * update docs --------- Co-authored-by: ppydys Co-authored-by: adquery <89853721+adquery@users.noreply.github.com> Co-authored-by: Adrian Dzida --- dev-docs/bidders/adquery.md | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/dev-docs/bidders/adquery.md b/dev-docs/bidders/adquery.md index 139ff8a20c..67f876fb85 100644 --- a/dev-docs/bidders/adquery.md +++ b/dev-docs/bidders/adquery.md @@ -14,9 +14,10 @@ sidebarType: 1 media_types: banner, video --- -### Bid Params +## Bid Params {: .table .table-bordered .table-striped } + | Name | Scope | Description | Example | Type | |---------------|----------|-----------------------------------------------------------------------------|--------------------------------------------------------------------------|-----------| | `placementId` | required | Placement ID provided by Adquery (must match the type/format in dashboard) | `d30f79cf7fef47bd7a5611719f936539bec0d2e9` | `string` | @@ -25,11 +26,13 @@ media_types: banner, video **Notes:** - `placementId` is always required and should correspond to a placement configured in the Adquery dashboard for the specific `type`. -- `type` is mandatory in bidder params — it determines the creative format (banner, video, interstitial, anchorad). -- For **banner** ads: Define sizes in `mediaTypes.banner.sizes`. The adapter automatically parses and sends them. -- For **video** ( outstream ): Use `type: 'video'` + `mediaTypes.video.context: 'outstream'`. A renderer is required for rendering (e.g. InRenderer or similar). In-stream video is not currently supported by this adapter. -- For **video** ( instream ): Use `type: 'video'` + `mediaTypes.video.context: 'instream'`. A renderer is required for rendering (e.g. InRenderer or similar). In-stream video is not currently supported by this adapter. -- For special formats (`interstitial`, `anchorad`): A spetial size placeholder is reqired `[1x1]`. +- `type` is required in bidder params and determines the creative format returned by Adquery. +- For **banner** ads: define sizes in `mediaTypes.banner.sizes`. The adapter automatically parses and sends them. +- For **video** bids: use `type: 'video'` and set `mediaTypes.video.context` to either `outstream` or `instream`. +- For **video** bids, `mediaTypes.video.playerSize` is required. +- For **video** (`outstream`): a renderer or equivalent outstream player integration is required (e.g. InRenderer or similar). +- For **video** (`instream`): a compatible instream video player integration is required to render the returned VAST response. +- For special formats (`interstitial`, `anchorad`): use the placeholder size `[[1, 1]]`. ### Example 1: Standard Banner Ad @@ -62,8 +65,8 @@ media_types: banner, video playerSize: [[640, 360]], mimes: ['video/mp4', 'video/webm'], protocols: [2, 3, 5, 6, 7, 8], - api: [2], - placement: 1, + api: [2], + placement: 1, startdelay: 0, skip: 1 } @@ -108,8 +111,10 @@ media_types: banner, video // Anchor / fixed bottom bar { code: 'anchor-div', + mediaTypes: { banner: { - sizes: [[1, 1]] + sizes: [[1, 1]] + } }, bids: [{ bidder: 'adquery', From 0016ad10992ce96b508fd7fc9800fe9b15474a61 Mon Sep 17 00:00:00 2001 From: eknis Date: Mon, 27 Apr 2026 14:50:23 +0900 Subject: [PATCH 566/665] add dev docs for IntimateMerger Analytics (#6525) * add dev docs for IntimateMerger Analytics * add dev docs for IntimateMerger Analytics: update optional cid * Update dev-docs/analytics/imAnalytics.md --- dev-docs/analytics/imAnalytics.md | 47 +++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 dev-docs/analytics/imAnalytics.md diff --git a/dev-docs/analytics/imAnalytics.md b/dev-docs/analytics/imAnalytics.md new file mode 100644 index 0000000000..4ed45592cc --- /dev/null +++ b/dev-docs/analytics/imAnalytics.md @@ -0,0 +1,47 @@ +--- +layout: analytics +title: IM Analytics +description: IM Analytics Adapter for Prebid.js +modulecode: imAnalytics +gdpr_supported: false +usp_supported: true +gpp_supported: true +coppa_supported: true +enable_download: true +--- + +## Description + +Analytics Adapter for IM-DMP. + +Please visit [intimatemerger.com/im-uid](https://intimatemerger.com/r/im-uid) and request your Customer ID to get started. + +If you are an existing publisher and you already use [IM-UID](/dev-docs/modules/userid-submodules/imuid.html), you can use the same Customer ID for this analytics adapter. + +By enabling this adapter, you agree to Intimate Merger's privacy policy at . + +## Configuration + +To enable the IM Analytics adapter, configure it in your Prebid.js setup. Use `imAnalytics` as the provider and provide the appropriate `options`. + +### Analytics Options + +{: .table .table-bordered .table-striped } +| Parameter | Scope | Type | Example | Description | +| --- | --- | --- | --- | --- | +| `cid` | optional | number | 5126 | The Customer ID provided by Intimate Merger. | +| `waitTimeout` | optional | number | 1500 | Wait time in milliseconds before sending batched requests. (Default: 1500) | + +### Example Configuration + +```javascript +pbjs.enableAnalytics({ + provider: 'imAnalytics', + options: { + /* Optional: Customer ID. Set the Customer ID assigned to you. */ + cid: 5126, + /* Optional: Wait 2 seconds */ + waitTimeout: 2000 + } +}); +``` From d3ff5e90f0abebdb8a36abb6dd3cba2be8c4c23c Mon Sep 17 00:00:00 2001 From: symplorpro <161946060+symplorpro@users.noreply.github.com> Date: Mon, 27 Apr 2026 11:21:52 +0530 Subject: [PATCH 567/665] Add Rediads user ID module documentation (#6503) * Add Rediads user ID module documentation * Add a fix for build failure * Add a fix for build failure --- dev-docs/bidders/rediads.md | 30 +++-- dev-docs/modules/userid-submodules/rediads.md | 125 ++++++++++++++++++ 2 files changed, 145 insertions(+), 10 deletions(-) create mode 100644 dev-docs/modules/userid-submodules/rediads.md diff --git a/dev-docs/bidders/rediads.md b/dev-docs/bidders/rediads.md index 180b8a9938..35abcb8a17 100644 --- a/dev-docs/bidders/rediads.md +++ b/dev-docs/bidders/rediads.md @@ -16,24 +16,26 @@ safeframes_ok: false deals_supported: false floors_supported: true fpd_supported: true +userIds: rediadsId ortb_blocking_supported: partial privacy_sandbox: no multiformat_supported: will-bid-on-one sidebarType: 1 --- -### Bid Params +## Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|--------------|----------|-----------------------------------------------------------------------------|----------------------|----------------| -| account_id | required | Account ID generated on the Rediads Platform. | '123xyz' | string | -| endpoint | optional | Only to be used if RediAds team provides you with one. | 'bidding2' | string | -| slot | optional | Unique identifier for the ad slot generated on the platform. | '54321' | string | + +| Name | Scope | Description | Example | Type | +| ---------- | -------- | ------------------------------------------------------------ | ------------ | ------ | +| account_id | required | Account ID generated on the Rediads Platform. | `'123xyz'` | string | +| endpoint | optional | Only to be used if RediAds team provides you with one. | `'bidding2'` | string | +| slot | optional | Unique identifier for the ad slot generated on the platform. | `'54321'` | string | --- -### Enabling Test Bids +## Enabling Test Bids To enable test bids for the Rediads Bidder Adapter, append rediads-test-bids to the hash of the page URL. @@ -46,9 +48,9 @@ This will activate test bids for debugging and validation purposes. --- -### AdUnit Examples +## AdUnit Examples -#### AdUnit Format for Banner +### AdUnit Format for Banner ```javascript var adUnits = [ @@ -72,7 +74,7 @@ var adUnits = [ ]; ``` -### First Party Data Support +## First Party Data Support The following fields are supported for First Party Data (FPD): - `ortb2.site.*` @@ -81,3 +83,11 @@ The following fields are supported for First Party Data (FPD): - `ortb2.devices.locations parameters` For additional implementation or support, contact us at . + +## User ID Support + +The Rediads bidder supports the `rediadsId` user ID submodule. To build both together: + +```bash +gulp build --modules=rediadsBidAdapter,userId,rediadsIdSystem +``` diff --git a/dev-docs/modules/userid-submodules/rediads.md b/dev-docs/modules/userid-submodules/rediads.md new file mode 100644 index 0000000000..d2d0775a15 --- /dev/null +++ b/dev-docs/modules/userid-submodules/rediads.md @@ -0,0 +1,125 @@ +--- +layout: userid +title: Rediads ID +description: Rediads User ID sub-module +useridmodule: rediadsIdSystem +bidRequestUserId: rediadsId +eidsource: rediads.com +example: '"ruid_7b9c1d3f-1e2b-4e7b-9e5a-acde12345678"' +--- + +## Overview + +The Rediads User ID submodule generates a first-party browser identifier for publisher-side identity and makes it available to Prebid bidders through both `bidRequest.userId.rediadsId` and `bidRequest.userIdAsEids`. + +This submodule is implemented as a Prebid User ID module and uses Prebid-managed storage. + +## Registration + +For setup information, contact [support@rediads.com](mailto:support@rediads.com). + +## Installation + +Build Prebid.js with the User ID core module, the Rediads ID submodule, and optionally the Rediads bidder: + +```bash +gulp build --modules=rediadsBidAdapter,userId,rediadsIdSystem +``` + +If you only need the user ID module, you can omit `rediadsBidAdapter`: + +```bash +gulp build --modules=userId,rediadsIdSystem +``` + +## Configuration + +```javascript +pbjs.setConfig({ + userSync: { + userIds: [{ + name: 'rediadsId', + params: { + source: 'rediads.com' + }, + storage: { + type: 'html5', + name: 'rediads_id', + expires: 30, + refreshInSeconds: 3600 + } + }] + } +}); +``` + +## Parameters + +{: .table .table-bordered .table-striped } + +| Param under `userSync.userIds[]` | Scope | Type | Description | Example | +| --- | --- | --- | --- | --- | +| `name` | Required | String | Module identifier. Must be `"rediadsId"`. | `"rediadsId"` | +| `params` | Optional | Object | Rediads-specific configuration. | | +| `params.source` | Optional | String | EID source to emit. Defaults to `"rediads.com"`. | `"rediads.com"` | +| `storage` | Recommended | Object | Prebid-managed storage configuration. | | +| `storage.type` | Recommended | String | Storage type. Use `"html5"`, `"cookie"`, or `"cookie&html5"` as needed. | `"html5"` | +| `storage.name` | Recommended | String | Storage key name. | `"rediads_id"` | +| `storage.expires` | Optional | Number | Lifetime of the stored ID in days. Defaults to `30`. | `30` | +| `storage.refreshInSeconds` | Optional | Number | Refresh interval in seconds. Defaults to `3600`. | `3600` | + +## Privacy Handling + +The Rediads ID submodule follows the standard Prebid User ID privacy flow. + +- If COPPA applies, the module does not create or return an ID. +- If GDPR applies without a valid consent string and Purpose 1 consent, the module does not create or return an ID. +- If US Privacy or GPP opt-out signals restrict sharing, the module may still retain its local ID state but does not emit EIDs for bidder sharing. + +The module uses Prebid's vendorless TCF marker so purpose-level enforcement applies without requiring a separate vendor registration in the module config. + +## Bid Request Output + +When available, the Rediads ID is exposed on the bid request as: + +```javascript +bidRequest.userId.rediadsId +``` + +Example: + +```json +{ + "uid": "ruid_7b9c1d3f-1e2b-4e7b-9e5a-acde12345678", + "source": "rediads.com", + "atype": 1, + "ext": { + "canShare": true + } +} +``` + +## EID Output + +When sharing is permitted, the module contributes the following EID: + +```json +{ + "source": "rediads.com", + "uids": [{ + "id": "ruid_7b9c1d3f-1e2b-4e7b-9e5a-acde12345678", + "atype": 1 + }] +} +``` + +## Testing + +After building Prebid.js with `userId` and `rediadsIdSystem`, you can verify the module with: + +```javascript +pbjs.getUserIds() +pbjs.getUserIdsAsEids() +``` + +You should see `rediadsId` in `getUserIds()` and a `rediads.com` entry in `getUserIdsAsEids()` when privacy settings allow sharing. From cc5089171cc0e405c4632dd0d9c1ee57cb463848 Mon Sep 17 00:00:00 2001 From: pritishmd-talentica <159415077+pritishmd-talentica@users.noreply.github.com> Date: Mon, 27 Apr 2026 18:09:49 +0530 Subject: [PATCH 568/665] AdSmartX Bidder Documentation : New Bidder Adapter (#6467) * RM-1476 : Bidder documentation for adsmartx * copilot review comments * Modified docs * Added support for prebid server * Fixed markdown lint issues --------- Co-authored-by: Sushant Dey --- dev-docs/bidders/adsmartx.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 dev-docs/bidders/adsmartx.md diff --git a/dev-docs/bidders/adsmartx.md b/dev-docs/bidders/adsmartx.md new file mode 100644 index 0000000000..81951a39df --- /dev/null +++ b/dev-docs/bidders/adsmartx.md @@ -0,0 +1,30 @@ +--- +layout: bidder +title: AdSmartX +description: Prebid.js bidder adapter for AdSmartX +biddercode: adsmartx +media_types: + - banner + - video +gdpr_supported: true +usp_supported: true +gpp_supported: true +user_sync: true +schain_supported: true +pbjs: true +sidebarType: 1 +--- + +## Overview + +AdSmartX is a digital advertising platform that supports banner and video ads through its Prebid.js adapter. The adapter uses OpenRTB standards for request and response formatting. + +## Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Type | Description | Example | +|-------------|----------|--------|-----------------------------------------|--------------| +| `bidFloor` | optional | string | Bid Floor | `'0.01'` | +| `testMode` | optional | string | Parameter to indicate prebid test mode | `'1'` | +| `sspId` | optional | string | Supply Partner ID | `'111111'` | +| `siteId` | optional | string | Supply Partner Site ID | `'222222'` | From 5501e755d0b7a5dc188cf8b6fbe4c1298248e748 Mon Sep 17 00:00:00 2001 From: Arthur Buchatsky <66466997+Arthur482@users.noreply.github.com> Date: Mon, 27 Apr 2026 19:08:44 +0300 Subject: [PATCH 569/665] pixfuture.md file update (#6526) * Update for pixfuture.md * Made changes regarding GitHub reviews * Made changes regarding GitHub reviews * Made changes regarding GitHub reviews * Update of pixfuture.md * Enhance PixFuture documentation for video support Updated PixFuture adapter documentation to include video media type support and improved clarity in examples. * Improve markdown formatting in pixfuture.md Updated markdown formatting for better readability. * Enhance PixFuture documentation with video example Added a video example section to the PixFuture documentation, explaining the configuration for instream video auctions and VAST responses. * Update PixFuture adapter documentation Add configuration details for PixFuture adapter in video auctions. * Add table styling for bid parameters in pixfuture.md * remove --- * remove --- * relative links * remove --- * remove --- * remove --- * remove blank line * remove blank line * remove blank line * remove blank line --------- Co-authored-by: pixfuture-media Co-authored-by: Vitali Ioussoupov <84333122+pixfuture-media@users.noreply.github.com> Co-authored-by: Muki Seiler --- dev-docs/bidders/pixfuture.md | 131 ++++++++++++++++++++++------------ 1 file changed, 86 insertions(+), 45 deletions(-) diff --git a/dev-docs/bidders/pixfuture.md b/dev-docs/bidders/pixfuture.md index fd5a5fd2ea..b10b497fac 100644 --- a/dev-docs/bidders/pixfuture.md +++ b/dev-docs/bidders/pixfuture.md @@ -3,7 +3,7 @@ layout: bidder title: PixFuture description: Prebid PixFuture Bidder Adapter biddercode: pixfuture -media_types: banner +media_types: banner, video gvl_id: 839 tcfeu_supported: true prebid_member: false @@ -15,68 +15,109 @@ pbjs: true sidebarType: 1 --- -### Overview +## Overview -The PixFuture Bidder Adapter connects publishers to PixFuture’s demand via Prebid.js, supporting banner media types. To use this adapter, your PixFuture account must be approved for Prebid integration. Contact to request activation or for setup assistance. +The PixFuture Bidder Adapter connects publishers to PixFuture’s demand via Prebid.js, supporting **banner and video media types**. -#### Solution +To use this adapter, your PixFuture account must be approved for Prebid integration. Contact to request activation or for setup assistance. -To download the PixFuture adapter for Prebid.js, visit [https://docs.prebid.org/download.html](https://docs.prebid.org/download.html) and select the `pixfuture` bidder from the list, along with other bidders you wish to include in your build. +### Solution -**Important:** The `pixfuture` adapter requires account approval from PixFuture. To enable this integration, email . +To download the PixFuture adapter for Prebid.js, visit: ---- +[/download] -### Bid Parameters +Select the `pixfuture` bidder from the list, along with other bidders you wish to include in your build. -| Name | Scope | Description | Example | Type | -|------------|----------|--------------------------------------------------------------------|---------------|----------| -| `pix_id` | required | A unique ID for your site’s ad placement. Corresponds to each ad size. | `"12312345"` | `string` | +**Important:** +The `pixfuture` adapter requires account approval from PixFuture. +To enable this integration, email . -These bid parameters are supported the Prebid.js pixfuture adapter. +### Bid Parameters -The `pix_id` is a unique identifier provided by PixFuture and must be specified for each ad placement/size combination. +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|----------|----------|-------------------------------------------------------------------------------------------|--------------|----------| +| `pix_id` | required | A unique ID for your site’s ad placement. Corresponds to each ad size or video placement. | `"12312345"` | `string` | ---- +These bid parameters are supported by the Prebid.js PixFuture adapter. + +The `pix_id` is a unique identifier provided by PixFuture and must be specified for each ad placement. -### Prebid.js Integration +# Prebid.js Integration -#### Basic Prebid.js Example +## Banner Example -Below is an example of configuring ad units for PixFuture in Prebid.js: +Below is an example configuration for banner inventory. ```javascript var adUnits = [ - { - code: 'test-div-300x250', - mediaTypes: { - banner: { - sizes: [[300, 250]] - } - }, - bids: [ - { - bidder: 'pixfuture', - params: { - pix_id: "11234567890" - } +{ + code: 'test-div-300x250', + mediaTypes: { + banner: { + sizes: [[300, 250]] + } + }, + bids: [ + { + bidder: 'pixfuture', + params: { + pix_id: "098765" } - ] + } + ] +}, +{ + code: 'test-div2-728x90', + mediaTypes: { + banner: { + sizes: [[728, 90]] + } }, - { - code: 'test-div2-728x90', - mediaTypes: { - banner: { - sizes: [[728, 90]] + bids: [ + { + bidder: 'pixfuture', + params: { + pix_id: "012345" } - }, - bids: [ - { - bidder: 'pixfuture', - params: { - pix_id: "0987654321" - } + } + ] +} +]; + +``` + +## Video Example + +Below is an example configuration for video inventory. + +```javascript +var adUnits = [ +{ + code: 'video-ad-unit-1', + mediaTypes: { + video: { + context: 'instream', + playerSize: [[640, 320]], + mimes: ['video/mp4'], + protocols: [2, 3, 5, 6], + playbackmethod: [2], + api: [2], + placement: 1 + } + }, + bids: [ + { + bidder: 'pixfuture', + params: { + pix_id: '012345' } - ] - } + } + ] +} ]; + +``` + +This configuration enables the PixFuture adapter to participate in instream video auctions and return VAST responses that can be rendered by VAST-compatible video players (e.g., Google IMA SDK or Video.js). From 42b7e1d06394da63406962f0b5889ee15c53d2b6 Mon Sep 17 00:00:00 2001 From: mkomorski Date: Wed, 29 Apr 2026 09:41:57 +0200 Subject: [PATCH 570/665] Default deferS2Sbidders value fix (#6548) * Default value fix * fixing linting errors --------- Co-authored-by: Marcin Komorski --- dev-docs/modules/tcfControl.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dev-docs/modules/tcfControl.md b/dev-docs/modules/tcfControl.md index df8e64a7cd..bc014c5625 100644 --- a/dev-docs/modules/tcfControl.md +++ b/dev-docs/modules/tcfControl.md @@ -48,9 +48,9 @@ The following table details the Prebid.js activities that fall under the [Transp | Read and write data to device | Purpose 1 - Store and/or access information on a device | May prevent one or more adapters or modules from being able to read or write cookies or localstorage in the user's browser. | 3.14+ | | Perform header bidding auction | Purpose 2 - Basic ads | May prevent one or more bid adapters from participating in the auction. | 4.0+ | | Transmit user first party data to partners | Purpose 4 - Personalized ads | May prevent one or more modules from receiving user first party data | 8.16+ | -| Transmit Extended User IDs to partners | Depends on configuration (see [note](#note-transmitEids))| May prevent one or more modules from receiving user IDs and EIDs. | 8.16+ | +| Transmit Extended User IDs to partners | Depends on configuration (see [note](#note-transmitEids)) | May prevent one or more modules from receiving user IDs and EIDs. | 8.16+ | | Invoke analytics adapters | Purpose 7 - Measurement | May prevent one or more analytics adapters from participating in the auction. | 4.x+ | -| Transmit precise geolocation data to partners | Specal Feature 1 - Use precise geolocation data | May cause geolocation data to be truncated for one or more modules | 8.16+ | +| Transmit precise geolocation data to partners | Specal Feature 1 - Use precise geolocation data | May cause geolocation data to be truncated for one or more modules | 8.16+ | ## Page Integration @@ -79,7 +79,7 @@ The following fields related to anonymizing aspects of the auction are supported | gdpr.rules[].softVendorExceptions | `Array of Strings` | Defines a list of biddercodes or module names that are exempt from the checking vendor signals for this purpose. Unlike with `vendorExceptions`, Purpose consent is still checked. **Note:** Prebid.org recommends working with a privacy lawyer before making enforcement exceptions for any vendor. | ["bidderA", "userID-module-B"] | | gdpr.rules[].eidsRequireP4Consent | `Boolean` | Only relevant on the personalizedAds `purpose`. If true, user IDs and EIDs will not be shared without evidence of consent for TCF Purpose 4. If false, evidence of consent for any of Purposes 2-10 is sufficient for sharing user IDs and EIDs. Defaults to false. See [note](#note-transmitEids) | true | | strictStorageEnforcement | `Boolean` | If false (the default), allows some use of storage regardless of purpose 1 consent - see [note](#strictStorageEnforcement) below | true | -| gdpr.rules[].deferS2Sbidders | `Boolean` | If true, allows s2s bidders to bypass vendor consent check and delegate it to server. Applies only to `basicAds` rule. Defaults to true | true | +| gdpr.rules[].deferS2Sbidders | `Boolean` | If true, allows s2s bidders to bypass vendor consent check and delegate it to server. Applies only to `basicAds` rule. Defaults to false | false | Notes: From 87bd4c4a133508e96085d1f6733fb2050e3254cc Mon Sep 17 00:00:00 2001 From: Abdou <40374175+disparate1@users.noreply.github.com> Date: Wed, 29 Apr 2026 20:50:46 +0200 Subject: [PATCH 571/665] Impactify Bid Adapter: add instream support (#6534) * edit impactify.md * Update impactify.md * Edit impactify.md * Edit impactify.md * Edit impactify.md * Edit impactify.md --- dev-docs/bidders/impactify.md | 191 ++++++++++++++++++++++++++++++---- 1 file changed, 171 insertions(+), 20 deletions(-) diff --git a/dev-docs/bidders/impactify.md b/dev-docs/bidders/impactify.md index 70dcb84f69..5cdbb86e7a 100644 --- a/dev-docs/bidders/impactify.md +++ b/dev-docs/bidders/impactify.md @@ -10,30 +10,181 @@ tcf2_supported: true usp_supported: true schain_supported: true coppa_supported: true -media_types: video +floors_supported: true +media_types: banner, video userIds: criteo, id5Id, pubCommonId, unifiedId, uid2, netId gvl_id: 606 sidebarType: 1 --- -### Note +## Note -The Impactify adaptator requires setup and validation from the Impactify team. Simply email us your contact details at and we'll make sure we'll connect you within 48h. +The Impactify adapter requires setup and validation from the Impactify team. Simply email us your contact details at and we'll make sure we connect with you within 48 hours. ### Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|---------------|----------|----------------------------------------------------|----------------|-----------| -| `appId` | required | Impactify publisher id (Contact us) | `'example.com'` | `string` | -| `format` | required | Impactify ad format (screen or display) | `'screen'` | `string` | -| `style` | required | Impactify ad style (inline, impact or static) | `'impact'` | `string` | +| Name | Scope | Description | Example | Type | +| ----------- | -------- | ------------------------------------------------------------------------------------------------------ | -------------------------------- | -------- | +| `accountId` | required | Impactify publisher ID. | `'1234'` | `string` | +| `appId` | required | Impactify inventory ID. | `'example.com'` | `string` | +| `format` | required | Impactify ad format. Use `screen` for rich media and banner, and `player` for instream video. | `'screen'` | `string` | +| `style` | required | Impactify ad style. Supported values depend on the integration type. See below. | `'impact'` | `string` | +| `size` | optional | Impactify ad size. | `'300x250'` | `string` | +| `render` | optional | Render options. See sub-options below. | `{ bottom: 10, expandAd: true }` | `object` | + +#### `render` sub-options + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +| ----------------- | -------- | ------------------------------------------------------------ | ---------------------- | --------- | +| `top` | optional | Top offset used for ad rendering. | `10` | `number` | +| `bottom` | optional | Bottom offset used for ad rendering. | `10` | `number` | +| `expandAd` | optional | Enables ad expansion behavior when supported. | `true` | `boolean` | +| `location` | optional | Changes the position of the player. | `'top-left'` | `string` | +| `onAdEventName` | optional | Name of the browser event fired when an ad is rendered. | `'impactifyAdLoaded'` | `string` | +| `onNoAdEventName` | optional | Name of the browser event fired when no ad is returned. | `'impactifyNoAd'` | `string` | + +### Integration Types + +Impactify supports three integration types: + +- **Rich media formats**: for Impactify rich media experiences using `format: "screen"` with styles such as `impact`, `inline`, `skyline`, or `static`. +- **Instream Video**: for standard instream video using `format: "player"`. +- **Banner**: for standard banner placements, typically using `format: "screen"` with `style: "static"`. + +### Rich media formats + +Use this integration for rich media placements. + +#### Supported styles + +- **impact**: sticky at the bottom. +- **inline**: in-content, then sticky at the bottom on scroll. +- **skyline**: in-content, then sticky at the top on scroll. +- **static**: in-content, non-sticky. + +```javascript +var impactAdUnit = [ + { + code: "Publisher DIV", + mediaTypes: { + banner: { + sizes: [[1, 1]] + } + }, + bids: [ + { + bidder: "impactify", + params: { + accountId: "YOUR_ACCOUNTID_HERE", + appId: "YOUR_APPID_HERE", + format: "screen", + style: "impact" + } + } + ] + } +]; + +//For inline, skyline or static style placements +var richMediAdUnit = [ + { + code: "Publisher DIV", + mediaTypes: { + banner: { + sizes: [[336, 280]] + } + }, + bids: [ + { + bidder: "impactify", + params: { + accountId: "YOUR_ACCOUNTID_HERE", + appId: "YOUR_APPID_HERE", + format: "screen", + style: "inline" // or "skyline" or "static" + } + } + ] + } +]; +``` + +### Instream Video + +Use this integration for instream video only. + +```javascript +var instreamAdUnit = [ + { + code: "Publisher DIV", + mediaTypes: { + video: { + context: "instream", + playerSize: [640, 360], + mimes: ["video/mp4", "video/webm", "application/javascript"], + minduration: 1, + maxduration: 35, + protocols: [2, 3, 5, 6, 7, 8, 11, 12, 13, 14], + api: [2, 7, 8], + placement: 1, + plcmt: 1, + startdelay: 0, + playbackmethod: [1, 2, 6], + skip: 1 + } + }, + bids: [ + { + bidder: "impactify", + params: { + accountId: "YOUR_ACCOUNTID_HERE", + appId: "YOUR_APPID_HERE", + format: "player" + } + } + ] + } +]; +``` + +### Banner + +Use this integration for standard banner placements with standard IAB sizes. + +```javascript +var bannerAdUnit = [ + { + code: "Publisher DIV", + mediaTypes: { + banner: { + sizes: [ + [300, 250], + [336, 280] + ] + } + }, + bids: [ + { + bidder: "impactify", + params: { + accountId: "YOUR_ACCOUNTID_HERE", + appId: "YOUR_APPID_HERE", + format: "screen", + style: "static" + } + } + ] + } +]; +``` ### Configuration Impactify recommends the UserSync configuration below. Without it, the Impactify adapter will not be able to perform user syncs, which lowers match rate and reduces monetization. -Note : Impactify adapter needs storage access to work properly (Do not forget to set storageAllowed to true). +Note: Impactify adapter needs storage access to work properly. Do not forget to set `storageAllowed` to `true`. {% include dev-docs/storageAllowed.md %} @@ -41,16 +192,16 @@ For Prebid.js v1.15.0 and later: ```javascript pbjs.bidderSettings = { - impactify: { - storageAllowed: true // Mandatory - } + impactify: { + storageAllowed: true // Mandatory + } }; pbjs.setConfig({ userSync: { filterSettings: { iframe: { - bidders: '*', // '*' represents all bidders + bidders: '*', filter: 'include' } } @@ -61,18 +212,18 @@ pbjs.setConfig({ For Prebid.js v1.14.0 and before: ```javascript - pbjs.bidderSettings = { - impactify: { - storageAllowed: true // Mandatory - } + impactify: { + storageAllowed: true // Mandatory + } }; pbjs.setConfig({ - userSync: { + userSync: { iframeEnabled: true, enabledBidders: ['impactify'] - }}); + } +}); ``` -Note: Combine the above configuration with any other UserSync configuration. Multiple setConfig() calls overwrite each other and only the last call for a given attribute will take effect. +Note: Combine the above configuration with any other UserSync configuration. Multiple `setConfig()` calls overwrite each other and only the last call for a given attribute takes effect. From 77bb4cfbd5ab43de7151a0e4af4bb4c5e94e9162 Mon Sep 17 00:00:00 2001 From: shiba44 <38831888+shiba44@users.noreply.github.com> Date: Thu, 30 Apr 2026 14:57:07 +0900 Subject: [PATCH 572/665] add LOGLY bidder adapter (#6514) * add logly bidder adapter * Address markdownlint error in LOGLY bidder doc * add meta data for logly bidder adapter --- dev-docs/bidders/logly.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 dev-docs/bidders/logly.md diff --git a/dev-docs/bidders/logly.md b/dev-docs/bidders/logly.md new file mode 100644 index 0000000000..f693ea85e1 --- /dev/null +++ b/dev-docs/bidders/logly.md @@ -0,0 +1,35 @@ +--- +layout: bidder +title: LOGLY +description: Prebid LOGLY Bidder Adapter +biddercode: logly +media_types: banner +pbjs: true +pbs: false +userIds: imuid +sidebarType: 1 +tcfeu_supported: false +dsa_supported: false +gvl_id: none +usp_supported: false +coppa_supported: false +gpp_sids: none +schain_supported: false +dchain_supported: false +safeframes_ok: false +deals_supported: false +floors_supported: false +fpd_supported: false +prebid_member: false +multiformat_supported: will-bid-on-one +ortb_blocking_supported: false + +--- + +## Bid Params + +{: .table .table-bordered .table-striped } + +| Name | Scope | Description | Example | Type | +|------------|----------|-----------------|-----------|-----------| +| `adspotId` | required | LOGLY Adspot ID | `4338071` | `integer` | From f982b0ead4e0336e443051a8127450e0412cc996 Mon Sep 17 00:00:00 2001 From: Gabriel Chicoye Date: Thu, 30 Apr 2026 14:01:02 +0200 Subject: [PATCH 573/665] MTC Bid Adapter added (#6541) * mtc added * lint fix --------- Co-authored-by: Gabriel Chicoye --- dev-docs/bidders/mtc.md | 113 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 dev-docs/bidders/mtc.md diff --git a/dev-docs/bidders/mtc.md b/dev-docs/bidders/mtc.md new file mode 100644 index 0000000000..4a0eb7c814 --- /dev/null +++ b/dev-docs/bidders/mtc.md @@ -0,0 +1,113 @@ +--- +layout: bidder +title: Media Tradecraft +description: Prebid Media Tradecraft Bidder Adapter +pbjs: true +pbs: false +biddercode: mtc +gvl_id: none +tcfeu_supported: true +usp_supported: true +gpp_sids: tcfeu +schain_supported: true +dchain_supported: false +floors_supported: true +userIds: all +media_types: banner, video, native +safeframes_ok: true +deals_supported: true +sidebarType: 1 +fpd_supported: true +multiformat_supported: will-bid-on-any + +--- + +## Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|----------------------------|-------------------------------------- |-----------| +| `tagId` | required*| Media Tradecraft tag ID | `"testnexx"` | `string` | +| `placement` | required*| Media Tradecraft placement | `"test.com_header_ad"` | `string` | + +*You *must* only include one ID field - either `tagId` or `placement`, not both. If you have questions on which parameter to use, please reach out to your Account Manager. +The `tagId` and `placement` are **mutually exclusive** but at least one is required. If you pass both, `tagId` takes precedence. + +## Bidder Config + +You can allow writing in localStorage `pbjs.bidderSettings` for the bidder `mtc` + +{% include dev-docs/storageAllowed.md %} + +```javascript +pbjs.bidderSettings = { + mtc: { + storageAllowed : true + } +} +``` + +## First Party Data + +Publishers should use the `ortb2` method of setting [First Party Data](https://docs.prebid.org/features/firstPartyData.html). + +## Test Parameters + +```javascript +var adUnits = [ + // Banner adUnit + { + code: 'banner-div', + mediaTypes: { + banner: { + sizes: [[300, 250], [300,600]] + } + }, + bids: [{ + bidder: 'mtc', + params: { + tagId: 'testnexx' + } + }] + }, + // Video adUnit + { + code: 'video1', + mediaTypes: { + video: { + playerSize: [640, 480], + context: 'instream' + } + }, + bids: [{ + bidder: 'mtc', + params: { + tagId: 'testnexx' + } + }] + }, + // Native adUnit + { + code: 'native1', + mediaTypes: { + native: { + title: { + required: true + }, + image: { + required: true + }, + sponsoredBy: { + required: true + } + } + }, + bids: [{ + bidder: 'mtc', + params: { + tagId: 'testnexx' + } + }] + } +]; +``` From 8c22be433e28865e9ee7fe1d5cd2c8fb0dbd8500 Mon Sep 17 00:00:00 2001 From: Muki Seiler Date: Thu, 30 Apr 2026 14:03:38 +0200 Subject: [PATCH 574/665] gvl_id necesssary for technical TCF support (#6549) --- dev-docs/bidders/mtc.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-docs/bidders/mtc.md b/dev-docs/bidders/mtc.md index 4a0eb7c814..30318fd57f 100644 --- a/dev-docs/bidders/mtc.md +++ b/dev-docs/bidders/mtc.md @@ -6,9 +6,9 @@ pbjs: true pbs: false biddercode: mtc gvl_id: none -tcfeu_supported: true +tcfeu_supported: false usp_supported: true -gpp_sids: tcfeu +gpp_sids: none schain_supported: true dchain_supported: false floors_supported: true From e006ecbc213cfdad0e9b86100ec63cabd6cb084f Mon Sep 17 00:00:00 2001 From: Antonio Gargaro <38767071+AntonioGargaro@users.noreply.github.com> Date: Thu, 30 Apr 2026 16:04:41 +0100 Subject: [PATCH 575/665] Permutive RTD: document msft bidder custom cohort support (#6522) * docs: update permutiveRtdProvider.md for msft bidder custom cohorts Add msft to supported custom cohort bidders list, document the new params.bidders configuration, and note the appnexus-to-msft migration path. Co-Authored-By: Claude Opus 4.6 (1M context) * fix: align markdown table columns to pass MD060 lint rule Co-Authored-By: Claude Opus 4.6 (1M context) * remove hardcoded msft default from docs, add publisher config example Mirrors the code change in Prebid.js PR #14655. The params.bidders default is now {} and publishers must explicitly configure msft custom cohort sources. Co-Authored-By: Claude Opus 4.6 (1M context) --------- Co-authored-by: Claude Opus 4.6 (1M context) --- dev-docs/modules/permutiveRtdProvider.md | 32 ++++++++++++++++++------ 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/dev-docs/modules/permutiveRtdProvider.md b/dev-docs/modules/permutiveRtdProvider.md index 10c3836212..0b5fcee63c 100644 --- a/dev-docs/modules/permutiveRtdProvider.md +++ b/dev-docs/modules/permutiveRtdProvider.md @@ -61,13 +61,17 @@ as well as enabling settings for specific use cases mentioned above (e.g. acbidd {: .table .table-bordered .table-striped } -| Name | Type | Description | Default | -| ---------------------- | -------------------- | --------------------------------------------------------------------------------------------- | ------------------ | -| name | String | This should always be `permutive` | - | -| waitForIt | Boolean | Should be `true` if there's an `auctionDelay` defined (optional) | `false` | -| params | Object | | - | -| params.acBidders | String[] | An array of bidder codes to share cohorts with in certain versions of Prebid, see below | `[]` | -| params.maxSegs | Integer | Maximum number of cohorts to be included in either the `permutive` or `p_standard` key-value. | `500` | +| Name | Type | Description | Default | +| ---------------------------------------------- | -------------------- | ---------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | +| name | String | This should always be `permutive` | - | +| waitForIt | Boolean | Should be `true` if there's an `auctionDelay` defined (optional) | `false` | +| params | Object | | - | +| params.acBidders | String[] | An array of bidder codes to share cohorts with in certain versions of Prebid, see below | `[]` | +| params.maxSegs | Integer | Maximum number of cohorts to be included in either the `permutive` or `p_standard` key-value. | `500` | +| params.bidders | Object | Per-bidder configuration for custom cohort sources. Keys are bidder codes. | `{}` | +| params.bidders.\.customCohorts | Object | Custom cohorts source configuration for a specific bidder. | - | +| params.bidders.\.customCohorts.source | String | Storage type to read custom cohorts from. Currently only `'ls'` (localStorage) is supported. | - | +| params.bidders.\.customCohorts.key | String | The localStorage key to read custom cohorts from. | - | ### Context @@ -132,11 +136,25 @@ Currently, bidders with known support for custom cohort targeting are: * Xandr * Magnite +* Microsoft (msft) When enabling the respective Activation for a cohort in Permutive, this module will automatically attach that cohort ID to the bid request. There is no need to enable individual bidders in the module configuration, it will automatically reflect which SSP integrations you have enabled in your Permutive dashboard. Permutive cohorts will be sent in the permutive key-value. +**Note:** Publishers migrating from the `appnexus` bidder to `msft` need to configure the `params.bidders` object so the module knows where to read custom cohorts from. The Permutive SDK writes `msft` custom cohorts to the same localStorage key used by `appnexus` (`_papns`), so publishers should add the following to their Permutive RTD config: + +```javascript +params: { + acBidders: ['msft'], + bidders: { + msft: { + customCohorts: { source: 'ls', key: '_papns' } + } + } +} +``` + ### _Enabling Advertiser Cohorts_ If you are connecting to an Advertiser seat within Permutive to share Advertiser Cohorts, populate the acbidders config in the Permutive RTD with an array of bidder codes with whom you wish to share Advertiser Cohorts with. From 0b960896bc012e2e30b5160ff93b148d7a1b8590 Mon Sep 17 00:00:00 2001 From: mihanikw2g <92710748+mihanikw2g@users.noreply.github.com> Date: Sat, 2 May 2026 20:10:11 +0700 Subject: [PATCH 576/665] Asterio docs: add bidder documentation (#6521) * Asterio docs: add bidder documentation * Asterio docs: fix markdownlint issues * Asterio docs: simplify table formatting * Asterio docs: add meta data * Update dev-docs/bidders/asterio.md Co-authored-by: Muki Seiler --------- Co-authored-by: Muki Seiler --- dev-docs/bidders/asterio.md | 78 +++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 dev-docs/bidders/asterio.md diff --git a/dev-docs/bidders/asterio.md b/dev-docs/bidders/asterio.md new file mode 100644 index 0000000000..00b3faa254 --- /dev/null +++ b/dev-docs/bidders/asterio.md @@ -0,0 +1,78 @@ +--- +layout: bidder +title: Asterio +description: Prebid Asterio Bidder Adapter +biddercode: asterio +pbjs: true +pbs: false +media_types: banner, video +tcfeu_supported: false +dsa_supported: false +gvl_id: none +usp_supported: false +coppa_supported: false +gpp_sids: none +schain_supported: true +dchain_supported: false +userId: none +safeframes_ok: false +deals_supported: true +floors_supported: true +fpd_supported: false +prebid_member: false +multiformat_supported: will-bid-on-any +ortb_blocking_supported: partial +sidebarType: 1 +--- + +## Bid Params + +{: .table .table-bordered .table-striped } + +| Name | Scope | Description | Example | Type | +| --- | --- | --- | --- | --- | +| `adUnitToken` | required | Ad unit token provided by Asterio. | `'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'` | `string` | +| `pos` | optional | Ad position hint. Allowed values follow OpenRTB position conventions, e.g. above the fold: `1`, below the fold: `3`, middle of the fold: `7`. | `1` | `integer` | + +## Banner Test Ad Unit + +```javascript +var adUnits = [{ + code: 'test-banner', + mediaTypes: { + banner: { + sizes: [[300, 250]] + } + }, + bids: [{ + bidder: 'asterio', + params: { + adUnitToken: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' + } + }] +}]; +``` + +## Video Test Ad Unit + +```javascript +var adUnits = [{ + code: 'test-video', + mediaTypes: { + video: { + context: 'outstream', + playerSize: [640, 360], + mimes: ['video/mp4'], + protocols: [2, 3], + playbackmethod: [2], + plcmt: 4 + } + }, + bids: [{ + bidder: 'asterio', + params: { + adUnitToken: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' + } + }] +}]; +``` From 541eb47ab4c86d6b4625de9385586f7e2540573f Mon Sep 17 00:00:00 2001 From: Eugene Dorfman Date: Tue, 5 May 2026 10:45:55 +0200 Subject: [PATCH 577/665] 51d: introduce hwv into PBS module (#6517) * 51d: introduce hwv into PBS module associated PBS PRs: - https://github.com/prebid/prebid-server-java/pull/4458 - https://github.com/prebid/prebid-server/pull/4740 * fix table styles to satisfy markdownlint --- .../pbs-modules/51degrees-device-detection.md | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/prebid-server/pbs-modules/51degrees-device-detection.md b/prebid-server/pbs-modules/51degrees-device-detection.md index 6d936e3169..d6c64d5b4f 100644 --- a/prebid-server/pbs-modules/51degrees-device-detection.md +++ b/prebid-server/pbs-modules/51degrees-device-detection.md @@ -19,7 +19,7 @@ sidebarType : 5 The 51Degrees module enriches an incoming OpenRTB request with [51Degrees Device Data](https://51degrees.com/documentation/_device_detection__overview.html). -The module sets the following fields of the device object: `make`, `model`, `os`, `osv`, `h`, `w`, `ppi`, `pxratio` - interested bidder adapters may use these fields as needed. In addition the module sets `device.ext.fiftyonedegrees_deviceId` to a permanent device ID which can be rapidly looked up in on premise data exposing over 250 properties including the device age, chip set, codec support, and price, operating system and app/browser versions, age, and embedded features. +The module sets the following fields of the device object: `make`, `model`, `hwv`, `os`, `osv`, `h`, `w`, `ppi`, `pxratio` - interested bidder adapters may use these fields as needed. In addition the module sets `device.ext.fiftyonedegrees_deviceId` to a permanent device ID which can be rapidly looked up in on premise data exposing over 250 properties including the device age, chip set, codec support, and price, operating system and app/browser versions, age, and embedded features. ## Operation Details @@ -252,22 +252,22 @@ The parameter names are specified with full path using dot-notation. F.e. `sect {: .table .table-bordered .table-striped } -| PBS-Java Name | PBS-Go Name | Required| Type | Default value | Description | -|:-------|:-------|:------|:------|:------|:---------------------------------------| -| `account-filter` .`allow-list` | `account_filter` .`allow_list` | No | list of strings | [] (empty list) | A list of account IDs that are allowed to use this module - only relevant if enabled globally for the host. If empty, all accounts are allowed. Full-string match is performed (whitespaces and capitalization matter). | -| `data-file` .`path` | `data_file` .`path` | **Yes** | string | null |The full path to the device detection data file. Sample file can be downloaded from the [51Degrees data repository](https://github.com/51Degrees/device-detection-data/blob/main/51Degrees-LiteV4.1.hash), or get an Enterprise data file from the [51Degrees pricing page](https://51degrees.com/pricing). | +| PBS-Java Name | PBS-Go Name | Required | Type | Default value | Description | +| :------ | :------ | :------ | :------ | :------ | :------ | +| `account-filter` .`allow-list` | `account_filter` .`allow_list` | No | list of strings | [] (empty list) | A list of account IDs that are allowed to use this module - only relevant if enabled globally for the host. If empty, all accounts are allowed. Full-string match is performed (whitespaces and capitalization matter). | +| `data-file` .`path` | `data_file` .`path` | **Yes** | string | null | The full path to the device detection data file. Sample file can be downloaded from the [51Degrees data repository](https://github.com/51Degrees/device-detection-data/blob/main/51Degrees-LiteV4.1.hash), or get an Enterprise data file from the [51Degrees pricing page](https://51degrees.com/pricing). | | `data-file` .`make-temp-copy` | `data_file` .`make_temp_copy` | No | boolean | true | If true, the engine will create a temporary copy of the data file rather than using the data file directly. | | `data-file` .`update` .`auto` | `data_file` .`update` .`auto` | No | boolean | true | If enabled, the engine will periodically (at predefined time intervals - see `polling-interval` parameter) check if new data file is available. When the new data file is available engine downloads it and switches to it for device detection. If custom `url` is not specified `license_key` param is required. | | `data-file` .`update` .`on-startup` | `data_file` .`update` .`on_startup` | No | boolean | true | If enabled, engine will check for the updated data file right away without waiting for the defined time interval. | | `data-file` .`update` .`url` | `data_file` .`update` .`url` | No | string | null | Configure the engine to check the specified URL for the availability of the updated data file. If not specified the [51Degrees distributor service](https://51degrees.com/documentation/4.4/_info__distributor.html) URL will be used, which requires a License Key. | | `data-file` .`update` .`license-key` | `data_file` .`update` .`license_key` | No | string | null | Required if `auto` is true and custom `url` is not specified. Allows to download the data file from the [51Degrees distributor service](https://51degrees.com/documentation/4.4/_info__distributor.html). | | `data-file` .`update` .`watch-file-system` | `data_file` .`update` .`watch_file_system` | No | boolean | true | If enabled the engine will watch the data file path for any changes, and automatically reload the data file from disk once it is updated. | -| `data-file` .`update`.`polling-interval` | `data_file` .`update` .`polling_interval` | No | int | 1800 | The time interval in seconds between consequent attempts to download an updated data file. Default = 1800 seconds = 30 minutes. | -| `performance` .`profile` | `performance` .`profile` | No | string | `Balanced` | `performance.*` parameters are related to the tradeoffs between speed of device detection and RAM consumption or accuracy. `profile` dictates the proportion between the use of the RAM (the more RAM used - the faster is the device detection) and reads from disk (less RAM but slower device detection). Must be one of: `LowMemory`, `MaxPerformance`, `HighPerformance`, `Balanced`, `BalancedTemp`, `InMemory`. Defaults to `Balanced`. | -| `performance` .`concurrency` | `performance` .`concurrency` | No | int | 10 | Specify the expected number of concurrent operations that engine does. This sets the concurrency of the internal caches to avoid excessive locking. Default: 10. | -| `performance` .`difference` | `performance` .`difference` | No | int | 0 | Set the maximum difference to allow when processing evidence (HTTP headers). The meaning is the difference in hash value between the hash that was found, and the hash that is being searched for. By default this is 0. For more information see [51Degrees documentation](https://51degrees.com/documentation/_device_detection__hash.html). | -| `performance` .`drift` | `performance` .`drift` | No | int | 0 | Set the maximum drift to allow when matching hashes. If the drift is exceeded, the result is considered invalid and values will not be returned. By default this is 0. For more information see [51Degrees documentation](https://51degrees.com/documentation/_device_detection__hash.html). | -| `performance` .`allow-unmatched` | `performance` .`allow_unmatched` | No | boolean | false | If set to false, a non-matching evidence will result in properties with no values set. If set to true, a non-matching evidence will cause the 'default profiles' to be returned. This means that properties will always have values (i.e. no need to check .hasValue) but some may be inaccurate. By default, this is false. | +| `data-file` .`update` .`polling-interval` | `data_file` .`update` .`polling_interval` | No | int | 1800 | The time interval in seconds between consequent attempts to download an updated data file. Default = 1800 seconds = 30 minutes. | +| `performance` .`profile` | `performance` .`profile` | No | string | `Balanced` | `performance.*` parameters are related to the tradeoffs between speed of device detection and RAM consumption or accuracy. `profile` dictates the proportion between the use of the RAM (the more RAM used - the faster is the device detection) and reads from disk (less RAM but slower device detection). Must be one of: `LowMemory`, `MaxPerformance`, `HighPerformance`, `Balanced`, `BalancedTemp`, `InMemory`. Defaults to `Balanced`. | +| `performance` .`concurrency` | `performance` .`concurrency` | No | int | 10 | Specify the expected number of concurrent operations that engine does. This sets the concurrency of the internal caches to avoid excessive locking. Default: 10. | +| `performance` .`difference` | `performance` .`difference` | No | int | 0 | Set the maximum difference to allow when processing evidence (HTTP headers). The meaning is the difference in hash value between the hash that was found, and the hash that is being searched for. By default this is 0. For more information see [51Degrees documentation](https://51degrees.com/documentation/_device_detection__hash.html). | +| `performance` .`drift` | `performance` .`drift` | No | int | 0 | Set the maximum drift to allow when matching hashes. If the drift is exceeded, the result is considered invalid and values will not be returned. By default this is 0. For more information see [51Degrees documentation](https://51degrees.com/documentation/_device_detection__hash.html). | +| `performance` .`allow-unmatched` | `performance` .`allow_unmatched` | No | boolean | false | If set to false, a non-matching evidence will result in properties with no values set. If set to true, a non-matching evidence will cause the 'default profiles' to be returned. This means that properties will always have values (i.e. no need to check .hasValue) but some may be inaccurate. By default, this is false. | ## Running the demo (PBS-Java) @@ -322,7 +322,8 @@ curl http://localhost:8080/openrtb2/auction --data @extra/modules/fiftyone-devic "ua": "Mozilla/5.0 (Linux; Android 11; SM-G998W) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Mobile Safari/537.36", + "devicetype": 1, + "make": "Samsung", -+ "model": "SM-G998W", ++ "model": "Galaxy", ++ "hwv": "S21 Ultra 5G", "os": "Android", "osv": "11.0", "h": 3200, From 17a0baae53fb3278be675a1ab0b0dd024309f12c Mon Sep 17 00:00:00 2001 From: MaksymTeqBlaze Date: Wed, 6 May 2026 20:13:11 +0300 Subject: [PATCH 578/665] New Adapter: TeqBlaze Demo (#6552) * Added Bid Adapter TeqBlazeSalesAgent * New Adapter: TeqBlaze Demo * add note --- dev-docs/bidders/teqBlazeDemo.md | 37 ++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 dev-docs/bidders/teqBlazeDemo.md diff --git a/dev-docs/bidders/teqBlazeDemo.md b/dev-docs/bidders/teqBlazeDemo.md new file mode 100644 index 0000000000..5ffe4e4346 --- /dev/null +++ b/dev-docs/bidders/teqBlazeDemo.md @@ -0,0 +1,37 @@ +--- +layout: bidder +title: TeqBlazeDemo +description: Prebid TeqBlazeDemo Bidder Adapter +biddercode: tqblz_demo +gpp_sids: usstate_all +tcfeu_supported: false +usp_supported: true +coppa_supported: true +schain_supported: true +deals_supported: false +floors_supported: true +fpd_supported: false +ortb_blocking_supported: false +media_types: banner, video, native +multiformat_supported: will-bid-on-one +userIds: all +pbjs: true +pbs: false +pbs_app_supported: false +safeframes_ok: true +sidebarType: 1 +--- + +## Bid Params + +{: .table .table-bordered .table-striped } + +| Name | Scope | Description | Example | Type | +|---------------|----------|--------------|---------------------------------|------------| +| `placementId` | optional | Placement Id | `'0'` | `'string'` | +| `endpointId` | optional | Endpoint Id | `'0'` | `'string'` | + +## Note + +This adapter is for internal testing only and should not be used for production integrations. \ +For the prebid server and prebid.js you only need to use one parameter: either placementId or endpointId. From a036706438478a631a947af435feef3a71dd3e83 Mon Sep 17 00:00:00 2001 From: Tjorven Date: Wed, 13 May 2026 12:49:07 +0200 Subject: [PATCH 579/665] New adapter: t Advertising x blis (#6458) * remove md file of no longer needed emetriq adapter * Add initial documentation * fix table borders * add trailing line at document end --------- Co-authored-by: Markus Klink --- dev-docs/bidders/tadvertising_blis.md | 38 +++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 dev-docs/bidders/tadvertising_blis.md diff --git a/dev-docs/bidders/tadvertising_blis.md b/dev-docs/bidders/tadvertising_blis.md new file mode 100644 index 0000000000..bf336dc8c0 --- /dev/null +++ b/dev-docs/bidders/tadvertising_blis.md @@ -0,0 +1,38 @@ +--- +layout: bidder +title: T-Advertising Solutions +description: T-Advertising Solutions Prebid Bidder Blis Adapter +biddercode: tadvertising_blis +tcfeu_supported: true +gvl_id: 213 +usp_supported: true +coppa_supported: true +gpp_sids: tcfeu, usnat, usp +schain_supported: true +dchain_supported: false +userId: adserver, liveramp, sharedid, pubcid, id5-sync, criteo +media_types: banner, video, native +safeframes_ok: false +deals_supported: true +floors_supported: true +fpd_supported: false +pbjs: false +pbs: true +pbs_app_supported: true +prebid_member: true +multiformat_supported: will-bid-on-one +ortb_blocking_supported: partial +privacy_sandbox: no +--- + +### Disclosure + +{: .alert.alert-danger :} +Note: The T-Advertising Solutions Bidding adapter requires setup and approval from the T-Advertising Solutions service team. Please reach out to your account manager for more information to start using it. + +### Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|------------------|------------------------------|----------| +| `publisherId` | required | The publisher ID | `'1427ab10f2e448057ed3b422'` | `String` | From bc8427625a6ce209bc140de208983661438b4a8e Mon Sep 17 00:00:00 2001 From: quietPusher <129727954+quietPusher@users.noreply.github.com> Date: Thu, 14 May 2026 19:10:51 +0200 Subject: [PATCH 580/665] Limelight: Update Embi Media (#6562) * Remove required host from Limelight prebid server adapters * revert changes * revert changes * update bidder-embi media adapter parameters * update bidder-embi media adapter parameters --------- Co-authored-by: apykhteyev Co-authored-by: belousovdmitry Co-authored-by: maksimD24 <129727954+maksimD24@users.noreply.github.com> Co-authored-by: mderevyanko --- dev-docs/bidders/embimedia.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dev-docs/bidders/embimedia.md b/dev-docs/bidders/embimedia.md index be3fd3dd02..f62df5b55f 100644 --- a/dev-docs/bidders/embimedia.md +++ b/dev-docs/bidders/embimedia.md @@ -20,11 +20,11 @@ aliasCode: limelightDigital sidebarType: 1 --- -### Note +## Note The Embi Media Bidding adapter requires setup before beginning. -### Bid Params +## Bid Params {: .table .table-bordered .table-striped } @@ -32,3 +32,7 @@ The Embi Media Bidding adapter requires setup before beginning. |:--------------|:---------|:----------------------|:-----------------------|:----------| | `host` | required | Ad network's RTB host | `'bidder-embi.media'` | `string` | | `publisherId` | required | Publisher ID | `12345` | `integer` | + +Prebid Embi Media server-side Prebid Server adapter requires only `publisherId` and `host` parameters. But Prebid Embi Media client-side Prebid.js adapter requires only `host`, `adUnitId`, `adUnitType`. + +Prebid Embi Media server-side Prebid Server adapter supports only `banner`, `video`, `audio`, `native` media types. But Prebid Embi Media client-side Prebid.js adapter supports only `banner` and `video` media types, doesn't support `audio` and `native`. From eaa61241447cb37c9282133c9bfc409607371ad6 Mon Sep 17 00:00:00 2001 From: mkdefinemedia Date: Thu, 14 May 2026 19:14:59 +0200 Subject: [PATCH 581/665] fix(download): correct Define Media bidder module casing (#6561) * fix(download): correct Define Media bidder module casing The download page derives bidder module IDs from the bidder doc filename. The old lowercase filename produced definemediaBidAdapter, so the generated package omitted the actual defineMediaBidAdapter module. Rename the bidder doc to defineMedia.md so the generated moduleCode matches the adapter name. * docs(defineMedia): fix markdownlint issues Adjust heading levels and table formatting in the Define Media bidder doc * docs(defineMedia): preserve old bidder doc URL --- .../bidders/{definemedia.md => defineMedia.md} | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) rename dev-docs/bidders/{definemedia.md => defineMedia.md} (53%) diff --git a/dev-docs/bidders/definemedia.md b/dev-docs/bidders/defineMedia.md similarity index 53% rename from dev-docs/bidders/definemedia.md rename to dev-docs/bidders/defineMedia.md index 57a8d1cb1d..c1da1fd483 100644 --- a/dev-docs/bidders/definemedia.md +++ b/dev-docs/bidders/defineMedia.md @@ -2,7 +2,9 @@ layout: bidder title: DEFINE MEDIA description: Prebid DEFINE MEDIA Bidder Adapter -biddercode: definemedia +biddercode: defineMedia +redirect_from: + - /dev-docs/bidders/definemedia.html tcfeu_supported: true gvl_id: 440 media_types: banner @@ -15,14 +17,14 @@ prebid_member: false sidebarType: 1 --- -### Registration +## Registration Please reach out to our account management team to get started. Contact information is available under [definemedia.de](https://definemedia.de). -### Bid Params +## Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Type | Description | Example -| ---- | ----- |---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------| ------- -| `supplierDomainName` | required | String | The domain name of the last supplier in the chain. Under this domain a sellers.json must be available under https://${supplierDomainName}/sellers.json | definemedia.de -| `devMode` | optional | boolean | This parameter enables our development endpoint instead of the production endpoint. All requests done with this parameter set to "true" are *NOT* billable | true +| Name | Scope | Type | Description | Example | +| :------------------- | :------- | :------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- | +| `supplierDomainName` | required | String | The domain name of the last supplier in the chain. Under this domain a sellers.json must be available under https://${supplierDomainName}/sellers.json | definemedia.de | +| `devMode` | optional | boolean | This parameter enables our development endpoint instead of the production endpoint. All requests done with this parameter set to "true" are *NOT* billable | true | From c39c62c2dcddfabd1280c7638bc7324f691f7f94 Mon Sep 17 00:00:00 2001 From: Gabriel Chicoye Date: Thu, 14 May 2026 19:35:50 +0200 Subject: [PATCH 582/665] MTC Bid Adapter: fix tagId example value in docs (#6555) Update tagId example from `testnexx` to `textmtrc` in the MTC bidder documentation to match the value publishers should use. Co-authored-by: Gabriel Chicoye Co-authored-by: Claude Opus 4.7 (1M context) --- dev-docs/bidders/mtc.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dev-docs/bidders/mtc.md b/dev-docs/bidders/mtc.md index 30318fd57f..35f0804427 100644 --- a/dev-docs/bidders/mtc.md +++ b/dev-docs/bidders/mtc.md @@ -27,7 +27,7 @@ multiformat_supported: will-bid-on-any {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | |---------------|----------|----------------------------|-------------------------------------- |-----------| -| `tagId` | required*| Media Tradecraft tag ID | `"testnexx"` | `string` | +| `tagId` | required*| Media Tradecraft tag ID | `"textmtrc"` | `string` | | `placement` | required*| Media Tradecraft placement | `"test.com_header_ad"` | `string` | *You *must* only include one ID field - either `tagId` or `placement`, not both. If you have questions on which parameter to use, please reach out to your Account Manager. @@ -66,7 +66,7 @@ var adUnits = [ bids: [{ bidder: 'mtc', params: { - tagId: 'testnexx' + tagId: 'textmtrc' } }] }, @@ -82,7 +82,7 @@ var adUnits = [ bids: [{ bidder: 'mtc', params: { - tagId: 'testnexx' + tagId: 'textmtrc' } }] }, @@ -105,7 +105,7 @@ var adUnits = [ bids: [{ bidder: 'mtc', params: { - tagId: 'testnexx' + tagId: 'textmtrc' } }] } From b7b172e55b8e4276f9f44f150a671992e0ee5311 Mon Sep 17 00:00:00 2001 From: Patrick McCann Date: Thu, 14 May 2026 13:38:57 -0400 Subject: [PATCH 583/665] Update display name to 'Storage Control' (#6553) --- dev-docs/modules/storageControl.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/modules/storageControl.md b/dev-docs/modules/storageControl.md index 9c467841f0..e43dc2cbd3 100644 --- a/dev-docs/modules/storageControl.md +++ b/dev-docs/modules/storageControl.md @@ -4,7 +4,7 @@ page_type: module title: Module - Storage Control description: Check or enforce disclosure of device storage use module_code : storageControl -display_name : storageControl +display_name : Storage Control enable_download : true recommended: true sidebarType : 1 From 7458213609fee43dbb7e6faa831fafc47d4ce397 Mon Sep 17 00:00:00 2001 From: v0idxyz <58184010+v0idxyz@users.noreply.github.com> Date: Thu, 14 May 2026 13:40:46 -0400 Subject: [PATCH 584/665] ReVantage Bid Adapter: Add gvlid (#6551) * Add Revantage Bidder Adapter documentation Added documentation for the Revantage Bidder Adapter, including registration, bid parameters, configuration for banner and video ads, user syncing, privacy support, and price floors. * Remove notes about bid requests and sync URLs Removed notes section detailing bid requests and notifications. * Update dev-docs/bidders/revantage.md Co-authored-by: Muki Seiler * Update dev-docs/bidders/revantage.md Co-authored-by: Muki Seiler * Change tcfeu_supported to false for Revantage * Update Revantage documentation with code examples * Set GVL ID to 1588 for Revantage Updated GVL ID for Revantage bidder adapter. * tcfeu_supported true --------- Co-authored-by: Muki Seiler --- dev-docs/bidders/revantage.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-docs/bidders/revantage.md b/dev-docs/bidders/revantage.md index 3067a476ac..817da9dc93 100644 --- a/dev-docs/bidders/revantage.md +++ b/dev-docs/bidders/revantage.md @@ -3,8 +3,8 @@ layout: bidder title: Revantage description: Prebid Revantage Bidder Adapter biddercode: revantage -tcfeu_supported: false -gvl_id: none +tcfeu_supported: true +gvl_id: 1588 usp_supported: true gpp_sids: tcfeu, tcfca, usnat, usstate_all, usp coppa_supported: false From 30490b3607fcc80ca2db6aa04337ff81583ae161 Mon Sep 17 00:00:00 2001 From: GoAdserver Date: Thu, 14 May 2026 19:43:29 +0200 Subject: [PATCH 585/665] New Bidder: goadserver (#6550) * New Bidder: goadserver Documentation for the goadserver Prebid.js adapter merged in prebid/Prebid.js#14701. One bidder code (goadserver) serves every goadserver deployment; publishers select the deployment via params.host and authenticate the ad unit via params.token. Supports banner, video (instream + outstream), and native via ortbConverter, with optional per-bid floor, subid, and PMP deals. GVL ID is not yet registered with IAB Europe; gvl_id is set to none and tcfeu_supported to false until the registration lands, at which point this page will be updated in a follow-up PR. * goadserver: fix markdownlint failures (heading levels + table style) --- dev-docs/bidders/goadserver.md | 170 +++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 dev-docs/bidders/goadserver.md diff --git a/dev-docs/bidders/goadserver.md b/dev-docs/bidders/goadserver.md new file mode 100644 index 0000000000..5a62c5fc67 --- /dev/null +++ b/dev-docs/bidders/goadserver.md @@ -0,0 +1,170 @@ +--- +layout: bidder +title: GoAdserver +description: Prebid GoAdserver Bidder Adapter +pbjs: true +pbs: false +biddercode: goadserver +userIds: +media_types: banner, video, native +schain_supported: true +dchain_supported: false +ortb_blocking_supported: partial +floors_supported: true +multiformat_supported: will-bid-on-any +tcfeu_supported: false +dsa_supported: false +gvl_id: none +usp_supported: true +coppa_supported: true +gpp_sids: none +userId: no +safeframes_ok: true +deals_supported: true +fpd_supported: true +prebid_member: false +privacy_sandbox: no +sidebarType: 1 +--- + +## Note + +GoAdserver is a self-hosted, multi-tenant ad serving platform with a built-in OpenRTB 2.5 Prebid Server endpoint. One adapter (`goadserver`) serves every deployment — the specific ad server is selected per-ad-unit via `params.host`, and the publisher's SSP campaign authentication token (issued in the GoAdserver panel) is passed via `params.token`. Publishers running multiple GoAdserver instances can mix and match them in a single Prebid.js config by setting different `params.host` values on different ad units. + +Requests are POSTed to `https://{params.host}/openrtb2/auction`. The token lands in the outgoing BidRequest as `site.publisher.id`, which the GoAdserver auction handler uses to resolve the publisher account. + +For setup or to obtain a token, contact . + +## Bid Parameters + +{: .table .table-bordered .table-striped } + +| Name | Scope | Description | Example | Type | +| --- | --- | --- | --- | --- | +| `host` | required | The GoAdserver deployment's public domain. The adapter POSTs to `https://{host}/openrtb2/auction`. | `"ads.example.com"` | `string` | +| `token` | required | SSP campaign authentication token from the publisher's GoAdserver panel. Forwarded as `site.publisher.id`. | `"a1b2c3d4..."` | `string` | +| `floor` | optional | Per-bid CPM floor (USD). Honored only when the [Price Floors module](/dev-docs/modules/floors.html) hasn't already set `imp.bidfloor`. | `0.50` | `number` | +| `subid` | optional | Per-impression sub-identifier for stats attribution (page section, A/B group, etc.). Emitted as `imp.ext.goadserver.subid` and logged against the bid in GoAdserver reporting. | `"article_page"` | `string` | +| `deals` | optional | Array of private marketplace deal objects attached to this impression. Each entry maps to OpenRTB `imp.pmp.deals[]`: `id` (required), `bidfloor`, `bidfloorcur`, `at`, `wseat[]`, `wadomain[]`. See example below. | see below | `Object[]` | +| `outstreamRendererUrl` | optional | Override URL for the outstream video renderer script. Defaults to `https://{host}/prebid-outstream.js`, which every GoAdserver deployment hosts. Set this to self-host or bundle a custom player. | `"https://cdn.pub.example.com/my-outstream.js"` | `string` | + +## Deals / Private Marketplace + +```js +bids: [{ + bidder: 'goadserver', + params: { + host: 'ads.example.com', + token: 'your-sspcampaigns-hash', + deals: [ + { id: 'DEAL_XYZ', bidfloor: 2.50, bidfloorcur: 'USD' }, + { id: 'DEAL_ABC', bidfloor: 1.00, at: 1, wseat: ['agency-42'] } + ] + } +}] +``` + +Deal objects are forwarded verbatim to downstream DSPs. Winning bids return with `bid.dealid`, surfaced by Prebid.js as `bid.dealId` for GAM line-item targeting. + +## Outstream Video + +Outstream is supported via the standard `mediaTypes.video.context: 'outstream'` setting. When a video bid is returned for an outstream ad unit, the adapter attaches a Prebid.js `Renderer` that loads the GoAdserver-hosted outstream player. The player parses the VAST XML, injects a muted auto-playing `