From bae56f9eedeba4b8b9afaf35ba2bf6eb70e2bde9 Mon Sep 17 00:00:00 2001 From: jordicher-exte Date: Tue, 11 Aug 2026 11:10:13 +0200 Subject: [PATCH 01/54] Richaudience Bid Adapter: remove supplyType param (#6692) supplyType is no longer used or required by the adapter, so drop it from the documented bid params. --- dev-docs/bidders/richaudience.md | 1 - 1 file changed, 1 deletion(-) diff --git a/dev-docs/bidders/richaudience.md b/dev-docs/bidders/richaudience.md index 0429d123c0..7717ac2261 100644 --- a/dev-docs/bidders/richaudience.md +++ b/dev-docs/bidders/richaudience.md @@ -23,6 +23,5 @@ sidebarType: 1 | Name | Scope | Description | Example | Type | |-------------|-----------------|----------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------|------------| | `pid` | required | The placement ID from Rich Audience. | `'ADb1f40rmi'` | `string` | -| `supplyType`| required | Define if site or app. | `'site / app'` | `string` | | `ifa` | optional | Identifier For Advertisers | `'AAAAAAAAA-BBBB-CCCC-1111-222222220000234234234234234'` | `string` | | `keywords` | optional | A key-value applied only to the configured bid. This value is optional. Strings separated by semicolon. | `car=mercedes;car=audi;` | `string` | From e967a91e18cf36dac8550b6ecd3d58b7d3f3edba Mon Sep 17 00:00:00 2001 From: Alexandr Kim <47887567+alexandr-kim-vl@users.noreply.github.com> Date: Tue, 11 Aug 2026 14:13:43 +0500 Subject: [PATCH 02/54] Yaleo Bid Adapter: document endpoint override configuration (#6683) --- dev-docs/bidders/yaleo.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/dev-docs/bidders/yaleo.md b/dev-docs/bidders/yaleo.md index cd45bbb8e7..841cd0e091 100644 --- a/dev-docs/bidders/yaleo.md +++ b/dev-docs/bidders/yaleo.md @@ -13,11 +13,11 @@ pbs: false sidebarType: 1 --- -### Note +## Note The Yaleo Bidding adapter requires setup before beginning. Please contact us at [hola@yaleo.com](mailto:hola@yaleo.com). -### Bid Params +## Bid Params {: .table .table-bordered .table-striped } @@ -26,3 +26,15 @@ The Yaleo Bidding adapter requires setup before beginning. Please contact us at | `placementId` | required | Yaleo placement identifier. |`460a301d-a9f7-4104-b55f-2a3d4674a973`|`string`| | `memberId` | optional | Member identifier. |`12345`. |`number`| | `maxCpm` | optional | Maximum CPM value. Bids with a CPM higher than the specified value will be rejected. |`2.5` |`number`| + +## Configuration + +The bidder endpoint can be overridden via global configuration for testing against a non-production environment. Only the approved HTTPS Yaleo endpoints are accepted (`https://bidder.yaleo.com/prebid` and `https://dev-bidder.yaleo.com/prebid`); any other value is ignored and the production endpoint is used. + +```javascript +pbjs.setConfig({ + yaleo: { + endpoint: 'https://dev-bidder.yaleo.com/prebid' + } +}); +``` From 1118b5bad47a338b26ebcb47c6744aa47d3d1615 Mon Sep 17 00:00:00 2001 From: teqblaze <162988436+teqblaze@users.noreply.github.com> Date: Tue, 11 Aug 2026 12:14:22 +0300 Subject: [PATCH 03/54] Native Agents adapter: update bidder doc for accuracy (video support, GDPR) (#6681) * updated ntvagents.md according to code * fix(docs): resolve markdownlint MD060/MD047 issues in ntvagents.md Align table column pipes to satisfy MD060 table-column-style and add missing trailing newline for MD047. * address review feedback on ntvagents.md - Remove horizontal rule separators - Remove Supported Features and Privacy sections (duplicate front-matter metadata already rendered by the bidder layout) - Remove Bidder Aliasing section (aliasing is a Prebid.js core feature, not adapter-specific) * Update dev-docs/bidders/ntvagents.md * Update dev-docs/bidders/ntvagents.md * Update dev-docs/bidders/ntvagents.md * fix(docs): fix blank-line lint error and complete overview sentence - Apply muuki88's suggested wording ("...for the ad formats described below.") that was left unapplied when the old paragraph was deleted - Fixes MD012 (multiple consecutive blank lines) introduced by that deletion --------- Co-authored-by: Samonin Co-authored-by: Muki Seiler --- dev-docs/bidders/ntvagents.md | 248 ++++++++++++++++++++++++++++++++-- 1 file changed, 240 insertions(+), 8 deletions(-) diff --git a/dev-docs/bidders/ntvagents.md b/dev-docs/bidders/ntvagents.md index 2f45839851..a9b585a3dd 100644 --- a/dev-docs/bidders/ntvagents.md +++ b/dev-docs/bidders/ntvagents.md @@ -1,13 +1,15 @@ --- layout: bidder title: Native Agents -description: Prebid Native Agents Bidder Adapter +description: Native Agents Prebid Bidder Adapter biddercode: ntvagents gpp_sids: usstate_all tcfeu_supported: false +dsa_supported: false usp_supported: true coppa_supported: true schain_supported: true +dchain_supported: false deals_supported: false floors_supported: true fpd_supported: false @@ -18,18 +20,248 @@ userIds: all pbjs: true pbs: true pbs_app_supported: true +prebid_member: false safeframes_ok: true sidebarType: 1 --- -## Bid Params +# Native Agents Bidder Adapter + +The Native Agents bidder enables publishers to monetize their inventory through the Native Agents advertising platform using either **Prebid.js** or **Prebid Server**, for the ad formats described below. + +# Registration + +Before integrating the Native Agents bidder, your inventory must be configured within the Native Agents platform. + +During onboarding, Native Agents creates: + +- A **Supply Source** representing your website or mobile application. +- One or more **Placements** representing individual ad locations on your inventory. + +Each Placement receives a unique **placementId**, which is used by the bidder to identify the inventory during bidding. + +Depending on your account configuration, Native Agents may instead provide an **endpointId**. + +Only **one** identifier is required when configuring the bidder. + +For onboarding and production credentials, contact your Native Agents account representative. + +# Bid Parameters + +Specify **either** `placementId` **or** `endpointId`. + +Do **not** provide both. {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|---------------|----------|--------------|---------------------------------|------------| -| `placementId` | optional | Placement Id | `'0'` | `'string'` | -| `endpointId` | optional | Endpoint Id | `'0'` | `'string'` | -## Note +| Name | Required | Description | Type | Example | +|-------------|----------|---------------------------------------------------------------------------------|--------|------------| +| placementId | No* | Unique identifier for a Placement configured within the Native Agents platform. | String | `"100001"` | +| endpointId | No* | Unique identifier for an Endpoint configured for your account. | String | `"200001"` | + +\*One of `placementId` or `endpointId` is required. + +# Banner Example + +```javascript +var adUnits = [{ + code: "banner-div", + + mediaTypes: { + banner: { + sizes: [ + [300,250], + [300,600] + ] + } + }, + + bids: [{ + bidder: "ntvagents", + + params: { + placementId: "100001" + } + }] +}]; +``` + +# Native Example + +```javascript +var adUnits = [{ + code: "native-div", + + mediaTypes: { + native: { + ortb: { + assets: [ + { + id: 1, + required: 1, + title: { + len: 100 + } + }, + { + id: 2, + required: 1, + img: { + type: 3, + w: 300, + h: 250 + } + }, + { + id: 3, + required: 1, + data: { + type: 1 + } + } + ] + } + } + }, + + bids: [{ + bidder: "ntvagents", + + params: { + placementId: "100001" + } + }] +}]; +``` + +# Video Example + +Both **Instream** and **Outstream** video contexts are supported. + +```javascript +var adUnits = [{ + code: "video-div-instream", + + mediaTypes: { + video: { + context: "instream", + playerSize: [640,480], + mimes: ["video/mp4"], + protocols: [2,3,5,6], + api: [2], + minduration: 5, + maxduration: 30, + linearity: 1 + } + }, + + bids: [{ + bidder: "ntvagents", + + params: { + placementId: "100001" + } + }] +}]; +``` + +```javascript +var adUnits = [{ + code: "video-div-outstream", + + mediaTypes: { + video: { + context: "outstream", + playerSize: [640,480], + mimes: ["video/mp4"], + protocols: [2,3,5,6], + api: [2], + maxduration: 30, + linearity: 1 + } + }, + + bids: [{ + bidder: "ntvagents", + + params: { + placementId: "100001" + } + }] +}]; +``` + +# OpenRTB Support + +The Native Agents bidder converts Prebid bid requests into OpenRTB bid requests before forwarding them to the Native Agents bidding platform. + +The adapter supports OpenRTB requests for: + +- Banner +- Native +- Video (Instream & Outstream) + +using the corresponding OpenRTB object definitions. + +# Creative Rendering + +The Native Agents bidder returns creatives compatible with standard Prebid rendering workflows. + +Supported creative formats include: + +| Media Type | Response | +|------------------------------|-----------------------| +| Banner | HTML Markup | +| Native | OpenRTB Native Assets | +| Video (Instream & Outstream) | VAST XML / VAST URL | + +Banner and Native creatives are rendered using Prebid's standard rendering pipeline. + +Video responses return VAST-compatible creatives suitable for both instream video players and supported outstream video players. + +# User Sync + +Native Agents supports both iframe and image user synchronization. + +```javascript +pbjs.setConfig({ + userSync: { + filterSettings: { + iframe: { + bidders: ["ntvagents"], + filter: "include" + }, + image: { + bidders: ["ntvagents"], + filter: "include" + } + } + } +}); +``` + +User synchronization is performed only when permitted by applicable privacy regulations. + +# Test Parameters + +Native Agents provides test placements during onboarding. + +Replace the example values below with the test identifiers supplied by your Native Agents account representative. + +```javascript +{ + bidder: "ntvagents", + + params: { + placementId: "100001" + } +} +``` + +# Notes -For the prebid server and prebid.js you only need to use one parameter: either placementId or endpointId +- Configure **either** `placementId` **or** `endpointId`. +- Banner, Native, and Video (Instream & Outstream) are supported. +- Compatible with both **Prebid.js** and **Prebid Server**. +- Inventory must be configured within the Native Agents platform before bid requests can be made. +- Native Agents also supports Direct Tag and JavaScript tag integrations outside of Prebid. Refer to the Native Agents integration documentation for those integration methods. From a5c4fff1b3aab9b0f0b443b277dba3d2e8e1ee7c Mon Sep 17 00:00:00 2001 From: advertronic Date: Tue, 11 Aug 2026 13:22:24 +0300 Subject: [PATCH 04/54] Add advertronic bidder adapter docs (#6694) * Add advertronic bidder adapter docs * Address review: multiformat_supported, mailto link, markdown lint --- dev-docs/bidders/advertronic.md | 38 +++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 dev-docs/bidders/advertronic.md diff --git a/dev-docs/bidders/advertronic.md b/dev-docs/bidders/advertronic.md new file mode 100644 index 0000000000..0db4dc17cf --- /dev/null +++ b/dev-docs/bidders/advertronic.md @@ -0,0 +1,38 @@ +--- +layout: bidder +title: Advertronic +description: Prebid Advertronic Bidder Adapter +biddercode: advertronic +media_types: banner, video +multiformat_supported: will-bid-on-any +tcfeu_supported: false +usp_supported: false +coppa_supported: false +schain_supported: false +deals_supported: false +floors_supported: true +safeframes_ok: true +pbjs: true +pbs: false +sidebarType: 1 +--- + +## Note + +The Advertronic bid adapter connects to Advertronic SSP (Russian supply-side +platform). Both `publisherId` and `placementId` are issued during onboarding — +reach out to . + +Bids are returned **net to the publisher** in **RUB**: enable the currency +module (or set `adServerCurrency: "RUB"`) if your ad server currency differs. + +Video is supported for both contexts. For `outstream` the adapter supplies its +own renderer (loaded from Advertronic servers) unless the ad unit defines one. + +## Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|------------------------------------------|------------------|----------| +| `publisherId` | required | Publisher ID issued during onboarding | `'42'` | `string` | +| `placementId` | required | Placement token issued during onboarding | `'a1b2c3d4e5f6'` | `string` | From 1aaf373f8b34b1e55d7fde4afc6e93e5f93667d9 Mon Sep 17 00:00:00 2001 From: teqblaze <162988436+teqblaze@users.noreply.github.com> Date: Tue, 11 Aug 2026 13:29:58 +0300 Subject: [PATCH 05/54] feat(docs): smb docs added (#6640) --- dev-docs/bidders/SMB.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 dev-docs/bidders/SMB.md diff --git a/dev-docs/bidders/SMB.md b/dev-docs/bidders/SMB.md new file mode 100644 index 0000000000..f681d50b08 --- /dev/null +++ b/dev-docs/bidders/SMB.md @@ -0,0 +1,31 @@ +--- +layout: bidder +title: SMB +description: SMB Bidder Adapter +biddercode: SMB +usp_supported: true +coppa_supported: true +schain_supported: true +media_types: banner, video, native +safeframes_ok: true +deals_supported: false +floors_supported: true +fpd_supported: false +pbjs: true +pbs: true +pbs_app_supported: true +multiformat_supported: will-bid-on-any +--- + + +## 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 3d55e1510bb770c30b7be057d33423477f8e8e71 Mon Sep 17 00:00:00 2001 From: ad8pod Date: Tue, 11 Aug 2026 20:32:33 +1000 Subject: [PATCH 06/54] Update eightpod Bidder Adaptor doc and eightpod Analytics Adapter docs (#6644) * Update eightpod Bidder Adaptor doc and eightpod Analytics Adapter docs * Fix markdown lint errors --- dev-docs/analytics/eightPod.md | 15 ------- dev-docs/analytics/eightpod.md | 25 +++++++++++ dev-docs/bidders/eightPod.md | 51 ---------------------- dev-docs/bidders/eightpod.md | 79 ++++++++++++++++++++++++++++++++++ 4 files changed, 104 insertions(+), 66 deletions(-) delete mode 100644 dev-docs/analytics/eightPod.md create mode 100644 dev-docs/analytics/eightpod.md delete mode 100644 dev-docs/bidders/eightPod.md create mode 100644 dev-docs/bidders/eightpod.md diff --git a/dev-docs/analytics/eightPod.md b/dev-docs/analytics/eightPod.md deleted file mode 100644 index f53db035a6..0000000000 --- a/dev-docs/analytics/eightPod.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: analytics -title: 8pod -description: 8pod Analytics Adapter -modulecode: eightPodAnalyticsAdapter -tcfeu_supported: false -usp_supported: false -coppa_supported: false -prebid_member: false -gvl_id: none -enable_download: false ---- - -### Disclosure -The adapter subscribe on events from 8pod's ad unit when the bidWon event for each ad slot and then send internal event to our tracker once in 10 sec. diff --git a/dev-docs/analytics/eightpod.md b/dev-docs/analytics/eightpod.md new file mode 100644 index 0000000000..214e5aa29e --- /dev/null +++ b/dev-docs/analytics/eightpod.md @@ -0,0 +1,25 @@ +--- +layout: analytics +title: 8pod +description: 8pod Analytics Adapter +modulecode: eightpodAnalyticsAdapter +tcfeu_supported: false +usp_supported: false +coppa_supported: false +prebid_member: false +gvl_id: none +enable_download: false +--- + +## Configuration + +```javascript +pbjs.enableAnalytics({ + provider: 'eightpod' +}); +``` + +Use the lowercase provider code `eightpod` to match adapter registration. + +### Disclosure +The adapter subscribes to events from 8pod's ad unit when the bidWon event fires for each ad slot and sends supported ad unit events to Tealium from the rendered ad frame. diff --git a/dev-docs/bidders/eightPod.md b/dev-docs/bidders/eightPod.md deleted file mode 100644 index e9fcf8cf17..0000000000 --- a/dev-docs/bidders/eightPod.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: bidder -title: 8pod -description: Prebid EightPod Bidder Adaptor -biddercode: eightPod -tcfeu_supported: false -gvl_id: none -usp_supported: false -coppa_supported: false -gpp_sids: none -schain_supported: false -dchain_supported: false -userId: none -media_types: banner, video -deals_supported: false -userIds: check with bidder -floors_supported: false -fpd_supported: true -pbjs: true -pbs: false -prebid_member: false -sidebarType: 1 -safeframes_ok: false -multiformat_supported: will-not-bid -privacy_sandbox: no -ortb_blocking_supported: false ---- - -### Registration - -The EightPod adapter requires setup before beginning. Please contact us at - -### Bid Params - -| Name | Scope | Description | Example | Type | -|---------------|----------|-------------------------------------------------------------------------------------------------------------|----------------------------|----------| -| `placementId` | required | The unique identifier of the ad placement. Could be obtained from the 8pod UI or from your account manager. | "placementId-438753744289" | `string` | -| `publisherId` | optional | The unique identifier of the publisher. | "publisherId-438753744289" | `string` | - -### First Party Data - -We accept all standard OpenRTB 2.6 fields for following object: - -`ortb2.site` -`ortb2.user` -`ortb2.device` -`ortb2.user.data.*` -`ortb2.site.content.data` - -Note that all fields are optional. For contextual data (e.g. categories), standard IAB taxonomies are supported. -Also, note that any 1st party data circulation should be agreed in advance. diff --git a/dev-docs/bidders/eightpod.md b/dev-docs/bidders/eightpod.md new file mode 100644 index 0000000000..c6bb36fd0e --- /dev/null +++ b/dev-docs/bidders/eightpod.md @@ -0,0 +1,79 @@ +--- +layout: bidder +title: 8pod +description: Prebid EightPod Bidder Adaptor +biddercode: eightpod +filename: eightpodBidAdapter +tcfeu_supported: true +gvl_id: 1497 +usp_supported: true +coppa_supported: true +gpp_sids: tcfeu, tcfca, usnat, usstate_all, usp +schain_supported: false +dchain_supported: false +userIds: unifiedId, id5Id, identityLink, uid2 +media_types: banner +deals_supported: true +floors_supported: false +fpd_supported: true +pbjs: true +pbs: false +prebid_member: false +sidebarType: 1 +safeframes_ok: false +multiformat_supported: will-not-bid +privacy_sandbox: no +ortb_blocking_supported: false +--- + +## Registration + +The EightPod adapter requires setup before beginning. Please contact us at + +## Privacy Regulation Support + +The EightPod adapter passes through GDPR (TCF), US Privacy (CCPA/USP), GPP, and COPPA consent signals in OpenRTB bid requests: + +| Regulation | OpenRTB fields | +| --- | --- | +| GDPR (TCF EU) | `user.ext.consent`, `regs.ext.gdpr` | +| US Privacy (CCPA/USP) | `regs.ext.us_privacy` | +| GPP | `regs.gpp`, `regs.gpp_sid`, `regs.ext.gpp`, `regs.ext.gpp_sid` | +| COPPA | `regs.coppa` | + +The adapter is registered with IAB Global Vendor List ID **1497**. + +Bid responses populate `meta.advertiserDomains` from OpenRTB `adomain` and set `meta.mediaType` to `banner`. + +The adapter relies on Prebid's OpenRTB conversion for User ID module values and preserves identifiers in `user.ext.eids`. Publishers should use User ID modules or `ortb2.user.ext.eids` for identity signals. + +The `userIds` metadata above indicates supported Prebid User ID modules, including UID2. Their identifiers are expected to flow through OpenRTB `user.ext.eids`; they are not copied into `user.id`. + +## User Identifier Disclosure + +The adapter does not create or persist any browser storage values. When available, it reads the Tealium `utag_main_v_id` cookie and sends it in the OpenRTB extended identifiers field as `user.ext.eids` with source `8podx.com`. For backward compatibility, the same value is also sent as `user.ext.eightPodVisitorId`; publishers may override this value with `params.eightPodVisitorId`. This identifier is used only as an EightPod/Tealium visitor reference for bidder-side matching and reporting. The adapter does not set the cookie, and its lifetime is controlled by the Tealium configuration. + +Prebid User ID module values remain the preferred source for OpenRTB `user.ext.eids`. + +## Bid Params + +OpenRTB first-party data should be supplied through `ortb2` / `ortb2Imp`. The adapter preserves Prebid User ID module identifiers in `user.ext.eids`. + +| Name | Scope | Description | Example | Type | +| --- | --- | --- | --- | --- | +| `placementId` | optional | The unique identifier of the ad placement. When provided, sent as OpenRTB `imp.tagid`; also sent as legacy `ext.adSlotPlacementId` for compatibility. Could be obtained from the 8pod UI or from your account manager. | "placementId-438753744289" | `string` | +| `publisherId` | optional, legacy override | Overrides OpenRTB `site.publisher.id` when provided. Prefer `ortb2.site.publisher.id`. | "publisherId-438753744289" | `string` | +| `dealId` | optional | PMP deal ID sent as `imp.pmp.deals[].id` when provided. | "deal-123" | `string` | +| `trace` | optional | Enables trace mode by adding `?trace=true` to the bidder endpoint for debugging. | true | `boolean` or `string` | +| `userId` | optional, legacy override | Overrides OpenRTB `user.id` when provided. Prefer User ID modules or `ortb2.user.ext.eids`. | "user-123" | `string` | +| `eightPodVisitorId` | optional | Publisher-provided EightPod/Tealium visitor reference sent as OpenRTB `user.ext.eids` and legacy `user.ext.eightPodVisitorId`. Overrides the `utag_main_v_id` cookie value when provided. | "visitor-123" | `string` | +| `country` | optional, legacy override | Overrides OpenRTB `device.geo.country` and `user.geo.country` when provided. Prefer `ortb2.device.geo.country` / `ortb2.user.geo.country`. | "AUS" | `string` | +| `language` | optional, legacy override | Overrides OpenRTB `device.language` when provided. Prefer `ortb2.device.language`. | "en" | `string` | +| `publishercat` | optional, legacy override | Comma-separated override for OpenRTB `site.publisher.cat`. Prefer `ortb2.site.publisher.cat`. | "IAB1,IAB2" | `string` | +| `sitecat` | optional, legacy override | Comma-separated override for OpenRTB `site.cat`. Prefer `ortb2.site.cat`. | "IAB3" | `string` | +| `pagecat` | optional, legacy override | Comma-separated override for OpenRTB `site.pagecat`. Prefer `ortb2.site.pagecat`. | "IAB4" | `string` | +| `sectioncat` | optional, legacy override | Comma-separated override for OpenRTB `site.sectioncat`. Prefer `ortb2.site.sectioncat`. | "IAB5" | `string` | +| `yob` | optional, legacy override | Overrides OpenRTB `user.yob` when provided. Prefer `ortb2.user.yob`. | 1990 | `number` or `string` | +| `gender` | optional, legacy override | Overrides OpenRTB `user.gender` when provided. Prefer `ortb2.user.gender`. | "M" | `string` | +| `city` | optional, legacy override | Overrides OpenRTB `user.geo.city` when provided. Prefer `ortb2.user.geo.city`. | "Sydney" | `string` | +| `region` | optional, legacy override | Overrides OpenRTB `user.geo.region` when provided. Prefer `ortb2.user.geo.region`. | "NSW" | `string` | From 707185702601f4d91bb5e55b2adb93e10cf6a537 Mon Sep 17 00:00:00 2001 From: prebid-compas Date: Tue, 11 Aug 2026 13:32:43 +0300 Subject: [PATCH 07/54] Add Prebid.js support for Synapse HX bidder (#6657) --- dev-docs/bidders/synapsehx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/bidders/synapsehx.md b/dev-docs/bidders/synapsehx.md index 99bd11a539..68bd66153d 100644 --- a/dev-docs/bidders/synapsehx.md +++ b/dev-docs/bidders/synapsehx.md @@ -12,7 +12,7 @@ multiformat_supported: will-bid-on-any safeframes_ok: false schain_supported: false usp_supported: true -pbjs: false +pbjs: true pbs: true prebid_member: false fpd_supported: false From cfb7164aacb3de9d81e8820acb6ea341f1f8604b Mon Sep 17 00:00:00 2001 From: Haruki Fujimoto <56620731+harufujimoto@users.noreply.github.com> Date: Fri, 14 Aug 2026 15:13:31 +0900 Subject: [PATCH 08/54] Unicorn bid adapter: document ad slot position signals (#6674) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Unicorn RTD Provider: add module documentation Docs for the Unicorn RTD Provider submodule added in prebid/Prebid.js#15379. * Unicorn RTD Provider docs: wrap maintainer email to satisfy markdownlint MD034 * Document UNICORN adapter position signals; drop obsolete RTD module doc The RTD provider was removed upstream (prebid/Prebid.js#15379) — the position/geometry/viewability measurement now runs inline in the bid adapter. This makes the standalone RTD module doc obsolete (it also described a stale wire format: ortb2Imp.ext.data.adslot / imp.ext.adslot / banner.pos=2). Remove dev-docs/modules/unicornRtdProvider.md and instead document the current, adapter-native behavior in the bidder doc: imp.banner.pos (1/3) and imp.ext.unicorn { ver, ratio, fixed, sticky, w, h, x, y }, plus the slot element resolution order. Co-Authored-By: Claude Sonnet 5 * Fix markdownlint in unicorn bidder doc (heading level, compact table) Editing the file made CI lint the whole doc, surfacing pre-existing violations: MD001 (first heading must be h2 given the front-matter title, not h3) and MD060 (table must use the compact pipe style). Reformat the heading levels and the bid-params table to match the repo's markdownlint config; verified locally with markdownlint-cli2 (0 issues). Co-Authored-By: Claude Sonnet 5 * Restore aligned bid-params table; sync key name to imp.ext.adslot Per review feedback, keep the readable aligned table instead of the compact reformat. The original failed markdownlint MD060 only because it was inconsistent (aligned header, compact data rows); aligning all rows satisfies MD060's "aligned" style while preserving readability (verified locally with markdownlint-cli2, 0 issues). Also update the position-signal key from imp.ext.unicorn to imp.ext.adslot to match the adapter after prebid/Prebid.js#15483, and document imp.ext.gpid. Co-Authored-By: Claude Sonnet 5 --------- Co-authored-by: Claude Sonnet 5 --- dev-docs/bidders/unicorn.md | 38 +++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/dev-docs/bidders/unicorn.md b/dev-docs/bidders/unicorn.md index 91360b76cc..f3028816bb 100644 --- a/dev-docs/bidders/unicorn.md +++ b/dev-docs/bidders/unicorn.md @@ -10,15 +10,37 @@ biddercode: unicorn sidebarType: 1 --- -### bid params +## bid params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|---------------|----------|-------------------------------------------|------------|-----------| -| `placementId` | optional | Your placement ID | `'rectangle-ad-1'` | `string` | -| `accountId` | required | Account ID for charge request (provided by UNICORN) | `12345` | `integer` | -| `publisherId` | optional | Account specific publisher id. | `'67890'` | `string` | -| `mediaId` | optional | Publisher specific media id. | `'example'` | `string` | -| `bcat` | optional for Prebid.js | Blocked IAB categories | `['IAB-1', 'IAB-2']` | `[string]` | +| Name | Scope | Description | Example | Type | +| ------------- | ---------------------- | --------------------------------------------------- | -------------------- | ---------- | +| `placementId` | optional | Your placement ID | `'rectangle-ad-1'` | `string` | +| `accountId` | required | Account ID for charge request (provided by UNICORN) | `12345` | `integer` | +| `publisherId` | optional | Account specific publisher id. | `'67890'` | `string` | +| `mediaId` | optional | Publisher specific media id. | `'example'` | `string` | +| `bcat` | optional for Prebid.js | Blocked IAB categories | `['IAB-1', 'IAB-2']` | `[string]` | `publisherId` as `integer` is also supported on Prebid.js + +## Ad slot position signals + +For each bid request the adapter measures the ad slot's on-screen position, +geometry and viewability, and sends it in the OpenRTB request it builds. This is +scoped to the UNICORN request only — nothing is written to shared First Party +Data, so no other bidder is affected. No configuration is required. + +- `imp.banner.pos` — OpenRTB AdPosition (`1` = above the fold, `3` = below the + fold). A publisher-declared `ortb2Imp.banner.pos`, if present, is used instead + of the measured value. +- `imp.ext.adslot` — `{ ver, ratio, fixed, sticky, w, h, x, y }`: `ratio` is the + visible-area ratio (0–1), `fixed`/`sticky` flag a fixed/sticky ancestor, and + `x`/`y`/`w`/`h` are the slot's document-relative position and rendered size in + CSS pixels. +- `imp.ext.gpid` — the Global Placement ID, forwarded from `ortb2Imp.ext.gpid` + (set by the `gpid` / `gptPreAuction` module) when present. + +The slot element is resolved in this order: `ortb2Imp.ext.data.divId` → the GPT +slot mapping (`getSlotElementId()`) → the ad unit code. Set +`ortb2Imp.ext.data.divId` when the ad unit code is not the div id and GPT is not +defined at auction time. From 7477e5542cdd5889c8120021649a41d28085b306 Mon Sep 17 00:00:00 2001 From: Anna Yablonsky Date: Mon, 17 Aug 2026 19:43:28 +0300 Subject: [PATCH 09/54] Copper6 Adapter - adding document (#6597) * adding document * working on the right file * remove nonexistent user id manager * name * keep backward compatibility * stype fix --------- Co-authored-by: Anna Yablonsky --- dev-docs/bidders/copper6ssp.md | 124 ++++++++++++++++++++++++++++----- 1 file changed, 107 insertions(+), 17 deletions(-) diff --git a/dev-docs/bidders/copper6ssp.md b/dev-docs/bidders/copper6ssp.md index ee0131c1ac..0e8d59f0e0 100644 --- a/dev-docs/bidders/copper6ssp.md +++ b/dev-docs/bidders/copper6ssp.md @@ -3,34 +3,124 @@ layout: bidder title: Copper6SSP description: Prebid Copper6SSP Bidder Adapter biddercode: copper6ssp -gpp_sids: usstate_all -gvl_id: 1356 -tcfeu_supported: true +userIds: criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId +tcfeu_supported: false usp_supported: true -coppa_supported: true +gvl_id: 1356 +coppa_supported: false schain_supported: true -deals_supported: false +gpp_sids: tcfeu, tcfca, usnat, usstate_all, usp floors_supported: true +media_types: banner, video +prebid_member: false +safeframes_ok: false +deals_supported: false +pbs_app_supported: false 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 +pbs: false sidebarType: 1 --- -### Bid Params +## Bid Params for Prebid.js +### New request params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|---------------|----------|--------------|---------------------------------|------------| -| `placementId` | optional | Placement Id | `'0'` | `'string'` | -| `endpointId` | optional | Endpoint Id | `'0'` | `'string'` | -### Note +| Name | Scope | Description | Example | Type | +|---------------|----------|------------------------------------------------------------------------------------------|------------------------------|------------| +| `cId` | required | The connection ID from Copper6. | `'562524b21b1c1f08117fc7f9'` | `string` | +| `pId` | required | The publisher ID from Copper6 (pbjs only). | `'59ac17c192832d0011283fe3'` | `string` | +| `bidFloor` | optional | The minimum bid value desired. Copper6 will not respond with bids lower than this value. | `0.90` | `float` | + +### backward compatibility (will be removed in v12) +{: .table .table-bordered .table-striped } + +| Name | Scope | Description | Example | Type | +|---------------|----------|------------------------------------------------------------------------------------------|------------------------------|------------| +| `placementId` | optional | Placement Id | `'0'` | `'string'` | +| `endpointId` | optional | Endpoint Id | `'0'` | `'string'` | + +## Bid Params for Prebid Server + +{: .table .table-bordered .table-striped } + +| Name | Scope | Description | Example | Type | +|------------|----------|------------------------------------------------------------------------------------------|------------------------------|----------| +| `cId` | required | The connection ID from Copper6. | `'562524b21b1c1f08117fc7f9'` | `string` | + +### Example + +#### New request example + + ```javascript +var adUnits = [{ + code: 'banner-div', + mediaTypes: { + banner: { + sizes: [ + [300, 250], + [728, 90] + ] + } + }, + bids: [{ + bidder: 'copper6ssp', + params: { + cId: '562524b21b1c1f08117fc7f9', // Required - PROVIDED DURING SETUP... + pId: '59ac17c192832d0011283fe3', // Required - PROVIDED DURING SETUP... + bidFloor: 1.23 // Optional + } + }] +} +]; + +// configure pbjs to enable user syncing +pbjs.setConfig({ + userSync: { + filterSettings: { + iframe: { + bidders: 'copper6ssp', + filter: 'include' + } + } + } +}); +``` + +#### Supported backward compatibility + +``` javascript +var adUnits = [{ + code: 'banner-div', + mediaTypes: { + banner: { + sizes: [ + [300, 250], + [728, 90] + ] + } + }, + bids: [{ + bidder: 'copper6ssp', + params: { + placementId: '562524b21b1c1f08117fc7f9', + } + }] +} +]; -For the prebid server and prebid.js you only need to use one parameter: either placementId or endpointId +// configure pbjs to enable user syncing +pbjs.setConfig({ + userSync: { + filterSettings: { + iframe: { + bidders: 'copper6ssp', + filter: 'include' + } + } + } +}); +``` From b2fd198d51ca94bde4f17304e73f82b276769ce0 Mon Sep 17 00:00:00 2001 From: floxis-admin Date: Tue, 18 Aug 2026 14:19:56 +0300 Subject: [PATCH 10/54] Floxis: set gvl_id to 1609 (#6698) * Floxis: set gvl_id to 1609 The shipped Prebid.js adapter has declared gvlid 1609 since it merged, and IAB GVL vendor 1609 is registered to Ad Tech Company OU, but this page still reads gvl_id: none - so TCF publishers evaluating the adapter see it as having no registered vendor ID. * Floxis: fix markdownlint errors in the bidder doc Section headings were h3 with no h2 parent (MD001) and the table delimiter row was unpadded while the rest of the table was padded (MD060). --- dev-docs/bidders/floxis.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/dev-docs/bidders/floxis.md b/dev-docs/bidders/floxis.md index e8c7b1f75b..5d04f78684 100644 --- a/dev-docs/bidders/floxis.md +++ b/dev-docs/bidders/floxis.md @@ -10,7 +10,7 @@ safeframes_ok: true sidebarType: 1 tcfeu_supported: true dsa_supported: false -gvl_id: none +gvl_id: 1609 usp_supported: true coppa_supported: true gpp_supported: true @@ -25,29 +25,29 @@ ortb_blocking_supported: true privacy_sandbox: no --- -### Note +## Note The Floxis bidder adapter enables integration with the Floxis programmatic advertising platform via Prebid.js. It supports banner, video, and native formats with OpenRTB 2.x compliance. Please contact Floxis to set up your partner account and obtain the required parameters. -### Bid Params +## Bid Params {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | -|------|-------|-------------|---------|------| +| ------ | ------- | ----------- | ------- | ---- | | `seat` | required | Seat identifier provided by Floxis | `"testSeat"` | `string` | | `region` | required | Region identifier for routing | `"us-e"` | `string` | | `partner` | required | Partner identifier provided by Floxis | `"floxis"` | `string` | -### Floors Support +## Floors Support The Floxis adapter supports the Prebid.js [Floors Module](https://docs.prebid.org/dev-docs/modules/floors.html). Floor values are automatically included in the OpenRTB request as `imp.bidfloor` and `imp.bidfloorcur`. -### Privacy Support +## Privacy Support Privacy fields (GDPR, USP, GPP, COPPA) are handled by Prebid.js core and automatically included in the OpenRTB request. -### AdUnit Configuration for Banner +## AdUnit Configuration for Banner ```javascript var adUnits = [{ @@ -68,7 +68,7 @@ var adUnits = [{ }]; ``` -### AdUnit Configuration for Video +## AdUnit Configuration for Video ```javascript var adUnits = [{ @@ -94,7 +94,7 @@ var adUnits = [{ }]; ``` -### AdUnit Configuration for Native +## AdUnit Configuration for Native ```javascript var adUnits = [{ @@ -128,7 +128,7 @@ var adUnits = [{ }]; ``` -### Example +## Example ```javascript var pbjs = pbjs || {}; From 43ea8143082a15d61d65da8a52e94e54ffabdbfe Mon Sep 17 00:00:00 2001 From: austinbyron <59710247+austinbyron@users.noreply.github.com> Date: Tue, 18 Aug 2026 15:46:24 -0700 Subject: [PATCH 11/54] New Bidder: Ezoic (#6614) * Add Ezoic bidder adapter documentation * Ezoic: banner/video/native media types, app supported * Use h2 headings per markdownlint MD001 --- dev-docs/bidders/ezoic.md | 41 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 dev-docs/bidders/ezoic.md diff --git a/dev-docs/bidders/ezoic.md b/dev-docs/bidders/ezoic.md new file mode 100644 index 0000000000..32b483fb37 --- /dev/null +++ b/dev-docs/bidders/ezoic.md @@ -0,0 +1,41 @@ +--- +layout: bidder +title: Ezoic +description: Prebid Ezoic Bidder Adapter +biddercode: ezoic +tcfeu_supported: true +gvl_id: 347 +usp_supported: true +gpp_sids: tcfeu, usp +coppa_supported: false +schain_supported: true +dchain_supported: false +media_types: banner, video, native +safeframes_ok: false +deals_supported: false +floors_supported: true +fpd_supported: true +pbjs: false +pbs: true +pbs_app_supported: true +multiformat_supported: will-bid-on-one +ortb_blocking_supported: false +privacy_sandbox: no +sidebarType: 1 +--- + +## Registration + +The Ezoic bidder adapter requires approval before use. Bids are returned +only for publisher domains that have been registered and approved by +Ezoic; requests for unapproved inventory receive no-bid responses. +Contact to get set up before adding the bidder. + +## Bid Params + +The Ezoic adapter requires no parameters. + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|--------------|-----------|----------| +| `placementId` | optional | Placement ID | `'11111'` | `string` | From 144ddbf688f98c4e130889c6bf3839e9964414cc Mon Sep 17 00:00:00 2001 From: franklong-sa Date: Tue, 18 Aug 2026 18:47:09 -0400 Subject: [PATCH 12/54] StackAdapt: enable PBS (#6496) * StackAdapt: enable PBS * demote headers --- dev-docs/bidders/stackadapt.md | 181 ++++++++++++++++++++++++++++++--- 1 file changed, 168 insertions(+), 13 deletions(-) diff --git a/dev-docs/bidders/stackadapt.md b/dev-docs/bidders/stackadapt.md index 08c57e01fa..c4973a48dc 100644 --- a/dev-docs/bidders/stackadapt.md +++ b/dev-docs/bidders/stackadapt.md @@ -4,12 +4,12 @@ title: StackAdapt description: StackAdapt Prebid Bidder Adapter biddercode: stackadapt pbjs: true -pbs: false +pbs: true gvl_id: 238 tcfeu_supported: true usp_supported: true userId: all -media_types: banner, video +media_types: banner, video, native, audio coppa_supported: true gpp_sids: tcfeu, tcfca, usnat, usstate_all, usp gpp_supported: true @@ -25,15 +25,22 @@ prebid_member: false sidebarType: 1 --- -### Bid Params +## Note + +- Prebid.js supports `banner` and `video` format only. +- Prebid Server supports `banner`, `video`, `native`, and `audio` formats. +- `supplyId` is required for Prebid Server only. It identifies the supply source and is provided by StackAdapt. + +## Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|---------------|----------|-----------------------------|--------------------|----------| -| `publisherId` | required | StackAdapt provided id | `'4cd53a92ra91'` | `string` | -| `placementId` | optional | StackAdapt provided id | `'e95365f397a7'` | `string` | -| `banner` | optional | banner supporting expdir | `{expdir: [1, 3]}` | `object` | -| `bidfloor` | optional | bid floor price | `1.01` | `float` | +| Name | Scope | Description | Example | Type | +|---------------|--------------------|-------------------------------------------|--------------------|----------| +| `publisherId` | required | StackAdapt provided id | `'4cd53a92ra91'` | `string` | +| `supplyId` | required (PBS only)| Supply source ID, provided by StackAdapt | `'ssp-1'` | `string` | +| `placementId` | optional | StackAdapt provided id | `'e95365f397a7'` | `string` | +| `banner` | optional | banner supporting expdir | `{expdir: [1, 3]}` | `object` | +| `bidfloor` | optional | bid floor price | `1.01` | `float` | The following banner parameters are supported: @@ -42,9 +49,9 @@ The following banner parameters are supported: |----------|----------|-----------------------------------|----------|------------------| | `expdir` | optional | Directions the banner may expand. | `[1, 3]` | `Array[integer]` | -### Banner +## Banner -#### `mediaTypes.banner` Parameters +### `mediaTypes.banner` Parameters The StackAdapt bid adapter requires `sizes` to be defined in valid format. See [mediaTypes.banner](https://docs.prebid.org/dev-docs/adunit-reference.html#adUnit.mediaTypes.banner) for defining mediaTypes parameters. @@ -65,6 +72,7 @@ Below are banner ad unit examples with required and optional parameters: bidder: 'stackadapt', params: { publisherId: '4cd53a92ra91', + supplyId: '9891', } }] }, @@ -81,6 +89,7 @@ Below are banner ad unit examples with required and optional parameters: bidder: 'stackadapt', params: { publisherId: '4cd53a92ra91', + supplyId: '9891', placementId: 'e95365f397a7', bidfloor: 1.01, banner: { @@ -92,9 +101,9 @@ Below are banner ad unit examples with required and optional parameters: ]; ``` -### Video +## Video -#### `mediaTypes.video` Parameters +### `mediaTypes.video` Parameters The StackAdapt bid adapter requires `mimes`, `protocols`, `maxduration`, `api`, and `plcmt` to be defined in valid format. See [mediaTypes.video](https://docs.prebid.org/dev-docs/adunit-reference.html#adUnit.mediaTypes.video) for defining mediaTypes parameters. @@ -119,6 +128,7 @@ Below are video ad unit examples with required and optional parameters: bidder: 'stackadapt', params: { publisherId: '4cd53a92ra91', + supplyId: '9891', } }] }, @@ -148,6 +158,151 @@ Below are video ad unit examples with required and optional parameters: bidder: 'stackadapt', params: { publisherId: '4cd53a92ra91', + supplyId: '9891', + placementId: 'e95365f397a7', + bidfloor: 1.01, + } + }] + } + ]; +``` + +## Native + +### `mediaTypes.native` Parameters + +The StackAdapt bid adapter requires `request` to be defined with a valid native request payload containing `assets`. +The `request` field is a JSON-encoded string following the [OpenRTB Native Ads Specification](https://www.iab.com/wp-content/uploads/2018/03/OpenRTB-Native-Ads-Specification-Final-1.2.pdf). Each asset in the request must include at least one image (type 3 for main image) or video asset. +See [mediaTypes.native](https://docs.prebid.org/dev-docs/adunit-reference.html#adUnit.mediaTypes.native) for defining mediaTypes parameters. + +Below are native ad unit examples with required and optional parameters: + +```js + var adUnits = [ + // Native adUnit - required parameters + { + code: 'div-test-ad-5', + mediaTypes: { + native: { + ortb: { + ver: '1.1', + assets: [ + { + id: 1, + required: 1, + img: { + type: 3, + w: 1200, + h: 627 + } + } + ] + } + } + }, + bids: [{ + bidder: 'stackadapt', + params: { + publisherId: '4cd53a92ra91', + supplyId: '9891', + } + }] + }, + // Native adUnit - including optional parameters + { + code: 'div-test-ad-6', + mediaTypes: { + native: { + ortb: { + ver: '1.1', + assets: [ + { + id: 1, + required: 1, + title: { + len: 90 + } + }, + { + id: 2, + required: 0, + data: { + type: 2, + len: 140 + } + }, + { + id: 3, + required: 1, + img: { + type: 3, + w: 1200, + h: 627 + } + } + ] + } + } + }, + bids: [{ + bidder: 'stackadapt', + params: { + publisherId: '4cd53a92ra91', + supplyId: '9891', + placementId: 'e95365f397a7', + bidfloor: 1.01, + } + }] + } + ]; +``` + +## Audio + +### `mediaTypes.audio` Parameters + +The StackAdapt bid adapter requires `mimes` and `protocols` to be defined in valid format. +See [mediaTypes.audio](https://docs.prebid.org/dev-docs/adunit-reference.html#adUnit.mediaTypes.audio) for defining mediaTypes parameters. + +Below are audio ad unit examples with required and optional parameters: + +```js + var adUnits = [ + // Audio adUnit - required parameters + { + code: 'div-test-ad-7', + mediaTypes: { + audio: { + mimes: ['audio/mp4', 'audio/mpeg'], + protocols: [2, 3, 5, 6] + } + }, + bids: [{ + bidder: 'stackadapt', + params: { + publisherId: '4cd53a92ra91', + supplyId: '9891', + } + }] + }, + // Audio adUnit - including optional parameters + { + code: 'div-test-ad-8', + mediaTypes: { + audio: { + mimes: ['audio/mp4', 'audio/mpeg', 'audio/ogg'], + protocols: [2, 3, 5, 6, 7, 8], + minduration: 5, + maxduration: 30, + startdelay: 0, + api: [1, 2] + } + }, + bids: [{ + bidder: 'stackadapt', + params: { + publisherId: '4cd53a92ra91', + supplyId: '9891', placementId: 'e95365f397a7', bidfloor: 1.01, } From 6e98eb134f9115ffc5539b6018fa2d86a3f81624 Mon Sep 17 00:00:00 2001 From: prebid-reklamup Date: Wed, 19 Aug 2026 08:10:56 +0300 Subject: [PATCH 13/54] Reklamup Bid Adapter: update adapter (#6666) * New adapter reklamup * New adapter reklamup: Disable pbs and pbs_app_supported * Reklamup Adapter: set pbs and pbs_app_supported to true * Reklamup Adapter: Heading levels * feat(tcfVendor): added --------- Co-authored-by: Reklamup Co-authored-by: Vitalii Sumlennyi --- dev-docs/bidders/reklamup.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dev-docs/bidders/reklamup.md b/dev-docs/bidders/reklamup.md index 6a967912b0..e0d5f6e95b 100644 --- a/dev-docs/bidders/reklamup.md +++ b/dev-docs/bidders/reklamup.md @@ -4,7 +4,8 @@ title: Reklamup description: Prebid Reklamup Bidder Adapter biddercode: reklamup gpp_sids: usstate_all -tcfeu_supported: false +gvl_id: 1619 +tcfeu_supported: true usp_supported: true coppa_supported: true schain_supported: true From 7600dafa792ffc722b275cd9f94e221adbdbcf62 Mon Sep 17 00:00:00 2001 From: Anna Yablonsky Date: Thu, 20 Aug 2026 16:25:30 +0300 Subject: [PATCH 14/54] Adapter copper6 (#6709) * adding document * working on the right file * remove nonexistent user id manager * name * keep backward compatibility * stype fix * fixing broken the markup * fixing broken the markup --------- Co-authored-by: Anna Yablonsky --- dev-docs/bidders/copper6ssp.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dev-docs/bidders/copper6ssp.md b/dev-docs/bidders/copper6ssp.md index 0e8d59f0e0..a2b588a52a 100644 --- a/dev-docs/bidders/copper6ssp.md +++ b/dev-docs/bidders/copper6ssp.md @@ -27,6 +27,7 @@ sidebarType: 1 ## Bid Params for Prebid.js ### New request params + {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | @@ -35,7 +36,8 @@ sidebarType: 1 | `pId` | required | The publisher ID from Copper6 (pbjs only). | `'59ac17c192832d0011283fe3'` | `string` | | `bidFloor` | optional | The minimum bid value desired. Copper6 will not respond with bids lower than this value. | `0.90` | `float` | -### backward compatibility (will be removed in v12) +### Backward compatibility (will be removed in v12) + {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | From d5ca7969b37861c5803b21ad7859ce29a0acdcd7 Mon Sep 17 00:00:00 2001 From: Pavlo Kyrylenko Date: Fri, 21 Aug 2026 00:26:24 +0300 Subject: [PATCH 15/54] Anonymised user ID module added (#6705) Co-authored-by: Pavlo --- .../modules/userid-submodules/anonymised.md | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 dev-docs/modules/userid-submodules/anonymised.md diff --git a/dev-docs/modules/userid-submodules/anonymised.md b/dev-docs/modules/userid-submodules/anonymised.md new file mode 100644 index 0000000000..ddd4b5478e --- /dev/null +++ b/dev-docs/modules/userid-submodules/anonymised.md @@ -0,0 +1,79 @@ +--- +layout: userid +title: Anonymised ID +description: Anonymised ID User ID sub-module +useridmodule: anonymisedIdSystem +bidRequestUserId: anonymisedId +eidsource: anonymised.io +example: '"01f6a483-86fa-406b-a7c2-45f6d4a89469"' +--- + + +Anonymised is a data anonymization technology for privacy-preserving advertising. + +The Anonymised User ID sub-module exposes the identifier that the [Anonymised Marketing Tag](https://support.anonymised.io/integrate/marketing-tag?t=LPukVCXzSIcRoal5jggyeg) assigns when a user signs in, and passes it to the bid stream as an OpenRTB Extended ID under the source `anonymised.io`. + +The sub-module makes no network request and loads no script. It reads the identifier the Marketing Tag has already stored on the publisher's own domain, in `localStorage` under the key `anon-cuid`. When the Marketing Tag is not present, or the user is not signed in, no ID is read and no EID is added — which is the expected state for most traffic, not an error. + +## Prerequisite + +The Anonymised Marketing Tag must be installed on the page. This sub-module does not load it. The tag can be installed [natively](https://support.anonymised.io/integrate/install-the-anonymised-tag-natively?t=LPukVCXzSIcRoal5jggyeg), or through the [Anonymised RTD Provider](/dev-docs/modules/anonymisedRtdProvider.html) using its `tagConfig` parameter. + +Please contact an [Anonymised representative](mailto:support@anonymised.io) to get started. + +Add the Anonymised ID to your Prebid.js package with: + +```bash +gulp build --modules=userId,anonymisedIdSystem +``` + +## Anonymised ID Configuration + +{: .table .table-bordered .table-striped } + +| Param under userSync.userIds[] | Scope | Type | Description | Example | +| --- | --- | --- | --- | --- | +| name | Required | String | The name of this module | `"anonymisedId"` | + +This sub-module takes no `params`. + +### Do not configure `storage` + +This sub-module manages the identifier itself and must be configured **without** a `storage` object. + +The Marketing Tag is the single source of truth for the identifier: it writes the value when the user signs in, and removes it on sign-out and on consent withdrawal. If Prebid.js kept its own copy, that copy would outlive the removal and the sub-module would keep sending a stale identifier to bidders until Prebid's own expiry elapsed. Reading the value on every initialization keeps the Marketing Tag's removal authoritative. + +### Do not set `userSync.ppid` to `anonymised.io` + +The Marketing Tag sets the Google Ad Manager Publisher Provided ID itself. Setting `userSync.ppid` to `anonymised.io` makes Prebid.js set the PPID as well, which produces two problems: + +* Prebid.js strips non-alphanumeric characters from an ID before setting it as the PPID, while the Marketing Tag sends the identifier unmodified. The same user is then represented by two different PPIDs depending on which code path ran, splitting Google Ad Manager audiences and reporting. +* The Marketing Tag applies its own logic when deciding whether a PPID should be set at all. Prebid.js is not aware of that logic and would bypass it. + +The Marketing Tag owns the identifier sent to Google Ad Manager; this sub-module owns the identifier sent to bidders. + +### Single-page applications + +`getId` is called when the User ID module initializes and is not re-run for subsequent auctions. If a user signs in after that point, call `pbjs.refreshUserIds({ submoduleNames: ['anonymisedId'] })` to pick up the new identifier. + +Always pass `submoduleNames`. An unscoped refresh re-initializes every configured ID sub-module, including those that make network requests. + +### Subdomains + +The identifier is read from `localStorage`, which is scoped to a single origin. For a publisher serving the same user from more than one subdomain, the identifier is available on each subdomain only after the Marketing Tag has run there. + +### Data deletion + +Deletion requests are handled by the Anonymised Marketing Tag, which owns the user's session and every identifier derived from it. This sub-module stores nothing of its own and therefore implements no `onDataDeletionRequest` callback. + +## Anonymised ID Example + +```javascript +pbjs.setConfig({ + userSync: { + userIds: [{ + name: 'anonymisedId' + }] + } +}); +``` From 355731a2d797f1af139b2e109858052022a01a08 Mon Sep 17 00:00:00 2001 From: Peter Lazaridis <64111309+ocm-peter@users.noreply.github.com> Date: Fri, 21 Aug 2026 00:26:47 +0300 Subject: [PATCH 16/54] Updates old aliased ocm bid adapter dev docs with the new, actual OCM bid adapter (#6655) * Updates old aliased ocm bid adapter dev docs with the new, actual OCM bid adapter * fixes markdown issue * docs(ocm): Update bidder metadata fields --- dev-docs/bidders/ocm.md | 100 ++++++---------------------------------- 1 file changed, 15 insertions(+), 85 deletions(-) diff --git a/dev-docs/bidders/ocm.md b/dev-docs/bidders/ocm.md index 408e1bba9e..3ecc307f6f 100644 --- a/dev-docs/bidders/ocm.md +++ b/dev-docs/bidders/ocm.md @@ -1,107 +1,37 @@ --- layout: bidder -title: Orangeclickmedia +title: OCM description: Prebid OCM Bidder Adapter biddercode: ocm -media_types: video,banner +media_types: video,banner,native tcfeu_supported: true gpp_supported: true -userIds: britepoolId, criteo, id5Id, identityLink, liveIntentId, netId, parrableId, pubCommonId, unifiedId +userIds: criteo, id5Id, panoramaId, pubCommonId, unifiedId schain_supported: true +dchain_supported: true coppa_supported: true usp_supported: true -safeframes_ok: true +safeframes_ok: false prebid_member: true +multiformat_supported: will-bid-on-any +ortb_blocking_supported: partial pbjs: true pbs: false -deals_supported: false +deals_supported: true +floors_supported: true gvl_id: 1148 sidebarType: 1 --- -### Bid params +## Bid params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|-------|----------|---------------------------------|----------|-----------| -| `aid` | required | The source ID from OCM. | `529814` | `integer` | +| Name | Scope | Description | Example | Type | +|---------------|----------|----------------------------------------|---------------|----------| +| `publisherId` | required | The publisher id (e.g. "domain.tld") | `example.com` | `string` | +| `placementId` | required | Domain-wide placement id | `1234567890` | `string` | ### Description OCM header bidding adapter connects with OCM demand sources in order to fetch bids. -This adapter provides a solution for accessing Video demand and display demand. - -### Test Parameters - -``` javascript - var adUnits = [ - - // Video instream adUnit - { - code: 'test-div', - mediaTypes: { - video: { - context: 'instream', - playerSize: [640, 480] - } - }, - bids: [{ - bidder: 'ocm', - params: { - aid: 472386 - } - }] - }, - - // Video outstream adUnit - { - code: 'test-div', - mediaTypes: { - video: { - context: 'outstream', - playerSize: [640, 480] - } - }, - bids: [{ - bidder: 'ocm', - params: { - aid: 472386 - } - }] - }, - - // Video ADPOD adUnit - { - code: 'test-div', - sizes: [[640, 480]], - mediaTypes: { - video: { - context: 'adpod', - playerSize: [640, 480] - } - }, - bids: [{ - bidder: 'ocm', - params: { - aid: 472386 - } - }] - }, - - // Banner adUnit - { - code: 'test-div', - mediaTypes:{ - banner:{ - sizes: [[300, 250]] - } - } - bids: [{ - bidder: 'ocm', - params: { - aid: 529814 - } - }] - } - ]; -``` +This adapter provides a solution for accessing Video, Display and Native demand. From bc9d112b5d58fb4f5b56f82dcfffc8f8b1f94e3a Mon Sep 17 00:00:00 2001 From: teqblaze <162988436+teqblaze@users.noreply.github.com> Date: Fri, 21 Aug 2026 00:50:39 +0300 Subject: [PATCH 17/54] docs: add Overview section for Native Agents bidder adapter (#6710) Co-authored-by: prebid_maintainers --- dev-docs/bidders/ntvagents.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/dev-docs/bidders/ntvagents.md b/dev-docs/bidders/ntvagents.md index a9b585a3dd..4ab9c3eac2 100644 --- a/dev-docs/bidders/ntvagents.md +++ b/dev-docs/bidders/ntvagents.md @@ -25,6 +25,13 @@ safeframes_ok: true sidebarType: 1 --- +# Overview + +Publishers may integrate with Native Agents through our Prebid.js and/or Prebid Server adapters. See below. + +{: .alert.alert-info :} +The Native Agents Prebid Server bidding adapter and user sync endpoint require setup before starting. Please contact us at . + # Native Agents Bidder Adapter The Native Agents bidder enables publishers to monetize their inventory through the Native Agents advertising platform using either **Prebid.js** or **Prebid Server**, for the ad formats described below. From 378d936efb73d47a5128acfd30e43ecb94051312 Mon Sep 17 00:00:00 2001 From: Krishna Rathore Date: Tue, 25 Aug 2026 16:30:24 +0530 Subject: [PATCH 18/54] HyperBrainz Bid Adapter: add bidder documentation (#6632) * HyperBrainz Bid Adapter: add bidder documentation * Update markdown formatting in hyperbrainz.md * Fix formatting in HyperBrainz documentation * Fix MD047 trailing newline and table alignment * docs: add missing metadata fields per review, fix markdownlint formatting * Add userId param to Bid Params table and solved the conflict --- dev-docs/bidders/hyperbrainz.md | 47 +++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 dev-docs/bidders/hyperbrainz.md diff --git a/dev-docs/bidders/hyperbrainz.md b/dev-docs/bidders/hyperbrainz.md new file mode 100644 index 0000000000..49ea599413 --- /dev/null +++ b/dev-docs/bidders/hyperbrainz.md @@ -0,0 +1,47 @@ +--- +layout: bidder +title: HyperBrainz +description: Prebid.js HyperBrainz Bid Adapter +biddercode: hyperbrainz +tcfeu_supported: false +gvl_id: none +dsa_supported: false +usp_supported: true +coppa_supported: true +gpp_sids: usnat, usstate_all, usp +schain_supported: true +dchain_supported: false +userIds: all +media_types: banner, video, native +safeframes_ok: true +deals_supported: false +floors_supported: true +fpd_supported: true +pbjs: true +pbs: false +pbs_app_supported: false +prebid_member: false +multiformat_supported: will-bid-on-any +ortb_blocking_supported: false +privacy_sandbox: no +maintainer_email: it@hyperbrainz.com +sidebarType: 1 +--- + +## Note + +The HyperBrainz bid adapter requires setup and approval before +implementation. +Please reach out to for more details. + +## Bid Params + +{: .table .table-bordered .table-striped } + +| Name | Scope | Description | Example | Type | +|----------------|----------|------------------------------------------------------------------|-------------------|----------| +| `placementId` | required | Unique placement identifier | `hb_test_banner` | `string` | +| `publisherId` | optional | Publisher identifier | `pub-1` | `string` | +| `bidFloor` | optional | Minimum CPM floor override (USD) | `0.30` | `number` | +| `userId` | optional | User ID sent as `user.id`; overrides the local storage value | `user-1` | `string` | +| `ext` | optional | Custom extension fields passed to the exchange | `{}` | `object` | From a7998e045c95618601270f08fc80d1501f0ffe35 Mon Sep 17 00:00:00 2001 From: Ivan Stankovic Date: Mon, 31 Aug 2026 09:40:09 +0200 Subject: [PATCH 19/54] Docs(ogury): update documentation for instream video support (#6713) * Add PBS to ogury adapter * docs(ogury): add instream video support * docs(ogury): add instream video support * docs(ogury): add multiformat_supported --------- Co-authored-by: Ivan Krdzavac --- dev-docs/bidders/ogury.md | 48 +++++++++++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/dev-docs/bidders/ogury.md b/dev-docs/bidders/ogury.md index 141be4a1c4..380dcc6bbd 100644 --- a/dev-docs/bidders/ogury.md +++ b/dev-docs/bidders/ogury.md @@ -10,7 +10,8 @@ coppa_supported: false schain_supported: false floors_supported: true dchain_supported: false -media_types: banner +media_types: banner, video +multiformat_supported: will-bid-on-one safeframes_ok: false deals_supported: false pbjs: true @@ -20,7 +21,7 @@ prebid_member: false sidebarType: 1 gpp_sids: tcfeu, usnat, usstate_all --- -### Registration +## Registration Before Ogury's adapter integration, you have to register an account in the Ogury Platform. Please contact if you're interested in a partnership. If you already have an account you'll need to register your websites (= assets) and the placements (= ad units) within the Platform. Alternatively reach out to your POC within Ogury to assist you with the placement creation. @@ -34,10 +35,10 @@ This is the minimal list of params for integrating with Ogury: {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|---------------|----------|-----------------------|-----------|-----------| -| `assetKey` | required | The asset key provided by Ogury | `'OGY-CA41D116484F'` | `string` | -| `adUnitId` | required | Your ad unit id configured with Ogury | `'2c4d61d0-90aa-0139-0cda-0242ac120004'` | `string` | +| Name | Scope | Description | Example | Type | +|------------|----------|---------------------------------------|------------------------------------------|----------| +| `assetKey` | required | The asset key provided by Ogury | `'OGY-CA41D116484F'` | `string` | +| `adUnitId` | required | Your ad unit id configured with Ogury | `'2c4d61d0-90aa-0139-0cda-0242ac120004'` | `string` | NOTE: You don't need these params to integrate with Ogury, see [inventory mapping](#inventory-mapping) @@ -80,6 +81,39 @@ Use this example configuration for enabling Ogury ad server integration on a spe ``` +For video ad units, configure the `video` media type as shown below: + +```javascript +var videoAdUnits = [ + { + code: 'video-ad-unit-code', + mediaTypes: { + video: { + context: 'instream', + playerSize: [[640, 480]], + mimes: ['video/mp4', 'video/webm'], + protocols: [2, 3, 5, 6], + playbackmethod: [1, 2], + maxduration: 30 + } + }, + bids: [ + { + bidder: 'ogury', + params: { + assetKey: 'YOUR_OGURY_ASSET_KEY', + adUnitId: 'YOUR_OGURY_VIDEO_AD_UNIT_ID' + } + } + ] + } +]; + +pbjs.que.push(function () { + pbjs.addAdUnits(videoAdUnits); +}); +``` + #### Inventory mapping _Note: If you choose inventory mapping, you can skip specifying assetKey and adUnitId per ad unit._ @@ -132,7 +166,7 @@ pbjs.que.push(function () { ### Optional bid Params -Depending on your advertising format needs, other optional parameters can be used. Supported parameters are detailed [here](https://ogury-ltd.gitbook.io/mobile-web/header-bidding/ogury-prebid.js-adapter-integration#optional-configuration). +Depending on your advertising format needs, other optional parameters can be used. See the [optional configuration documentation](https://ogury-ltd.gitbook.io/mobile-web/header-bidding/ogury-prebid.js-adapter-integration#optional-configuration) for supported parameters. ### Contact information From ca84963afba6d13fbde028427f77a5a9e50ec55b Mon Sep 17 00:00:00 2001 From: "David K." Date: Wed, 2 Sep 2026 22:39:35 +0100 Subject: [PATCH 20/54] Engerio adapter: Schain support (docs) (#6718) * Engerio adapter: Schain support (docs) * Markdown lint changes --- dev-docs/bidders/engerio.md | 39 ++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/dev-docs/bidders/engerio.md b/dev-docs/bidders/engerio.md index 5ce31d6211..346120faff 100644 --- a/dev-docs/bidders/engerio.md +++ b/dev-docs/bidders/engerio.md @@ -9,7 +9,7 @@ gvl_id: none usp_supported: false coppa_supported: false gpp_sids: none -schain_supported: false +schain_supported: true dchain_supported: false media_types: banner safeframes_ok: true @@ -25,13 +25,42 @@ privacy_sandbox: no sidebarType: 1 --- -### Note +## Note The Engerio adapter requires an active publisher account. Please contact [info@thinkeasy.cz](mailto:info@thinkeasy.cz) to obtain an ad slot code (`adUnitCode`) for your placement. -### Bid Params +## Supply chain + +Engerio publishes [https://api.engerio.sk/sellers.json](https://api.engerio.sk/sellers.json). Your account's seller id from that file is what belongs in your `ads.txt`: + +```text +api.engerio.sk, , DIRECT +``` + +and in the supply chain node for this bidder: + +```javascript +pbjs.setBidderConfig({ + bidders: ['engerio'], + config: { + ortb2: { + source: { + ext: { + schain: { + ver: '1.0', + complete: 1, + nodes: [{ asi: 'api.engerio.sk', sid: '', hp: 1 }] + } + } + } + } + } +}); +``` + +## Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|------|-------|-------------|---------|------| +| Name | Scope | Description | Example | Type | +| ------------ | -------- | -------------------------------------------------------------------------- | -------------------- | -------- | | `adUnitCode` | required | The ad slot identifier configured in the Engerio admin for this placement. | `'homepage-sidebar'` | `string` | From 71c00483bb8ee30a960ae4c548bada3955021dd6 Mon Sep 17 00:00:00 2001 From: teqblaze <162988436+teqblaze@users.noreply.github.com> Date: Thu, 3 Sep 2026 16:26:12 +0300 Subject: [PATCH 21/54] New Adapter: m152 (#6619) * New Adapter: m152 * fix lint * change pbs to false * disable PBS app support in adapter docs * m152: enable PBS support --------- Co-authored-by: 152media --- dev-docs/bidders/m152.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 dev-docs/bidders/m152.md diff --git a/dev-docs/bidders/m152.md b/dev-docs/bidders/m152.md new file mode 100644 index 0000000000..dd5684516c --- /dev/null +++ b/dev-docs/bidders/m152.md @@ -0,0 +1,36 @@ +--- +layout: bidder +title: m152 +description: Prebid m152 Bidder Adapter +biddercode: m152 +gvl_id: 1111 +tcfeu_supported: true +usp_supported: true +coppa_supported: true +gpp_sids: usstate_all +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 a93a0c59ec690e5c736811dfc62dc44766d2f216 Mon Sep 17 00:00:00 2001 From: erani-n Date: Mon, 7 Sep 2026 14:35:36 +0300 Subject: [PATCH 22/54] Geoedge RTD Provider: document outstream video monitoring (#6687) * Geoedge RTD Provider: document outstream video monitoring * Pad table cells to satisfy MD060 * Match the client-load naming from Prebid.js#15262 --- dev-docs/modules/geoedgeRtdProvider.md | 47 ++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/dev-docs/modules/geoedgeRtdProvider.md b/dev-docs/modules/geoedgeRtdProvider.md index 6f734d926c..742dc7fe11 100644 --- a/dev-docs/modules/geoedgeRtdProvider.md +++ b/dev-docs/modules/geoedgeRtdProvider.md @@ -59,13 +59,46 @@ pbjs.setConfig({ Parameters details: {: .table .table-bordered .table-striped } -|Name |Type |Description |Notes | -| :------------ | :------------ | :------------ |:------------ | -|name | String | Real time data module name |Required, always 'geoedge' | -|params | Object | | | -|params.key | String | Customer key |Required, contact Geoedge to get your key | -|params.bidders | Object | Bidders to monitor |Optional, list of bidder to include / exclude from monitoring. Omitting this will monitor bids from all bidders. | -|params.wap |Boolean |Wrap after preload |Optional, defaults to `false`. Set to `true` if you want to monitor only after the module has preloaded the monitoring client. | +| Name | Type | Description | Notes | +| :------------ | :------------ | :------------ | :------------ | +| name | String | Real time data module name | Required, always 'geoedge' | +| params | Object | | | +| params.key | String | Customer key | Required, contact Geoedge to get your key | +| params.bidders | Object | Bidders to monitor | Optional, list of bidder to include / exclude from monitoring. Omitting this will monitor bids from all bidders. | +| params.wap | Boolean | Wrap after client load | Optional, defaults to `false`. Set to `true` if you want to monitor only after the module has loaded the monitoring client. | +| params.outstream | Boolean | Monitor outstream video | Optional, defaults to `false`. Set to `true` to extend monitoring to outstream video bids. See [Outstream video](#outstream-video) below. | + +## Outstream video + +Video creatives are VAST rather than HTML, so they cannot be wrapped the way display creatives are. +With `outstream: true` the module instead wraps the bid's own `renderer.render` and asks the +monitoring client whether the creative may run: + +```javascript +pbjs.setConfig({ + realTimeData: { + dataProviders: [{ + name: 'geoedge', + params: { + key: '123123', + outstream: true + } + }] + } +}); +``` + +Behavior worth knowing before enabling it: + +* **Render timing.** The monitoring client is loaded when the module initializes, so by the time a + bid renders it has normally already answered and rendering proceeds immediately. Only a render that + happens before the client is ready waits for the answer, and that wait is capped by a short + deadline. +* **It fails open.** If the client does not load within that deadline, or loads without a verdict for + the bid, the creative renders unmonitored. An ad is never lost because monitoring was unavailable. +* **It only affects bids Prebid renders through the bid's renderer.** Bids carrying a `safeRenderer`, + and bids whose VAST reaches a player straight from targeting or Prebid Cache, are left untouched. +* **Display monitoring is unchanged.** A bid handled by the outstream path is not also HTML-wrapped. ## Example From 159880741fb94c857b06f1fb99dd3a68e4e87e3c Mon Sep 17 00:00:00 2001 From: BaronJHYu <254878848@qq.com> Date: Tue, 8 Sep 2026 19:52:39 +0800 Subject: [PATCH 23/54] Update: MediaGo Technology LLC Bid Adapter,enable PBS support (#6664) * Upate mediago.md * Mediago bid Adapter:update doc param * Mediago bid Adapter:update doc param * Mediago bid Adapter:update doc param * New Adapter: MediaGo Technology LLC Bid Adapter * New Adapter: MediaGo Technology LLC Bid Adapter * New Adapter: MediaGo Technology LLC Bid Adapter. Use the alias method * Update dev-docs/bidders/mgtechnology.md Co-authored-by: Muki Seiler * MgTechnology Adapter: enable PBS support Set pbs: true now that the prebid-server PR has been submitted. Co-authored-by: Cursor --------- Co-authored-by: Muki Seiler Co-authored-by: Cursor --- dev-docs/bidders/mgtechnology.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/bidders/mgtechnology.md b/dev-docs/bidders/mgtechnology.md index 52f6e5f4ce..7b3b894ce4 100644 --- a/dev-docs/bidders/mgtechnology.md +++ b/dev-docs/bidders/mgtechnology.md @@ -11,7 +11,7 @@ tcfeu_supported: true coppa_supported: true usp_supported: true pbjs: true -pbs: false +pbs: true floors_supported: true gvl_id: 1575 pbjs_version_notes: Registered as an alias of mediagoBidAdapter From 3744ef95f31bff65b10c0bb82293917ac09334df Mon Sep 17 00:00:00 2001 From: decemberWP <155962474+decemberWP@users.noreply.github.com> Date: Tue, 8 Sep 2026 13:59:16 +0200 Subject: [PATCH 24/54] Gopl adapter (#6667) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [gopl-adapter] add description for gopl adapter, remove description for sspBC adapter * Fix markdownlint errors in gopl.md * Add migration note and redirect for renamed sspBC adapter Address review feedback: redirect old /dev-docs/bidders/sspBC links to this page and explain the rename so users aren't confused by the missing docs. Co-Authored-By: Claude Sonnet 5 --------- Co-authored-by: wojciech-bialy-wpm <67895844+wojciech-bialy-wpm@users.noreply.github.com> Co-authored-by: Wojciech Biały Co-authored-by: Claude Sonnet 5 --- dev-docs/bidders/{sspBC.md => gopl.md} | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) rename dev-docs/bidders/{sspBC.md => gopl.md} (53%) diff --git a/dev-docs/bidders/sspBC.md b/dev-docs/bidders/gopl.md similarity index 53% rename from dev-docs/bidders/sspBC.md rename to dev-docs/bidders/gopl.md index ea3a9992f7..177b36574c 100644 --- a/dev-docs/bidders/sspBC.md +++ b/dev-docs/bidders/gopl.md @@ -1,26 +1,26 @@ --- layout: bidder -title: sspBC -description: Prebid sspBC Bidder Adaptor +title: gopl +description: Go.pl Bidder Adaptor pbjs: true pbs: true -biddercode: sspBC +biddercode: gopl +redirect_from: + - /dev-docs/bidders/sspBC media_types: banner, video, native floors_supported: true tcfeu_supported: true -gvl_id: 676 +gvl_id: 690 sidebarType: 1 --- +{: .alert.alert-info :} +This adapter was formerly named `sspBC`. It has been renamed to `gopl`; if you're upgrading from the old integration, update your bidder code from `sspBC` to `gopl`. -### Bid Params +## Bid Params {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | |---------------|----------|----------------------------|-----------------------------|-----------| | `id` | optional | placement id | `'006'` | `string` | | `siteId` | optional | site id | `'235911'` | `string` | -| `publisherId` | optional | publisher id | `'728'` | `string` | -| `domain` | optional | site domain | `'somesite.com'` | `string` | -| `page` | optional | page url | `'somesite.com/index.html'` | `string` | -| `tmax` | optional | tmax for server connection | `400` | `integer` | From 3a7c65a8ba7f56e7111c06ca8f0f013f671d3409 Mon Sep 17 00:00:00 2001 From: erani-n Date: Wed, 9 Sep 2026 01:23:50 +0300 Subject: [PATCH 25/54] GeoEdge RTD Provider: document the display opt-out (#6731) Adds params.display to the parameters table. Optional boolean defaulting to true; setting it to false leaves display bids unwrapped while the outstream gate keeps running. Accompanies the module change in Prebid.js. --- dev-docs/modules/geoedgeRtdProvider.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-docs/modules/geoedgeRtdProvider.md b/dev-docs/modules/geoedgeRtdProvider.md index 742dc7fe11..45bd0468df 100644 --- a/dev-docs/modules/geoedgeRtdProvider.md +++ b/dev-docs/modules/geoedgeRtdProvider.md @@ -67,6 +67,7 @@ Parameters details: | params.bidders | Object | Bidders to monitor | Optional, list of bidder to include / exclude from monitoring. Omitting this will monitor bids from all bidders. | | params.wap | Boolean | Wrap after client load | Optional, defaults to `false`. Set to `true` if you want to monitor only after the module has loaded the monitoring client. | | params.outstream | Boolean | Monitor outstream video | Optional, defaults to `false`. Set to `true` to extend monitoring to outstream video bids. See [Outstream video](#outstream-video) below. | +| params.display | Boolean | Monitor display | Optional, defaults to `true`. Set to `false` to opt out of display monitoring, leaving display bids unwrapped. | ## Outstream video From ace4b61c3770d4e543126d1a2f08d176aa8739d6 Mon Sep 17 00:00:00 2001 From: LeeZXin <48628959+LeeZXin@users.noreply.github.com> Date: Wed, 9 Sep 2026 13:47:48 +0800 Subject: [PATCH 26/54] Add SuperEdge bidder adapter doc (#6672) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add SuperEdge * fix: SuperEdge doc — biddercode, params, region, modules * fix: fix markdown lint * fix: fix markdown lint * Update dev-docs/bidders/superedge.md * fix: SuperEdge doc — address review: pbs false, adapter metadata --------- Co-authored-by: Muki Seiler --- dev-docs/bidders/superedge.md | 160 ++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 dev-docs/bidders/superedge.md diff --git a/dev-docs/bidders/superedge.md b/dev-docs/bidders/superedge.md new file mode 100644 index 0000000000..42e37fd98d --- /dev/null +++ b/dev-docs/bidders/superedge.md @@ -0,0 +1,160 @@ +--- +layout: bidder +title: SuperEdge +description: SuperEdge Prebid Bidder Adapter +biddercode: superedge +media_types: banner,native +userIds: all (with commercial activation) +tcfeu_supported: true +coppa_supported: true +gvl_id: 1554 +usp_supported: true +pbjs: true +pbs: false +floors_supported: true +schain_supported: false +dchain_supported: false +deals_supported: false +fpd_supported: true +multiformat_supported: will-bid-on-any +ortb_blocking_supported: false +sidebarType: 1 +--- + + +## Modules + +SharedID: We need you to include SharedID module, which is used to get prebid user commonid. It can better differentiating users to bid on ads. + +## Note + +The SuperEdge Bidding adapter requires setup before beginning. Please contact us at + +## Bid Params + +### Prebid.js Bid Params + +{: .table .table-bordered .table-striped } +|-------------|-------------|-------------------------------------------------------------------------------------------------|--------------|-----------| +| Name | Scope | Description | Example | Type | +| `sk` | required | Publisher token, communicated by SuperEdge. | `'12341235'` | `string` | +| `publisher` | required | Publisher ID, communicated by SuperEdge. | `'abcdefg'` | `string` | +| `region` | recommended | Server region: `US`, `EU` or `APAC`. Default is `US`. | `'US'` | `string` | +| `test` | recommended | 0 (default): production mode.
1: dev mode, no charge, higher bid frequency for easier debug. | `1` / `0` | `integer` | +| `bidfloor` | recommended | Sets a floor price for the bid. | `0.05` | `float` | + +### Prebid Server Bid Params + +{: .table .table-bordered .table-striped } +|----------|-------------|-------------------------------------------------------|--------------|----------| +| Name | Scope | Description | Example | Type | +| `sk` | required | Publisher token, communicated by SuperEdge. | `'12341235'` | `string` | +| `region` | recommended | Server region: `US`, `EU` or `APAC`. Default is `US`. | `'US'` | `string` | + +## Banner + +```javascript +var adUnits = [{ + code: 'test-div', + mediaTypes: { + banner: { + sizes: [ + [300, 250], + [300, 600] + ] + } + }, + bids: [{ + bidder: 'superedge', + params: { + sk: '12341235', // required + publisher: 'abcdefg', // required + region: 'US', // recommended - US, EU, or APAC + test: 0, // recommended - 0: production, 1: dev + bidfloor: 0.05 // recommended + } + }] +}]; +``` + +## Native + +```javascript +var adUnits = [{ + code: 'test-div-native', + mediaTypes: { + native: { + ortb: { + assets: [{ + id: 1, + required: 1, + img: { + type: 3, + w: 150, + h: 50 + } + }, + { + id: 2, + required: 1, + title: { + len: 80 + } + }, + { + id: 3, + required: 1, + data: { + type: 1 + } + }, + { + id: 4, + required: 1, + data: { + type: 2 + } + }] + } + } + }, + bids: [{ + bidder: 'superedge', + params: { + sk: '12341235', // required + publisher: 'abcdefg', // required + region: 'US', // recommended - US, EU, or APAC + test: 0, // recommended - 0: production, 1: dev + bidfloor: 0.05 // recommended + } + }] +}]; +``` + +## Prebid Server Test Request + +The following test parameters can be used to verify that Prebid Server is working properly with the +server-side SuperEdge adapter. + +```json +{ + "imp": [{ + "id": "some-impression-id", + "banner": { + "format": [{ + "w": 300, + "h": 250 + }, { + "w": 300, + "h": 600 + }] + }, + "ext": { + "bidder": { + "sk": "12341235", + "region": "US" + } + } + }] +} +``` From edab290c611a21bd8f88480ebcdd1f7c2d018649 Mon Sep 17 00:00:00 2001 From: hasanideepak <80700939+hasanideepak@users.noreply.github.com> Date: Fri, 11 Sep 2026 10:56:35 +0530 Subject: [PATCH 27/54] Pinelake - Added first party data information (#6701) * added instructions for first party data * New Bid Adapter : pinelake * Solved heading level issue * pinelake - added first party data information * pinelake - solved markdownlimit error --- dev-docs/bidders/pinelake.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/dev-docs/bidders/pinelake.md b/dev-docs/bidders/pinelake.md index 4ad28b7a9e..d57ec473a5 100644 --- a/dev-docs/bidders/pinelake.md +++ b/dev-docs/bidders/pinelake.md @@ -51,3 +51,30 @@ var adUnits = [ } ]; ``` + +### First Party Data + +In release 4.30 and later, publishers should use the `ortb2` method of setting [First Party Data](https://docs.prebid.org/features/firstPartyData.html). The following fields are supported: + +* ortb2.user.id +* ortb2.user.buyeruid +* ortb2.user.keywords +* ortb2.user.ext.* + +Example first party data that's available to all bidders and all adunits: + +```javascript +pbjs.setConfig({ + ortb2: { + user: { + id: 123456789, // Unique pseudonymized ID for the user (e.g., NPI). + buyeruid: 987654321, // DSP-assigned user ID for identity resolution. + keywords: "kw1,kw2", // Interest or specialty tags (e.g., oncology, cardiology) + ext: { + key1: "values", // Custom healthcare metadata (e.g., icd10), single or comma seperated. + key2: "values" // Additional campaign context (e.g., ndc), single or comma seperated. + } + } + } +}); +``` From ff264496e92cd3912bee42f711ca6af7bc4439a0 Mon Sep 17 00:00:00 2001 From: hellena994 <144453361+hellena994@users.noreply.github.com> Date: Mon, 14 Sep 2026 17:25:04 +0200 Subject: [PATCH 28/54] CWire: Support Video Media Format - Docs Update (#6707) * Updated docs to support video media type * Heading level should increment by one level at a time * Updated docs with information about multiformat support --- dev-docs/bidders/cwire.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/dev-docs/bidders/cwire.md b/dev-docs/bidders/cwire.md index ed58c8ed99..90b373a670 100644 --- a/dev-docs/bidders/cwire.md +++ b/dev-docs/bidders/cwire.md @@ -11,12 +11,13 @@ usp_supported: false schain_supported: false userIds: none enable_download: true -media_types: banner +media_types: banner, video +multiformat_supported: will-bid-on-any sidebarType: 1 --- --- -### Bid Params +## Bid Params {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | @@ -25,7 +26,7 @@ sidebarType: 1 | `placementId` | optional | C-WIRE placement id | `113244` | `integer` | | `domainId` | required | C-WIRE domain id | `2453` | `integer` | -### URL parameters +## URL parameters Additionally, the following parameters can be passed by URL parameters for testing. From dbcd441a89b811dc90e0193e42a32ee7d316d1f4 Mon Sep 17 00:00:00 2001 From: teqblaze <162988436+teqblaze@users.noreply.github.com> Date: Tue, 15 Sep 2026 17:40:20 +0300 Subject: [PATCH 29/54] Update Bid Adapter MCodeMedia (#6739) * 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 * feat(name): MyCodeMedia => MCodeMedia * rafactor(markdown): fix --------- Co-authored-by: MyCodeMedia Co-authored-by: mc-pacobernal <119521439+mc-pacobernal@users.noreply.github.com> --- dev-docs/bidders/mycodemedia.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dev-docs/bidders/mycodemedia.md b/dev-docs/bidders/mycodemedia.md index ac3906834a..7147bceb39 100644 --- a/dev-docs/bidders/mycodemedia.md +++ b/dev-docs/bidders/mycodemedia.md @@ -1,8 +1,8 @@ --- layout: bidder -title: MyCodeMedia -description: Prebid MyCodeMedia Bidder Adapter -biddercode: mycodemedia +title: MCodeMedia +description: Prebid MCodeMedia Bidder Adapter +biddercode: mcodemedia gpp_sids: usstate_all tcfeu_supported: false usp_supported: true @@ -22,7 +22,7 @@ safeframes_ok: true sidebarType: 1 --- -### Bid Params +## Bid Params {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | @@ -30,6 +30,6 @@ sidebarType: 1 | `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 5cb20829ad82c1fb5fde3be1a1ad54ce41c5b85d Mon Sep 17 00:00:00 2001 From: Arthur Buchatsky <66466997+Arthur482@users.noreply.github.com> Date: Tue, 15 Sep 2026 17:51:28 +0300 Subject: [PATCH 30/54] Update pixfuture.md file (#6711) * 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 * Enable PBS support in pixfuture bidder documentation --------- 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 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/bidders/pixfuture.md b/dev-docs/bidders/pixfuture.md index b10b497fac..f920b95041 100644 --- a/dev-docs/bidders/pixfuture.md +++ b/dev-docs/bidders/pixfuture.md @@ -10,7 +10,7 @@ prebid_member: false coppa_supported: true usp_supported: true userIds: criteoId, unifiedId, id5Id, sharedId, identityLink, liveIntentId, fabrickId -pbs: false +pbs: true pbjs: true sidebarType: 1 --- From 03e89b71a05359f5e7411edfd1995cff6fc7516d Mon Sep 17 00:00:00 2001 From: Maksym Danylov <146753616+mdanylov-sigma@users.noreply.github.com> Date: Tue, 15 Sep 2026 17:52:53 +0300 Subject: [PATCH 31/54] Docs(prebid-mobile): deprecate iOS contentUrl, add app.content.url global ORTB example (#6738) * Prebid Mobile: drop unused iOS contentUrl, show app.content.url via global ORTB config Co-Authored-By: Claude Opus 5 * Fix MD060 table spacing in the iOS and Android targeting guides Co-Authored-By: Claude Opus 5 * Keep iOS contentUrl in the Targeting table, marked deprecated until 4.0 Co-Authored-By: Claude Opus 5 --------- Co-authored-by: Claude Opus 5 --- .../pbm-api/android/pbm-targeting-android.md | 10 +++++++++- prebid-mobile/pbm-api/ios/pbm-targeting-ios.md | 14 +++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/prebid-mobile/pbm-api/android/pbm-targeting-android.md b/prebid-mobile/pbm-api/android/pbm-targeting-android.md index e37ef44c9c..d472400a61 100755 --- a/prebid-mobile/pbm-api/android/pbm-targeting-android.md +++ b/prebid-mobile/pbm-api/android/pbm-targeting-android.md @@ -810,7 +810,7 @@ Parameters: {: .table .table-bordered .table-striped } | Parameter | Scope | Type | Description | Example | | --- | --- | --- | --- | --- | -| precision | optional | integer | Number of decimal places to keep, or null for no limit. Values outside the 0-6 range will be clamped to valid range. Default is `null`| 2 | +| precision | optional | integer | Number of decimal places to keep, or null for no limit. Values outside the 0-6 range will be clamped to valid range. Default is `null` | 2 | Related function: getLocationDecimalPrecision(). @@ -846,6 +846,14 @@ TargetingParams.setGlobalOrtbConfig("") The `TargetingParams.setGlobalOrtbConfig()` also allows to **add** impression objects to the request. All objects in the `$.imp[]` array will be added to the request. Note that Ad Unit's `imp` object won't be changed using Global Config. To change the `imp` config, use the `setImpORTBConfig()` method of a particular Ad Unit. See the Ad Unit documentation for the details. +The global config is also the way to set OpenRTB fields that have no dedicated `TargetingParams` method. For instance, to pass the URL of the content displayed alongside the ad in `$.app.content.url`: + +``` kotlin +TargetingParams.setGlobalOrtbConfig("{\"app\":{\"content\":{\"url\":\"https://example.com/articles/123\"}}}") +``` + +Each call replaces the previously set global config, so put all global-level fields in a single JSON object. + Pay attention that there are certain protected fields such as `regs`, `device`, `geo`, `ext.gdpr`, `ext.us_privacy`, and `ext.consent` which cannot be changed using the `setGlobalOrtbConfig()` method. - App and User first party data should use the [functions defined for those purposes](/prebid-mobile/pbm-api/ios/pbm-targeting-ios.html#first-party-data) diff --git a/prebid-mobile/pbm-api/ios/pbm-targeting-ios.md b/prebid-mobile/pbm-api/ios/pbm-targeting-ios.md index 451267fa11..533d3fe760 100644 --- a/prebid-mobile/pbm-api/ios/pbm-targeting-ios.md +++ b/prebid-mobile/pbm-api/ios/pbm-targeting-ios.md @@ -146,7 +146,7 @@ The `Log` class is designed to handle logging functionality for the SDK. It allo | Property | Type | Description | |--------------|-----------|-----------------------------------------------------------------------------------------------------------| -| `logLevel` | `LogLevel`| The current logging level. Only messages at this level or higher will be logged. Default: `.debug` | +| `logLevel` | `LogLevel`| The current logging level. Only messages at this level or higher will be logged. Default: `.debug` | | `logToFile` | `Bool` | Indicates whether logs should also be saved to a file. Default: `false` | ### `Log` Class Methods @@ -527,7 +527,7 @@ Note that several of the properties noted here are also mentioned above for othe | Parameter | Scope | Type | Platform | Description | Example | | --- | --- | --- | --- | --- | --- | | storeURL | recommended | string | both | App store URL for an installed app; for Inventory Quality Guidelines 2.1 compliance. Translates to OpenRTB app.storeurl | `https://apps.apple.com/app/id111111111` | -| contentUrl | recommended | string | both | This is the deep-link URL for the app screen that is displaying the ad. This can be an iOS universal link. | | +| contentUrl | deprecated | string | both | Deprecated, will be removed in PrebidMobile 4.0. The SDK does not send this value in the bid request. Set `app.content.url` with [`setGlobalORTBConfig()`](/prebid-mobile/pbm-api/ios/pbm-targeting-ios#arbitrary-openrtb) instead. | | | publisherName | recommended | string | both | OpenRTB app.publisher.name | "Example, Co." | | itunesID | recommended | string | both | Translates to OpenRTB app.bundle | "11111111" | | coppa | optional | integer | objC | Defines whether this content is meant for children. 0=false, 1=true. Defaults to false. | 1 | @@ -537,7 +537,7 @@ Note that several of the properties noted here are also mentioned above for othe | omidPartnerName | optional | string | both | The [IAB OMSDK compliant partner name](https://complianceomsdkapi.iabtechlab.com/compliance/latest) responsible for integrating with the OMSDK spec. | "Google" | | omidPartnerVersion | optional | string | both | The OMSDK version number for the integration partner. | "1.0" | | userGender | optional | enum | both | "M" = male, "F" = female, "O" = known to be other (i.e., omitted is unknown) | "F" | -| userExt | optional | array of key-value pairs | both | This is a dictionary of key-value pairs that forms the user.ext object. Prebid requires user-first party data in user.ext.data, so this should be a dictionary that contains a 'data' key whose value is another dictionary. | { data: { key1: val1, key2: val2 }}| +| userExt | optional | array of key-value pairs | both | This is a dictionary of key-value pairs that forms the user.ext object. Prebid requires user-first party data in user.ext.data, so this should be a dictionary that contains a 'data' key whose value is another dictionary. | { data: { key1: val1, key2: val2 }} | | subjectToGDPR | discouraged | boolean | ? | Defines whether this request is in-scope for European privacy regulations. See [above](/prebid-mobile/pbm-api/ios/pbm-targeting-ios#gdpr--tcf-eu) for more information. | `true` | | gdprConsentString | discouraged | string | both | See the [GDPR settings](/prebid-mobile/pbm-api/ios/pbm-targeting-ios#gdpr--tcf-eu) section above. | | | purposeConsents | discouraged | string | both | See the [GDPR settings](/prebid-mobile/pbm-api/ios/pbm-targeting-ios#gdpr--tcf-eu) section above. | | @@ -581,6 +581,14 @@ Targeting.shared.setGlobalORTBConfig("") The `Targeting.shared.setGlobalORTBConfig()` also allows to **add** impression objects to the request. All objects in the `$.imp[]` array will be added to the request. Note that Ad Unit's `imp` object won't be changed using Global Config. To change the `imp` config, use the `setImpORTBConfig()` method of a particular Ad Unit. See the Ad Unit documentation for the details. +The global config is also the way to set OpenRTB fields that have no dedicated `Targeting` property. For instance, to pass the URL of the content displayed alongside the ad in `$.app.content.url`: + +``` swift +Targeting.shared.setGlobalORTBConfig("{\"app\":{\"content\":{\"url\":\"https://example.com/articles/123\"}}}") +``` + +Each call replaces the previously set global config, so put all global-level fields in a single JSON object. + Pay attention that there are certain protected fields such as `regs`, `device`, `geo`, `ext.gdpr`, `ext.us_privacy`, and `ext.consent` which cannot be changed using the `setGlobalORTBConfig()` method. - App and User first party data should use the [functions defined for those purposes](/prebid-mobile/pbm-api/ios/pbm-targeting-ios.html#first-party-data) From 248f5c9bd0ba7d82ec5534232b4a5e9df4d790f7 Mon Sep 17 00:00:00 2001 From: prebid-reklamup Date: Fri, 18 Sep 2026 00:27:37 +0300 Subject: [PATCH 32/54] Reklamup Bid Adapter: add regional endpoints (#6734) * New adapter reklamup * New adapter reklamup: Disable pbs and pbs_app_supported * Reklamup Adapter: set pbs and pbs_app_supported to true * Reklamup Adapter: Heading levels * feat(tcfVendor): added * Reklamup Bid Adapter: add regional endpoints --------- Co-authored-by: Reklamup Co-authored-by: Vitalii Sumlennyi --- dev-docs/bidders/reklamup.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/dev-docs/bidders/reklamup.md b/dev-docs/bidders/reklamup.md index e0d5f6e95b..c830e48614 100644 --- a/dev-docs/bidders/reklamup.md +++ b/dev-docs/bidders/reklamup.md @@ -34,3 +34,29 @@ sidebarType: 1 ## Note For the prebid server and prebid.js you only need to use one parameter: either placementId or endpointId + +## Regional Endpoints + +Reklamup supports the following regional endpoint subdomains: + +- `eu-node` — EU +- `node` — US East + +### Prebid Server + +The Prebid Server config endpoint is defined with a `REGION` placeholder: + +```yaml +endpoint: "https://REGION.reklamup.com/pserver" +``` + +Please deploy this config in each of your datacenters and replace `REGION` with the appropriate regional subdomain (`eu-node` or `node`). + +### Prebid.js + +The Prebid.js adapter automatically selects the regional endpoint based on the browser timezone: + +- Europe / Africa / Atlantic / Arctic / Asia → `eu-node` +- Australia / Antarctica / Pacific / Indian → `node` +- America → `node` +- Unknown / unresolved timezone → `node` (fallback) From 852ffc9162886ab13c322317ad47b3fe50e96ee1 Mon Sep 17 00:00:00 2001 From: FujiwaraNaoto <50446582+FujiwaraNaoto@users.noreply.github.com> Date: Fri, 18 Sep 2026 06:35:17 +0900 Subject: [PATCH 33/54] Geniee Exchange Bid Adapter: add bidder documentation for ex_geniee (#6727) * directly push * Adds the docs page for the new `ex_geniee` bidder (Geniee Exchange). Prebid.js adapter PR: https://github.com/prebid/Prebid.js/pull/15559 * schain supported * format * Geniee SSP Bid Adapter: update note to reference the dsp_geniee and ex_geniee adapters Heading levels and the Bid Params table are normalized so the file passes markdownlint. * Geniee Exchange Bid Adapter: fix GDPR note on how consent signals are handled * Geniee Exchange Bid Adapter: document supported OpenRTB blocking params (bcat, badv, bapp, battr) * Geniee Exchange Bid Adapter: mark SafeFrame as not supported until DSP creatives are verified * Geniee Exchange Bid Adapter: drop unused maintainer_email metadata * Geniee Exchange Bid Adapter: note that an invalid placementId still bids but breaks per-placement reporting * Geniee Exchange Bid Adapter: document badv/bapp matching rules and bcat format for OpenRTB blocking --------- Co-authored-by: Murano Takamasa --- dev-docs/bidders/ex_geniee.md | 97 ++++++++++++++++++++++++++++++++++ dev-docs/bidders/ssp_geniee.md | 14 ++--- 2 files changed, 104 insertions(+), 7 deletions(-) create mode 100644 dev-docs/bidders/ex_geniee.md diff --git a/dev-docs/bidders/ex_geniee.md b/dev-docs/bidders/ex_geniee.md new file mode 100644 index 0000000000..31c76f99f7 --- /dev/null +++ b/dev-docs/bidders/ex_geniee.md @@ -0,0 +1,97 @@ +--- +layout: bidder +title: Geniee Exchange +description: Geniee Exchange Bidder Adapter +biddercode: ex_geniee +tcfeu_supported: false +dsa_supported: false +gvl_id: none +usp_supported: false +coppa_supported: false +gpp_sids: none +schain_supported: true +dchain_supported: false +userIds: all +media_types: banner +safeframes_ok: false +deals_supported: false +floors_supported: true +fpd_supported: true +pbjs: true +pbs: false +prebid_member: false +multiformat_supported: will-bid-on-one +ortb_blocking_supported: partial +privacy_sandbox: no +sidebarType: 1 +--- +## Note + +This is the [Geniee](https://geniee.co.jp) *Exchange* Bidder Adapter for Prebid.js. + +{: .alert.alert-info :} +Geniee maintains three separate bid adapters. This adapter (`ex_geniee`) is independent of "Geniee SSP" (`ssp_geniee`, `zoneId` based) and "Geniee" (`dsp_geniee`, Geniee DSP) and can be used alongside them. + +Please contact us at before using the adapter. `partnerId` values are publisher-specific and are issued by Geniee; a generic value will not return bids. + +Ads are served when all of the following conditions are satisfied: + +- The ad unit declares `mediaTypes.banner` with valid sizes. Video- or native-only ad units are rejected. Multiformat ad units that include banner are accepted, but only the banner part is sent. +- Payment is possible in Japanese yen or US dollars. +- The request contains either `site` (with `site.page`) or `app` (with `app.bundle`). +- GDPR does not apply to the request. The Exchange does not serve GDPR territories, so no request is sent when `gdprApplies` is true. The adapter does not add consent signals itself; values written to `ortb2` by the TCF consent module (`regs.ext.gdpr`, `user.ext.consent`) are passed through with the rest of the first party data. + +## Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------|-----------| +| `partnerId` | required | The per-publisher ID issued by Geniee. Must be an integer >= 1 (number only; string forms such as `'123'` are rejected). | `123` | `integer` | +| `currency` | optional | Currency setting, `'JPY'` or `'USD'`. When omitted, the currency module's `adServerCurrency` is used, then `'USD'`. If the resolved currency is neither `JPY` nor `USD`, no request is sent. | `'JPY'` | `string` | +| `placementId` | optional | Reporting label for the ad unit, defined by the publisher (not issued by Geniee). Use a fixed value per ad unit; if omitted, Geniee reports cannot be broken down by ad unit. Alphanumeric, hyphen and underscore, max 40 characters, case-insensitive. Sent as `imp.tagid`. If the value violates these rules, the request is still bid on, but reports cannot be broken down correctly by that `placementId`. | `'top-banner_1'` | `string` | + +## First Party Data + +`ortb2` and `ortb2Imp` first party data are included in the OpenRTB request. Note the following: + +- `imp.tagid` set through `ortb2Imp` is overridden when `params.placementId` is set. +- User IDs are read from `user.ext.eids` and mirrored to `user.eids`. +- The Exchange runs a first price auction only. If `at` is set to any value other than `1` through `ortb2`, no request is sent. + +## OpenRTB Blocking + +Support for OpenRTB blocking parameters is partial. All four parameters below are forwarded to demand partners, but only `badv` and `bapp` are enforced by the Exchange when it filters bid responses. `bcat` and `battr` are passed on to demand partners only; the Exchange does not reject a bid that violates them, so blocking depends on each demand partner honoring the value. Set them through first party data; the adapter passes them to the Exchange unchanged. + +{: .table .table-bordered .table-striped } +| Parameter | Where to set | Forwarded to demand partners | Enforced on bid responses by the Exchange | +|-----------|-------------------------|------------------------------|-------------------------------------------| +| `badv` | `ortb2.badv` | yes | yes | +| `bapp` | `ortb2.bapp` | yes | yes | +| `bcat` | `ortb2.bcat` | yes | no | +| `battr` | `ortb2Imp.banner.battr` | yes | no | + +Notes: + +- `badv`: every listed domain is checked against the winning bid's advertiser domains. A bid whose advertiser domain contains a listed value is dropped, so `example.com` also blocks subdomains such as `ads.example.com`. An empty array is forwarded as an explicit "nothing blocked" declaration. +- `bapp`: matched case-insensitively against the bid's app bundle. +- `bcat`: only IAB content taxonomy codes with the `IAB` prefix (for example `IAB1`, `IAB26-1`) are forwarded; codes in any other format are dropped. +- `battr`: only `banner.battr` applies, since this adapter is banner-only. + +## User Sync + +On a winning response the Exchange returns a single cookie-sync URL, which the adapter registers as an iframe sync. Only the iframe type is supported; no sync is registered on a no-bid. + +Prebid disables iframe syncs by default, so publishers must allow them for this bidder: + +```javascript +pbjs.setConfig({ + userSync: { + filterSettings: { + iframe: { + bidders: ['ex_geniee'], + filter: 'include' + } + } + } +}); +``` diff --git a/dev-docs/bidders/ssp_geniee.md b/dev-docs/bidders/ssp_geniee.md index 0e13b3c5aa..45617a3e3a 100644 --- a/dev-docs/bidders/ssp_geniee.md +++ b/dev-docs/bidders/ssp_geniee.md @@ -25,19 +25,19 @@ multiformat_supported: will-bid-on-one ortb_blocking_supported: partial privacy_sandbox: no --- -### Note +## Note This is [Geniee](https://geniee.co.jp) Bidder Adapter for Prebid.js. {: .alert.alert-info :} -This is Geniee *SSP* Bidder Adapter. The another adapter named "Geniee Bid Adapter" is Geniee *DSP* Bidder Adapter. +This is the Geniee *SSP* Bidder Adapter. Geniee maintains two other adapters: "Geniee" (`dsp_geniee`) is the Geniee *DSP* Bidder Adapter, and "Geniee Exchange" (`ex_geniee`) is the Geniee *Exchange* Bidder Adapter. Please contact us before using the adapter. -### Bid Params +## Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|--------------|----------|-------------------------------------------------|-----------|-----------| -| `zoneId` | required | Zone ID | `1573195` | `integer` | -| `currency` | Optional | Currency setting (`'JPY'`(Default) or `'USD'`) | `'JPY'` | `string` | +| Name | Scope | Description | Example | Type | +|------------|----------|------------------------------------------------|-----------|-----------| +| `zoneId` | required | Zone ID | `1573195` | `integer` | +| `currency` | Optional | Currency setting (`'JPY'`(Default) or `'USD'`) | `'JPY'` | `string` | From 97c547fc03e9f45c395875c308a25f04b4ced2ce Mon Sep 17 00:00:00 2001 From: Erik Svilich Date: Thu, 17 Sep 2026 17:37:36 -0400 Subject: [PATCH 34/54] Encypher RTD Provider: update lookup integration (#6726) * docs(rtd): update Encypher provider integration * Document Encypher consent gating and signed evidence references * Document Encypher GPP consent enforcement * Use relativ links --------- Co-authored-by: Encypher Engineering Co-authored-by: Muki Seiler --- dev-docs/modules/encypherRtdProvider.md | 140 +++++++++++------------- 1 file changed, 65 insertions(+), 75 deletions(-) diff --git a/dev-docs/modules/encypherRtdProvider.md b/dev-docs/modules/encypherRtdProvider.md index c766915d55..e2c40597d3 100644 --- a/dev-docs/modules/encypherRtdProvider.md +++ b/dev-docs/modules/encypherRtdProvider.md @@ -2,7 +2,7 @@ layout: page_v2 title: Encypher Real Time Data Provider display_name: Encypher C2PA Content Provenance -description: Injects C2PA content provenance signals into OpenRTB bid requests +description: Injects verified C2PA provenance references into OpenRTB impressions page_type: module module_type: rtd module_code: encypherRtdProvider @@ -19,25 +19,21 @@ sidebarType: 1 ## Description -The Encypher RTD provider injects [C2PA](https://c2pa.org/) content provenance signals into OpenRTB bid requests at `site.ext.data.c2pa`. This gives DSPs a cryptographic content-integrity signal they can use for brand safety and inventory quality decisioning. +The Encypher RTD provider performs a credentialless lookup for the canonical page, verifies the returned compact ES256 attestation, and adds the verified provenance reference to each OpenRTB impression at `imp.ext.c2pa`. -The module detects whether article content already carries embedded provenance markers (from a CMS plugin, CDN worker, or direct API integration) and verifies them server-side. If no existing provenance is found, it signs the content via the Encypher public API. In both cases the result is injected into the bid request. - -No external JavaScript is loaded. The module uses only Prebid.js core imports. Every code path calls `callback()`. The module never blocks an auction. +The module does not extract or upload article text, fetch page manifests, sign content in the browser, use cookies or localStorage, or load external JavaScript. Contact [engineering@encypher.com](mailto:engineering@encypher.com) for more information. ## Integration -Compile the Encypher RTD module into your Prebid build: +Compile the provider with the RTD core module: ```bash -gulp build -modules=rtdModule,encypherRtdProvider +gulp build --modules=rtdModule,encypherRtdProvider ``` -## Configuration - -Add the Encypher RTD provider to your Prebid config: +Configure one Encypher data provider. `auctionDelay` must be at least as large as the provider timeout. ```javascript pbjs.setConfig({ @@ -47,7 +43,7 @@ pbjs.setConfig({ name: 'encypher', waitForIt: true, params: { - // All optional. Free tier works with zero config. + timeout: 300 } }] } @@ -58,97 +54,91 @@ pbjs.setConfig({ {: .table .table-bordered .table-striped } -| Name | Scope | Type | Description | -| - | - | - | - | -| `name` | Required | String | Must be `'encypher'` | -| `waitForIt` | Optional | Boolean | Set to `true` to delay the auction until provenance data is available. Default: `false` | -| `params` | Optional | Object | Configuration parameters (see below) | -| `params.apiBase` | Optional | String | Override the API base URL (default: `https://api.encypher.com`). Useful for staging or development environments. | -| `params.manifestUrl` | Optional | String | Manual manifest URL. When set, the module fetches this URL directly instead of calling the signing API. | - -## How It Works +| Name | Scope | Type | Default | Description | +| - | - | - | - | - | +| `name` | Required | String | | Must be `'encypher'` | +| `waitForIt` | Required for asynchronous lookup | Boolean | `false` | Set to `true` so RTD core waits up to `auctionDelay` for the result | +| `params.timeout` | Optional | Number | `300` | Total provider deadline in milliseconds for URL hashing, signal lookup, JWKS retrieval, and verification. The effective budget is the smaller of this value and `auctionDelay` | +| `params.telemetry` | Optional | Boolean | `false` | Emit privacy-minimized diagnostic delivery events after the auction callback | +| `params.adoptionReporting` | Optional | Boolean | `true` | Permit domain-level adoption observations on consent-allowed lookups. Set exactly `false` to opt out | -The module runs once per page load through three paths in strict priority: +The signal origin is fixed at `https://signals.encypher.com`. Publishers cannot configure a mirror, alternate subdomain, or path-prefix override. -### Path A: Manifest Shortcut +## How it works -If a `` tag or `params.manifestUrl` is present, the module fetches the manifest directly without calling the signing API. +For each auction, the provider first checks consent. When transmission is allowed, it: -### Path B: Cache +1. Selects the page's canonical URL, removes its fragment, normalizes percent encoding, and sorts query parameters. +2. Computes the SHA-256 URL digest with browser WebCrypto. +3. Requests the current decision from `https://signals.encypher.com/v1/attestations/{url_hash}`. +4. Requires an exact JSON decision with `v`, `status`, `dataset_version`, and `record`. +5. For a `ready` decision, verifies the compact JWS against the pinned issuer and JWKS at `https://api.encypher.com/api/v1/public/provenance/jwks.json`. +6. Adds the verified four-field carrier to auction-local copies of each ad unit. -If provenance data for the current page exists in localStorage (30-day TTL, keyed by canonical URL hash), it is served immediately with no network call. +`miss`, `revoked`, `stale`, malformed, oversized, unavailable, invalid, and timed-out results leave the auction unchanged. -### Path C: API Signing and Verification +## Data injected -The module extracts article text from the DOM and sends it to the Encypher API. The API detects whether the content already contains embedded C2PA provenance markers: +The provider adds one compact object at `imp.ext.c2pa`: -- **If markers are present:** The API verifies them and returns the existing provenance data, including the original signer tier. No signing quota is consumed. -- **If no markers are found:** The API signs the content fresh and returns a new manifest. +```json +{ + "v": 1, + "id": "epa_01J...", + "ref": "https://api.encypher.com/api/v1/proof/bNv0YOZMqiDPmlW0hf0im_AkYKJ53GZxuJIsodyhMRg", + "att": "eyJhbGciOiJFUzI1NiIs..." +} +``` -The result is cached in localStorage and injected into the bid request. +{: .table .table-bordered .table-striped } -## Content Extraction +| Field | Type | Description | +| - | - | - | +| `v` | Integer | Protocol version, exactly `1` | +| `id` | String | Stable provenance record identifier | +| `ref` | HTTPS URL | Content-addressed public evidence URL derived from the signed manifest SHA-256 digest | +| `att` | Compact JWS | ES256 attestation binding the record to the canonical URL digest, publisher domain, manifest digest, policy version, revision, and expiration | -Article text is extracted from the DOM in this priority order: +The serialized extension is limited to 1 KiB. Existing impression fields, including GPID, remain unchanged. Supply-chain data remains separate. -1. **JSON-LD structured data:** `application/ld+json` scripts containing schema.org `Article`, `NewsArticle`, `BlogPosting`, or `Report` types. -2. **`
` element:** `textContent` of the first `
` element. -3. **`[role="main"]` element:** `textContent` of the first element with `role="main"`. +## Validation and freshness -Content shorter than 50 characters is skipped. Content longer than 50,000 characters is truncated. +The provider requires: -## Data Injected +- A fixed `https://signals.encypher.com` decision with status `ready`, `miss`, `revoked`, or `stale`. +- `record` to be the exact compact carrier for `ready` and `null` for every other status. +- An ES256 signature from the selected P-256 key in the pinned JWKS. +- Exact issuer, subject, publisher domain, canonical URL digest, manifest digest, validation result, declaration, policy version, signed revision, and lifetime claims. +- Exact equality between `ref` and `https://api.encypher.com/api/v1/proof/` followed by the signed `manifest_digest`, encoded as canonical unpadded base64url for 32 bytes. The browser does not fetch the evidence. +- At most 4 KiB of decoded decision JSON and 64 KiB of decoded JWKS JSON. -The following object is placed at `ortb2Fragments.global.site.ext.data.c2pa`: +Signal and JWKS requests omit credentials and referrers, reject redirects, and bypass HTTP caches. A ready decision may be reused in page memory for at most 30 seconds, but its JWS and signed expiration are checked before every injection. JWKS entries expire after 30 seconds. -```json -{ - "manifest_url": "https://api.encypher.com/api/v1/public/prebid/manifest/abc123", - "verified": true, - "signer_tier": "connected", - "signed_at": "2026-04-01T10:00:00Z", - "content_hash": "a1b2c3d4e5f6", - "source": "auto", - "extraction_method": "json-ld" -} -``` +Page-lifetime dataset, status, and signed-revision watermarks prevent older or delayed responses from replacing newer decisions. `miss`, `revoked`, and `stale` decisions block equal or older ready responses. The provider also isolates carrier writes to the current auction, so a successful result cannot persist on reusable publisher ad-unit objects. -{: .table .table-bordered .table-striped } +## Trust model -| Field | Type | Description | -| - | - | - | -| `manifest_url` | String | URL to retrieve the C2PA manifest | -| `verified` | Boolean | `true` if provenance was successfully verified or signed | -| `signer_tier` | String | Signing identity tier (see table below) | -| `signed_at` | String | ISO 8601 timestamp of signing | -| `content_hash` | String | SHA-256 hash of article text | -| `source` | String | How provenance was obtained: `cms`, `cache`, or `auto` | -| `extraction_method` | String | DOM extraction method: `json-ld`, `article-element`, or `role-main` | +The record JWS authenticates the carrier and its signed claims. The pinned `https://api.encypher.com` JWKS origin supplies verification keys. The exact `https://signals.encypher.com` origin is the online authority for current ready, miss, revoked, or stale status and dataset version. -## Signer Tiers +Current status is not separately signed for the browser. Compromise of the signal authority, its Cloudflare account or route, or its TLS control plane can replay a still-unexpired issuer-signed record. Compromise of the pinned JWKS origin can substitute verification keys. These authority compromises are outside the browser protocol's protection. -The `signer_tier` field tells DSPs how the content was authenticated: +The evidence URL is cryptographically bound to the signed manifest digest. Substituting another syntactically valid evidence URL without changing the signed attestation causes rejection. Evidence retrieval still depends on the proof endpoint's availability and access controls; the browser does not treat a valid signature as proof of current availability. -{: .table .table-bordered .table-striped } +## Privacy and diagnostics -| Tier | Meaning | -| - | - | -| `byok` | Publisher signed with their own key (strongest identity) | -| `connected` | Publisher authenticated with Encypher and signed at publish time | -| `encypher_free` | Content was auto-signed by Encypher at first pageview (no publisher authentication) | -| `local` | Manifest fetched from a local or self-hosted endpoint | +The provider skips all work when COPPA applies, the US Privacy string records a sale opt-out, or GDPR applicability is true or unresolved. Encypher has no registered GVL ID, so a consent string or another vendor's consent cannot authorize transmission to Encypher. When GDPR consent management is enabled but supplies no data, the provider also skips the lookup. Builds without consent modules can perform the lookup. -DSPs can use this field for differential bidding. Content signed by authenticated publishers carries stronger brand-safety guarantees than content attested by a third party at pageview time. +GPP consent is checked independently of the legacy US Privacy string. Applicable US national and state sections 7-12 block transmission on sale, sharing, targeted-advertising opt-outs, or GPC. Object and segmented section representations are supported. Unknown applicable sections, missing or malformed consent fields, and unresolved configured GPP consent fail closed. Only applicable sections are inspected; an exact `[-1]` applicable-section list means no GPP section applies. Other privacy gates still apply. -## Free Tier +Blocked calls complete the RTD callback without URL hashing, signal or JWKS requests, cached-signal injection, diagnostics, or adoption reporting. Ordinary auctions continue. Consent is checked again for every auction, including auctions that could otherwise reuse a cached signal. -The free tier provides 1,000 unique content signatures per publisher domain per month. Re-requests for the same content (deduped by content hash) do not count against quota. Verification of already-signed content does not count against quota. When the quota is exceeded, the module continues without injecting provenance data (fail-open). +Allowed lookup requests disclose the canonical URL digest, canonical publisher hostname, and module version to the fixed signal authority. They do not upload the raw URL, page content, manifest, cookies, bids, prices, deals, or creatives. Requests omit browser credentials and referrers. The URL digest is not an anonymization guarantee; canonical URLs can contain visitor-specific query values. -## Privacy +When consent permits transmission and `params.telemetry` is `true`, the module sends one post-callback diagnostic event through Prebid's fetch wrapper. It contains only protocol and module versions, outcome, impression count, duration, and optional dataset version. Non-injected outcomes report an impression count of zero. Telemetry failure cannot affect the auction. -The module uses Prebid's `getStorageManager` for localStorage access, which enforces GDPR/TCF consent. If consent is denied, caching is disabled and Path C (auto-sign) is skipped entirely, so no page content leaves the browser. When consent is granted but caching is unavailable, the module falls back to API calls on each page load. Article text sent to the Encypher API for signing is not stored on Encypher's servers. Only content hashes and metadata are persisted. A 2-second timeout ensures the module never blocks the auction. +When adoption reporting is enabled, the edge records an observation only when the browser Origin hostname exactly matches the requested publisher hostname. Retained fields are limited to the publisher FQDN, first and last seen times, module version, aggregate lookup/hit/miss counts, and dataset version. `params.adoptionReporting: false` adds the opt-out to the existing lookup and creates no second request. -## Further Reading +## Further reading - [C2PA Specification](https://c2pa.org/specifications/) -- [Encypher Documentation](https://encypher.com/docs) +- [Prebid Real-Time Data modules](/dev-docs/add-rtd-submodule.html) From edadbc0710b03591f1ef474737f1a9fac41d98c5 Mon Sep 17 00:00:00 2001 From: Gabriel Chicoye Date: Thu, 17 Sep 2026 23:41:18 +0200 Subject: [PATCH 35/54] Nexx360 aliases: fix scoremedia GVL ID, mark two pages pbs, drop duplicate key (#6724) * Nexx360 aliases: fix scoremedia GVL ID, mark two pages pbs, drop duplicate key - scoremedia: gvl_id 965 -> 1090. Score Media Group GmbH & Co. KG holds its own GVL registration (1090), which is what Prebid.js declares. 965 is Nexx360's own registration and was incorrect here. - scoremedia, bidstailamedia: add pbs: true - both become server-side bidders in prebid/prebid-server#4738. - scoremedia, bidstailamedia, glomexbidder, revnew: remove the duplicate tcfeu_supported: true key from the front matter. * Satisfy markdownlint on the four pages this PR touches CI lints only the files a PR changes, so these pages carried pre-existing violations that surface as soon as they are edited. Both are mechanical: - MD001: the front matter title counts as an implicit h1, so a page whose first heading is h3 skips a level. Promoted the flat ### sections to ##, matching maintained pages such as ogury.md. No headings were added, removed or renamed and the structure stays flat. - MD060: two data rows in the scoremedia and bidstailamedia bid-params tables did not line up with their header. Padded the cells; no content change. markdownlint-cli2 0.22.1 with .markdownlint.json reports 0 errors on all four. --- dev-docs/bidders/bidstailamedia.md | 10 +++++----- dev-docs/bidders/glomexbidder.md | 7 +++---- dev-docs/bidders/revnew.md | 9 ++++----- dev-docs/bidders/scoremedia.md | 12 ++++++------ 4 files changed, 18 insertions(+), 20 deletions(-) diff --git a/dev-docs/bidders/bidstailamedia.md b/dev-docs/bidders/bidstailamedia.md index 0288468a2d..258ec53fcb 100644 --- a/dev-docs/bidders/bidstailamedia.md +++ b/dev-docs/bidders/bidstailamedia.md @@ -3,6 +3,7 @@ layout: bidder title: stailamedia Bidder description: Prebid bidstailamedia Bidder Adapter pbjs: true +pbs: true biddercode: bidstailamedia aliasCode: nexx360 gvl_id: 965 (nexx360) @@ -13,7 +14,6 @@ schain_supported: true dchain_supported: false floors_supported: true userIds: all -tcfeu_supported: true media_types: banner, video, native safeframes_ok: true deals_supported: true @@ -23,13 +23,13 @@ multiformat_supported: will-bid-on-any --- -### Bid Params +## Bid Params | Name | Scope | Description | Example | Type | |---------------|----------|----------------------------|-------------------------------------- |-----------| -| `tagId` | required | tag ID | `"hk15z9sy"` | `string` | +| `tagId` | required | tag ID | `"hk15z9sy"` | `string` | -### First Party Data +## First Party Data Publishers should use the `ortb2` method of setting [First Party Data](/features/firstPartyData.html). The following fields are supported: @@ -39,7 +39,7 @@ The following fields are supported: * ortb2.user.ext.data.* * ortb2.user.data[] -### Test Parameters +## Test Parameters ```javascript var adUnits = [ diff --git a/dev-docs/bidders/glomexbidder.md b/dev-docs/bidders/glomexbidder.md index 5cf70c0a1c..ff8396e906 100644 --- a/dev-docs/bidders/glomexbidder.md +++ b/dev-docs/bidders/glomexbidder.md @@ -14,7 +14,6 @@ schain_supported: true dchain_supported: true floors_supported: true userIds: all -tcfeu_supported: true media_types: banner, video, native safeframes_ok: true deals_supported: true @@ -24,7 +23,7 @@ multiformat_supported: will-bid-on-any --- -### Bid Params +## Bid Params {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | @@ -34,7 +33,7 @@ multiformat_supported: will-bid-on-any For the prebid.js you only need to use one parameter: either tagId or placement -### First Party Data +## First Party Data Publishers should use the `ortb2` method of setting [First Party Data](/features/firstPartyData.html). The following fields are supported: @@ -44,7 +43,7 @@ The following fields are supported: * ortb2.user.ext.data.* * ortb2.user.data[] -### Test Parameters +## Test Parameters ```javascript var adUnits = [ diff --git a/dev-docs/bidders/revnew.md b/dev-docs/bidders/revnew.md index c0c32f61ef..bd5d3b5ba1 100644 --- a/dev-docs/bidders/revnew.md +++ b/dev-docs/bidders/revnew.md @@ -13,7 +13,6 @@ schain_supported: true dchain_supported: false floors_supported: true userIds: all -tcfeu_supported: true media_types: banner, video, native safeframes_ok: true deals_supported: true @@ -23,7 +22,7 @@ multiformat_supported: will-bid-on-any --- -### Bid Params +## Bid Params {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | @@ -34,7 +33,7 @@ multiformat_supported: will-bid-on-any *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 +## Bidder Config You can allow writing in localStorage `pbjs.bidderSettings` for the bidder `revnew` @@ -48,11 +47,11 @@ pbjs.bidderSettings = { } ``` -### First Party Data +## First Party Data Publishers should use the `ortb2` method of setting [First Party Data](https://docs.prebid.org/features/firstPartyData.html). -### Test Parameters +## Test Parameters ```javascript var adUnits = [ diff --git a/dev-docs/bidders/scoremedia.md b/dev-docs/bidders/scoremedia.md index c82b47cafd..18938e0f47 100644 --- a/dev-docs/bidders/scoremedia.md +++ b/dev-docs/bidders/scoremedia.md @@ -3,9 +3,10 @@ layout: bidder title: scoremedia description: Prebid scoremedia Bidder Adapter pbjs: true +pbs: true biddercode: scoremedia aliasCode: nexx360 -gvl_id: 965 +gvl_id: 1090 tcfeu_supported: true usp_supported: true gpp_supported: true @@ -13,7 +14,6 @@ schain_supported: true dchain_supported: false floors_supported: true userIds: all -tcfeu_supported: true media_types: banner, video, native safeframes_ok: true deals_supported: true @@ -23,14 +23,14 @@ multiformat_supported: will-bid-on-any --- -### Bid Params +## Bid Params {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | |---------------|----------|----------------------------|-------------------------------------- |-----------| -| `tagId` | required | tag ID | `"795dtj21"` | `string` | +| `tagId` | required | tag ID | `"795dtj21"` | `string` | -### First Party Data +## First Party Data Publishers should use the `ortb2` method of setting [First Party Data](/features/firstPartyData.html). The following fields are supported: @@ -40,7 +40,7 @@ The following fields are supported: * ortb2.user.ext.data.* * ortb2.user.data[] -### Test Parameters +## Test Parameters ```javascript var adUnits = [ From f125d63e4aeb5e0e5a580b83952cad3335fef308 Mon Sep 17 00:00:00 2001 From: Yohan Boutin Date: Thu, 17 Sep 2026 23:42:29 +0200 Subject: [PATCH 36/54] update documentation, support app traffic (#6720) --- dev-docs/bidders/seedtag.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-docs/bidders/seedtag.md b/dev-docs/bidders/seedtag.md index e697f112ea..4790d3f333 100644 --- a/dev-docs/bidders/seedtag.md +++ b/dev-docs/bidders/seedtag.md @@ -15,7 +15,7 @@ ortb_blocking_supported: partial sidebarType: 1 gpp_supported: true pbs: true -pbs_app_supported: false +pbs_app_supported: true floors_supported: true --- From c948e408e350e4594d15f48e9b233f73db82105b Mon Sep 17 00:00:00 2001 From: Eugene Dorfman Date: Thu, 17 Sep 2026 23:47:39 +0200 Subject: [PATCH 37/54] 51Degrees RTD Module: per-type 51Did eids and on-page integration (#6703) Document the one user.eids entry per identifier type, with the match method and agent type each type carries, and the on-page integration mode: what it needs from the publisher, what it does not re-run, and the session storage entry the module removes on a consent change. Accompanies the module change in prebid/Prebid.js. --- dev-docs/modules/51DegreesRtdProvider.md | 49 +++++++++++++++++++++++- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/dev-docs/modules/51DegreesRtdProvider.md b/dev-docs/modules/51DegreesRtdProvider.md index a8f0dc5b1d..d0aaa0a7d8 100644 --- a/dev-docs/modules/51DegreesRtdProvider.md +++ b/dev-docs/modules/51DegreesRtdProvider.md @@ -25,7 +25,7 @@ The Cloud API is **free** to integrate and use. To increase limits please check ## Description -51Degrees module enriches an OpenRTB request with [51Degrees Device Data](https://51degrees.com/documentation/index.html) and (optionally) IP-derived geo plus a 51Did (51Degrees identifier) entry in `user.eids`. +51Degrees module enriches an OpenRTB request with [51Degrees Device Data](https://51degrees.com/documentation/index.html) and (optionally) IP-derived geo plus 51Did (51Degrees identifier) entries in `user.eids`. 51Degrees module sets the following fields of the device object: `devicetype`, `make`, `model`, `hwv`, `os`, `osv`, `h`, `w`, `ppi`, `pxratio`. Interested bidder adapters may use these fields as needed. @@ -37,10 +37,21 @@ When 51Degrees IPI is available in the cloud response, the module sets `device.i [51Did](https://51degrees.com/documentation/4.5/_identifiers_51_did.html) is a 51Degrees privacy-safe identifier derived from device signals. Its production requires a marketing usage preference (`id.usage`). The recommended way to collect and store that preference is the [51Degrees Preference Management Platform (PMP)](https://51degrees.com/documentation/4.5/_identifiers__p_m_p.html) — a lightweight consent widget that writes the user's choice to `localStorage`. When PMP is present on the page the module picks up that preference automatically. When PMP is absent the module falls back to inferring the preference from the publisher's existing TCF or GPP consent string (see below). -When 51Did is available, the module appends an entry to `user.eids` with `source = "51d.es"`, `inserter = "51degrees.com"`, `mm = 5` (inference), and `uids` carrying `idproblic` and `idprobglobal`. The `ext.tdl` URL inside the entry comes from the `params.tdlUrl` module config. +When 51Did is available, the module appends one `user.eids` entry per identifier type returned by the cloud, each with `source = "51d.es"` and `inserter = "51degrees.com"`. The match method (`mm`) is an eid-level field, so a type cannot share an entry with another type: + +{: .table .table-bordered .table-striped } +| Type | `mm` | `atype` | +| :--- | :--- | :--- | +| Probabilistic | 5 (inference) | 1 (browser or device tied) | +| Random | 0 (unknown) | 1 (browser or device tied) | +| Hashed Email | 3 (authenticated) | 3 (person based) | + +A type's license and global values share its entry as `uids`, license value first. The `ext.tdl` URL comes from the `params.tdlUrl` module config and is added to every entry. Random and Hashed Email appear only when the resource key includes those properties, and Hashed Email additionally requires evidence supplied to the 51Degrees integration itself (see [On-page integration](#on-page-integration)). The module forwards the publisher's consent strings to the cloud as evidence when present. The TCF consent string (from Prebid's GDPR consent) is sent as `tcstring` and the GPP string (from Prebid's GPP consent) is sent as `gppstring`; the cloud can infer the marketing usage preference from either when PMP is not present, so 51Did works for publishers running any TCF or GPP CMP. These come from Prebid's consent data, not module params. +When the consent evidence changes mid-session, the module reloads its script so the new strings reach the cloud, and removes the `fod` entry the 51Degrees script keeps in session storage. That entry is the script's cached cloud response and is keyed on nothing but the script's object name, so leaving it in place would let the reloaded script replay the response the previous consent produced. The module writes nothing to session storage and removes only that one key, only on a consent change; where session storage is not permitted the removal is skipped. + The module supports on premise and cloud device detection services with free options for both. A free resource key for use with 51Degrees cloud service can be obtained from [51Degrees cloud configuration](https://configure.51degrees.com/Q5cD1H9W?utm_source=Prebid&utm_medium=Documentation). This is the simplest approach to trial the module. @@ -148,6 +159,37 @@ pbjs.setConfig({ }); ``` +### On-page integration + +When the page already runs its own 51Degrees integration, the module detects it automatically (the integration's `window.fod` object) and consumes its result instead of loading a second copy of the script. No module params are needed in this mode: + +```javascript +pbjs.setConfig({ + realTimeData: { + auctionDelay: 250, + dataProviders: [ + { + name: '51Degrees', + waitForIt: true, + }, + ], + }, +}); +``` + +The module converts the integration's payload and enriches the ORTB2 request exactly as it does with its own script, and `tdlUrl` is still honoured. It sends nothing to the cloud itself, so the integration's script URL must carry the same parameters the module would send: `id.usage` (or the `tcstring` / `gppstring` consent strings) and any client-hint parameters. When an integration is present on the page the module uses it even if `resourceKey` is configured. + +Publisher requirements: + +* Load the 51Degrees script **synchronously**, before Prebid runs the auction. Do not use `async` or `defer` on the script tag, and do not inject it from a later-running script. Detection is a point-in-time check for `window.fod` at auction time: if the integration has not executed by then, the module does not see it and falls back to its configured behaviour, which with `resourceKey` set means loading a second copy of the script. +* Keep the default object name (`fod`); the module reads `window.fod`, so an integration publishing under a different object name is not detected. +* Identifiers that require additional evidence, such as Hashed Email, are configured on the 51Degrees integration itself. See the [51Degrees documentation](https://51degrees.com/documentation/index.html). + +Two limitations follow from consuming the page integration directly: + +* A consent change during the session does not re-run the page integration. Its payload reflects the consent state it was loaded under, and the new preference takes effect from the next page load. +* If the integration never completes, the module never calls back and the auction proceeds only after the configured `auctionDelay`. The module does not fall back to loading its own script while `window.fod` is present, because two integrations on one page would conflict. + ### Parameters > Note that `resourceKey` and `onPremiseJSUrl` are mutually exclusive parameters. Use strictly one of them: either a `resourceKey` for cloud integration and `onPremiseJSUrl` for the on-premise self-hosted integration. @@ -177,6 +219,9 @@ and then open the following URL in your browser: `http://localhost:9999/integrationExamples/gpt/51DegreesRtdProvider_example.html` +A second example shows the on-page integration mode:\ +`http://localhost:9999/integrationExamples/gpt/51DegreesRtdProvider_pageIntegration_example.html` + Open the browser console to see the logs. ## Customer Notices From 20dc0545c9da1f1b63b06e6919061cc8cd73a7e7 Mon Sep 17 00:00:00 2001 From: westerschmal <30859973+westerschmal@users.noreply.github.com> Date: Thu, 17 Sep 2026 23:48:49 +0200 Subject: [PATCH 38/54] New Bid Adapter - Adswag (#6702) * New Bid Adapter - Adswag Documentation page for the Adswag bid adapter (banner, video, audio; GVL vendor 1417; EU-hosted, TCF-first). Companion to the Prebid.js adapter PR. * Adswag: condense page per review feedback --- dev-docs/bidders/adswag.md | 140 +++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 dev-docs/bidders/adswag.md diff --git a/dev-docs/bidders/adswag.md b/dev-docs/bidders/adswag.md new file mode 100644 index 0000000000..93cb00a1dc --- /dev/null +++ b/dev-docs/bidders/adswag.md @@ -0,0 +1,140 @@ +--- +layout: bidder +title: Adswag +description: Prebid Adswag Bidder Adapter +biddercode: adswag +media_types: banner, video, audio +multiformat_supported: will-bid-on-any +tcfeu_supported: true +dsa_supported: true +gvl_id: 1417 +usp_supported: false +gpp_sids: tcfeu +userId: all +coppa_supported: false +schain_supported: true +dchain_supported: false +prebid_member: false +floors_supported: true +fpd_supported: true +ortb_blocking_supported: false +safeframes_ok: true +deals_supported: false +pbjs: true +pbs: true +pbs_app_supported: true +privacy_sandbox: no +sidebarType: 1 +--- + +## Note + +Maintainer contact: [prebid@adswag.ai](mailto:prebid@adswag.ai) + +Adswag bids in **EUR** on every bid. Publishers whose ad-server currency is +not EUR should include the Prebid +[currency module](https://docs.prebid.org/dev-docs/modules/currency.html). + +Outstream video units get an Adswag renderer attached automatically: nothing +is downloaded unless an Adswag outstream bid wins, and a publisher-supplied +`renderer` overrides it per Prebid convention. + +Audio requires the `FEATURES.AUDIO` build flag and `mimes`; Prebid has no +built-in audio renderer, so hand the returned VAST to your audio player. + +From `ortb2.user` only extended identifiers (`user.eids` / `user.ext.eids`) +are forwarded, gated on consent; other `user` first-party data is not sent. + +## Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|----------------------------------------------------------------------------------------------|-----------------------|----------| +| `publisherId` | required | Adswag publisher id (issued at onboarding). Resolves the canonical publisher at the edge. | `"pub-nl-news-1"` | `string` | +| `placementId` | optional | Explicit placement override. Omit to let Adswag discover the placement from GPID/adUnitCode. | `"plc-homepage-mrec"` | `string` | +| `bidFloor` | optional | Static floor (EUR) used only when the Prebid Price Floors module is not configured. | `0.50` | `number` | +| `video` | optional | Overrides for `mediaTypes.video` ad-unit params (Prebid video-params convention). | `{ maxduration: 15 }` | `object` | + +## Video params + +Standard Prebid video params are read from `mediaTypes.video` (with +`params.video` overrides); `mimes` is required. The endpoint consumes +`mimes`, `minduration`, `maxduration`, `protocols`, `playerSize` (as +`w`/`h`), `plcmt` (derived from `context` when not set explicitly), +`linearity`, `skip` and `skipafter`. + +## Example ad units + +```javascript +var adUnits = [ + { + code: "div-gpt-ad-homepage-mrec", + mediaTypes: { + banner: { + sizes: [[300, 250], [300, 600]] + } + }, + ortb2Imp: { + ext: { gpid: "/1234/homepage#mrec" } + }, + bids: [ + { + bidder: "adswag", + params: { + publisherId: "pub-nl-news-1" + } + } + ] + }, + { + code: "video-player-1", + mediaTypes: { + video: { + context: "instream", + playerSize: [[640, 480]], + mimes: ["video/mp4"], + minduration: 5, + maxduration: 30, + protocols: [2, 3, 7, 8] + } + }, + ortb2Imp: { + ext: { gpid: "/1234/article#player" } + }, + bids: [ + { + bidder: "adswag", + params: { + publisherId: "pub-nl-news-1" + } + } + ] + }, + { + code: "audio-slot-1", + mediaTypes: { + audio: { + mimes: ["audio/mpeg", "audio/mp4"], + minduration: 10, + maxduration: 30, + protocols: [2, 3, 7, 8] + } + }, + bids: [ + { + bidder: "adswag", + params: { + publisherId: "pub-nl-news-1" + } + } + ] + } +]; +``` + +## Privacy / consent / identity + +Consentless traffic is served contextually: no identifiers are read, +written, or forwarded. Enabling user syncs is recommended (registered via +`getUserSyncs`, one iframe or image sync per auction on `ev.adswag.ai`, +honoring your `userSync` configuration and GDPR/GPP/USP consent). From bd6e90adcd55da019418195cccc78e8079f6b0d7 Mon Sep 17 00:00:00 2001 From: Maksym Danylov <146753616+mdanylov-sigma@users.noreply.github.com> Date: Fri, 18 Sep 2026 00:51:30 +0300 Subject: [PATCH 39/54] Document ad controls (#6697) --- .../rewarded-server-side-configuration.md | 34 +++++++++++++++++++ .../combined-ad-experience-controls.md | 27 +++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/_includes/mobile/rewarded-server-side-configuration.md b/_includes/mobile/rewarded-server-side-configuration.md index 12ce47d281..838d8785e2 100644 --- a/_includes/mobile/rewarded-server-side-configuration.md +++ b/_includes/mobile/rewarded-server-side-configuration.md @@ -1,3 +1,5 @@ + + ##### Server-side Rewarded Ad Unit Configuration The Rewarded Ad Unit assumes special behavior that should be configurable by the platform or publisher according to the application or ad experience guides. @@ -7,6 +9,7 @@ Configuration of rewarded ad unit can be done by defining the Prebid Server [pas Prebid SDK will search for a particular `rwdd` object in `$.seatbid.bid.ext.prebid.passthrough` of bid response to configure the behavior and rendering of the Rewarded Ad Unit. The following table describes the structure and usage purpose of `rwdd` configuration parameters. {: .table .table-bordered .table-striped } + | Attribute | Type | Description | Example | |-----------|------|-------------|---------| | `reward` | object
(optional) | Metadata provided by the publisher to describe the reward. |{
 "type": "SuperDollars",
 "count": 10
}
| @@ -26,7 +29,38 @@ Prebid SDK will search for a particular `rwdd` object in `$.seatbid.bid.ext.preb | `close` | object
(optional) | Describes the ad close behavior after the reward is earned. |{
 "postrewardtime": 3,
 "action": "autoclose"
}
| | `close.postrewardtime` | integer | Time interval (seconds) after reward event when SDK should close interstitial. | `3` | | `close.action` | string | Action SDK should make: `"autoclose"` (close interstitial) or `"closebutton"` (show close button) | `"autoclose"` | + + +Publishers can also supply the same impression-level configuration from the app with the ad unit's `setImpORTBConfig()` method. This is useful when a bidder does not return `rwdd` and the app needs to replace the default 120-second end-card completion time. Pass the `ext.prebid.passthrough` portion of the impression, for example: + +```json +{ + "ext": { + "prebid": { + "passthrough": [ + { + "type": "prebidmobilesdk", + "rwdd": { + "completion": { + "video": { + "endcard": { + "time": 15 + } + } + }, + "close": { + "postrewardtime": 0, + "action": "closebutton" + } + } + } + ] + } + } +} +``` +Serialize this object as JSON and pass it to `RewardedAdUnit.setImpORTBConfig()`. Prebid Server returns the passthrough data with the bid, where the SDK reads the `rwdd` configuration. An example of an impression-level stored request: diff --git a/prebid-mobile/modules/rendering/combined-ad-experience-controls.md b/prebid-mobile/modules/rendering/combined-ad-experience-controls.md index 87da78a7f8..8c10923885 100644 --- a/prebid-mobile/modules/rendering/combined-ad-experience-controls.md +++ b/prebid-mobile/modules/rendering/combined-ad-experience-controls.md @@ -236,6 +236,32 @@ This setting determines the number of seconds after the start of playback before {% include code/mobile-sdk.html id="skip-delay" kotlin=android swift=ios %} +### Auto-Close on Video Completion + +This setting controls whether a non-rewarded fullscreen video ad without a companion ad closes automatically when video playback completes. Disable it to keep the interstitial open with a **Watch Again** button until the user closes the ad. + +Rewarded ads do not use this setting. Configure their post-reward behavior with [`rwdd.close.action`](/prebid-mobile/modules/rendering/combined-ui-ux-policy.html#rewarded-ad), using either `autoclose` or `closebutton`. + +{% capture android %} + {: .table .table-bordered .table-striped } + + |**API Object** | *not supported*| + |**Ad Unit Property** | *not supported*| + |**Server Property** | *not supported*| +{% endcapture %} + +{% capture ios %} + {: .table .table-bordered .table-striped } + + |**API Object** |`InterstitialRenderingAdUnit`, `MediationInterstitialAdUnit`| + |**Ad Unit Property** |`adUnit.isAutoCloseOnCompletionEnabled`| + |**Server Property** |`isautocloseoncompletionenabled`| + |**Allowed Values** |`true`, `false`| + |**Default Value** |`true`| +{% endcapture %} + +{% include code/mobile-sdk.html id="auto-close-on-video-completion" kotlin=android swift=ios %} + ### Sound Button This option switches on or off the visibility of the sound/mute button for users. @@ -310,6 +336,7 @@ Here is how you can implement all the API's to customize your ad. interstitialController?.skipButtonArea = 0.1 interstitialController?.skipButtonPosition = .topRight interstitialController?.closeButtonPosition = .topRight + interstitialController?.isAutoCloseOnCompletionEnabled = false ``` {% endcapture %} From 929f0fa25d48fe18ea1782f86eb2e85294b87b1c Mon Sep 17 00:00:00 2001 From: quietPusher <129727954+quietPusher@users.noreply.github.com> Date: Thu, 17 Sep 2026 23:51:42 +0200 Subject: [PATCH 40/54] new adapters nasrev, balancex (#6695) Co-authored-by: mderevyanko --- dev-docs/bidders/balancex.md | 38 ++++++++++++++++++++++++++++++++++++ dev-docs/bidders/nasrev.md | 38 ++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 dev-docs/bidders/balancex.md create mode 100644 dev-docs/bidders/nasrev.md diff --git a/dev-docs/bidders/balancex.md b/dev-docs/bidders/balancex.md new file mode 100644 index 0000000000..b54a4a336f --- /dev/null +++ b/dev-docs/bidders/balancex.md @@ -0,0 +1,38 @@ +--- +layout: bidder +title: BalanceX +description: Prebid BalanceX Adaptor +biddercode: balancex +pbjs: true +pbs: false +media_types: banner, video, audio, native +userIds: all +fpd_supported: false +tcfeu_supported: false +usp_supported: true +coppa_supported: true +schain_supported: true +prebid_member: false +ortb_blocking_supported: true +multiformat_supported: will-bid-on-one +floors_supported: false +aliasCode: limelightDigital +sidebarType: 1 +--- + +## Note + +The BalanceX adapter requires setup before beginning. + +## Bid Params + +{: .table .table-bordered .table-striped } + +| Name | Scope | Description | Example | Type | +|:--------------|:---------|:----------------------|:-------------------------|:----------| +| `host` | required | Ad network's RTB host | `'ssp.balance-x.com'` | `string` | +| `publisherId` | required | Publisher ID | `12345` | `integer` | + +Prebid BalanceX server-side Prebid Server adapter requires only `publisherId` and `host` parameters. But Prebid BalanceX client-side Prebid.js adapter requires only `host`, `adUnitId`, `adUnitType`. + +Prebid BalanceX server-side Prebid Server adapter supports only `banner`, `video`, `audio`, `native` media types. But Prebid BalanceX client-side Prebid.js adapter supports only `banner` and `video` media types, doesn't support `audio` and `native`. diff --git a/dev-docs/bidders/nasrev.md b/dev-docs/bidders/nasrev.md new file mode 100644 index 0000000000..1b081a002c --- /dev/null +++ b/dev-docs/bidders/nasrev.md @@ -0,0 +1,38 @@ +--- +layout: bidder +title: Nasrev +description: Prebid Nasrev Adaptor +biddercode: nasrev +pbjs: true +pbs: false +media_types: banner, video, audio, native +userIds: all +fpd_supported: false +tcfeu_supported: false +usp_supported: true +coppa_supported: true +schain_supported: true +prebid_member: false +ortb_blocking_supported: true +multiformat_supported: will-bid-on-one +floors_supported: false +aliasCode: limelightDigital +sidebarType: 1 +--- + +## Note + +The Nasrev adapter requires setup before beginning. + +## Bid Params + +{: .table .table-bordered .table-striped } + +| Name | Scope | Description | Example | Type | +|:--------------|:---------|:----------------------|:-----------------|:----------| +| `host` | required | Ad network's RTB host | `'nasrev.bid'` | `string` | +| `publisherId` | required | Publisher ID | `12345` | `integer` | + +Prebid Nasrev server-side Prebid Server adapter requires only `publisherId` and `host` parameters. But Prebid Nasrev client-side Prebid.js adapter requires only `host`, `adUnitId`, `adUnitType`. + +Prebid Nasrev server-side Prebid Server adapter supports only `banner`, `video`, `audio`, `native` media types. But Prebid Nasrev client-side Prebid.js adapter supports only `banner` and `video` media types, doesn't support `audio` and `native`. From 9c48da76097453e989470acded7486a5cb6ac110 Mon Sep 17 00:00:00 2001 From: Marios Kosmas <110163065+mariosk5@users.noreply.github.com> Date: Fri, 18 Sep 2026 00:51:55 +0300 Subject: [PATCH 41/54] Project Agora Bidder: migrate alias to Microsoft (#6691) --- dev-docs/bidders/projectagora.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/dev-docs/bidders/projectagora.md b/dev-docs/bidders/projectagora.md index 19cdddbdf3..d7f4f4ad3e 100644 --- a/dev-docs/bidders/projectagora.md +++ b/dev-docs/bidders/projectagora.md @@ -5,7 +5,7 @@ description: Prebid Project Agora Bidder Adapter biddercode: projectagora pbjs: true pbs: false -aliasCode: appnexus +aliasCode: msft tcfeu_supported: true media_types: banner, video, native gvl_id: 1032 @@ -13,15 +13,15 @@ schain_supported: true userId: all sidebarType: 1 --- -### Bid Params +## Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|---------------|----------|-----------------------|-----------|-----------| -| `placementId` | required | Placement id | `'11111'` | `integer` | +| Name | Scope | Description | Example | Type | +|----------------|----------|--------------|---------|-----------| +| `placement_id` | required | Placement id | `11111` | `integer` | -Project Agora is an aliased bidder for AppNexus. +Project Agora is an aliased bidder for Microsoft. -### Note: +## Note -The Project Agora bidder adapter requires setup before beginning. Please contact us at pub_growth@projectagora.com. +The Project Agora bidder adapter requires setup before beginning. Please contact us at [pub_growth@projectagora.com](mailto:pub_growth@projectagora.com). From 9a04b7811a476abdff3c79471421e71ee2d617a7 Mon Sep 17 00:00:00 2001 From: Gabriel Chicoye Date: Thu, 17 Sep 2026 23:52:19 +0200 Subject: [PATCH 42/54] Nexx360 Analytics Adapter: add documentation (#6680) Docs for the nexx360 analytics adapter (companion to the Prebid.js module PR): options (publisherId, endpoint, abTestLabel), example configuration, and registration contact. Claude-Session: https://claude.ai/code/session_01NGAcCirXcABf5miqJbouV2 Co-authored-by: Gabriel Chicoye Co-authored-by: Claude Opus 4.8 (1M context) --- dev-docs/analytics/nexx360.md | 46 +++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 dev-docs/analytics/nexx360.md diff --git a/dev-docs/analytics/nexx360.md b/dev-docs/analytics/nexx360.md new file mode 100644 index 0000000000..eb9a69b68f --- /dev/null +++ b/dev-docs/analytics/nexx360.md @@ -0,0 +1,46 @@ +--- +layout: analytics +title: Nexx360 +description: Nexx360 Analytics Adapter +modulecode: nexx360Analytics +prebid_member: false +tcfeu_supported: false +usp_supported: false +coppa_supported: false +--- + +## About + +The Nexx360 Analytics Adapter reports Prebid.js auction activity to the Nexx360 +monitoring platform for reporting and troubleshooting. It tracks the auction +lifecycle — auction init, bid requests, bid responses, and bid timeouts (batched +per auction) — and sends bid wins and ad-render outcomes as they happen. For +Nexx360 server-side demand, it also reports a per-auction server-auction summary. + +Sampling is applied server-side by the Nexx360 collector, so the adapter sends +all events and exposes no client-side sampling option. The adapter does not read +or write browser storage. + +## Analytics Options + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +| ------ | ------- | ------------- | --------- | ------ | +| publisherId | required | Your Nexx360 publisher identifier | `'1067'` | string | +| endpoint | optional | Collector endpoint URL. Defaults to `https://monitoring.nexx360.io`. | `'https://monitoring.nexx360.io'` | string | +| abTestLabel | optional | A/B test variant label, attached to every event so analytics can be sliced by test arm | `'variantA'` | string | + +## Example Configuration + +```javascript +pbjs.enableAnalytics({ + provider: 'nexx360Analytics', + options: { + publisherId: 'your-publisher-id' + } +}); +``` + +## Registration + +Please contact [tech@nexx360.io](mailto:tech@nexx360.io) to obtain your Nexx360 publisher credentials. From d467a9c309b15996e1c561179dbb34b399c8b452 Mon Sep 17 00:00:00 2001 From: Denis Logachov Date: Thu, 17 Sep 2026 23:52:49 +0200 Subject: [PATCH 43/54] Adkernel: documenting DSA support (#6677) * Adkernel: documenting DSA support * Update adkernel.md --- dev-docs/bidders/adkernel.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dev-docs/bidders/adkernel.md b/dev-docs/bidders/adkernel.md index 28d8a455fb..e6adb3ebdf 100644 --- a/dev-docs/bidders/adkernel.md +++ b/dev-docs/bidders/adkernel.md @@ -4,7 +4,7 @@ title: AdKernel description: Prebid AdKernel Bidder Adaptor biddercode: adkernel tcfeu_supported: true -dsa_supported: false +dsa_supported: true gvl_id: 14 usp_supported: true coppa_supported: true @@ -27,14 +27,14 @@ privacy_sandbox: no sidebarType: 1 --- -### Note +## Note The Adkernel Bidding adaptor requires setup and approval before beginning. Please reach out to for more details ### Bid Params {: .table .table-bordered .table-striped } -| Name | Scope | Description | Example | Type | -|----------|----------|-----------------------|---------------------------|----------| -| `host` | required | Ad network's RTB host | `'cpm.metaadserving.com'` | `string` | -| `zoneId` | required | RTB zone id | `30164` | `integer` | +|Name|Scope|Description|Example|Type| +|---|---|---|---|---| +|`host`|required|Ad network's RTB host|`'cpm.metaadserving.com'`|`string`| +|`zoneId`|required|RTB zone id|`30164`|`integer`| From aa6329651984f29508074eab12bfae042c8123f1 Mon Sep 17 00:00:00 2001 From: CPG Date: Thu, 17 Sep 2026 23:55:03 +0200 Subject: [PATCH 44/54] Add documentation for new stailamedia aliases (msftstaila) (#6671) * Add documentation for new scoremedia aliases (msftstalia) Add documentation for new msftstalia aliases (prebid/Prebid.js#15012) create msftstalia.md * Update msftstalia.md Cleanup * Update dev-docs/bidders/msftstalia.md Co-authored-by: Muki Seiler * Update dev-docs/bidders/msftstalia.md Co-authored-by: Muki Seiler * Update dev-docs/bidders/msftstalia.md Co-authored-by: Muki Seiler * Update dev-docs/bidders/msftstalia.md Co-authored-by: Muki Seiler * Update dev-docs/bidders/msftstalia.md Co-authored-by: Muki Seiler * Update dev-docs/bidders/msftstalia.md Co-authored-by: Muki Seiler * Update dev-docs/bidders/msftstalia.md Co-authored-by: Muki Seiler * Update dev-docs/bidders/msftstalia.md Co-authored-by: Muki Seiler * Rename msftstalia.md to msftstaila.md * apply 2 markdownlint fixes --------- Co-authored-by: Muki Seiler --- dev-docs/bidders/msftstaila.md | 96 ++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 dev-docs/bidders/msftstaila.md diff --git a/dev-docs/bidders/msftstaila.md b/dev-docs/bidders/msftstaila.md new file mode 100644 index 0000000000..f7b1f98343 --- /dev/null +++ b/dev-docs/bidders/msftstaila.md @@ -0,0 +1,96 @@ +--- +layout: bidder +title: msftstaila +description: Prebid Microsoft Bidder Adaptor +biddercode: msftstaila +aliasCode : msft +media_types: banner, video, native +tcfeu_supported: true +dsa_supported: true +prebid_member: true +userIds: all (with commercial activation) +schain_supported: true +coppa_supported: true +usp_supported: true +gpp_supported: true +floors_supported: true +fpd_supported: true +pbjs: true +pbjs_version_notes: +pbs: true +gvl_id: 32 +sidebarType: 1 +--- + +## Bid Params + +{: .alert.alert-note :} +msftstaila is an aliased bidder of Microsoft. +Either `placement_id` OR both `member` and `inv_code` are required. Please don't specify all three together, it may impact delivery. + +{: .alert.alert-note :} +We recommend to use the `use_pmt_rule` parameter set to true, when integrating, to ensure the bidding is net. + +For setup with Staila Media, please reach out to [prebid@stailamedia.com](mailto:prebid@stailamedia.com). + +{: .table .table-bordered .table-striped } + +| Name | Scope | Description | Example | Type | +| :--- | :--- | :--- | :--- | :--- | +| `placement_id` | required (see note above) | The placement ID from Microsoft Monetize. You may identify a placement using the `inv_code` and `member` instead of a placement ID. | `11223344` | `integer` | +| `member` | required (see note above) | The member ID from Microsoft Monetize. Must be used with `inv_code`. | `1234` | `integer` | +| `inv_code` | required (see note above) | The inventory code from Microsoft Monetize. Must be used with `member`. | `'abc123'` | `string` | +| `allow_smaller_sizes` | optional | If `true`, ads smaller than the values in your ad unit's `sizes` array will be allowed to serve. Defaults to `false`. | `true` | `boolean` | +| `use_pmt_rule` | optional | If `true`, Microsoft Monetize will return net price to Prebid.js after publisher payment rules have been applied. | `true` | `boolean` | +| `keywords` | optional | A comma-delimited string of key-value pairs (or terms) applied to this specific ad slot on the page. Mapped to [buy-side segment targeting](https://learn.microsoft.com/en-us/xandr/monetize/segment-targeting) (login required). A maximum of 100 key/value pairs can be defined at the request/page level. Each tag can have up to 100 additional key/value pairs defined. If you want to pass keywords for all adUnits, please use the relevant keywords fields in the First Party Data feature. Note that to use keyword with the Prebid Server adapter, that feature must be enabled for your account by an Microsoft Monetize account manager. | `pet=dog,food,brand=oldroy` | `string` | +| `traffic_source_code` | optional | Specifies the third-party source of this impression. | `'my_traffic_source'` | `string` | +| `pubclick` | optional | Specifies a publisher-supplied URL for third-party click tracking. This is just a placeholder into which the publisher can insert their own click tracker. This parameter should be used for an unencoded tracker. This parameter is expected to be the last parameter in the URL. Please note that the click tracker placed in this parameter will only fire if the creative winning the auction is using Microsoft Monetize click tracking properly. | `'http://click.adserver.com/'` | `string` | +| `ext_inv_code` | optional | Specifies predefined value passed on the query string that can be used in reporting. The value must be entered into the system before it is logged. | `'10039'` | `string` | +| `ext_imp_id` | optional | Specifies the unique identifier of an externally generated auction. | `'bacbab02626452b097f6030b3c89ac05'` | `string` | +| `banner_frameworks` | optional | Array of integers listing API frameworks for Banner supported by the publisher. | `[1,2]` | `array of integers` | + +### Migrating from the AppNexus Bid Adapter & Bid Params + +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 } + +| AppNexus Parameter | Microsoft Parameter | Description | +| :--- | :--- | :--- | +| `params.placementId` | `params.placement_id` | Placement ID (**only** the underscore case is now supported in the name, value **only** accepts integers) | +| `params.member` | `params.member` | Member ID (value **only** accepts integers) | +| `params.inv_code` | `params.inv_code` | Inventory code (unchanged) | +| `params.publisher_id` | Use `ortb2.publisher.id` | Publisher ID (moved to ortb2 config) | +| `params.frameworks` | `params.banner_frameworks` | Banner API frameworks array (small name change to clarify banner only) | +| `params.user` | Use `ortb2.user` | User data (moved to ortb2 config) | +| `params.allow_smaller_sizes` | `params.allow_smaller_sizes` | Allow smaller ad sizes (unchanged) | +| `params.use_pmt_rule` | `params.use_pmt_rule` | Use payment rule (unchanged) | +| `params.keywords` | `params.keywords` | Tag/Imp-level keywords (use ORTB format of comma-delimited string value; eg `'pet=cat,food,brand=fancyfeast'`) | +| `params.video` | Use `mediaTypes.video` | Video parameters (moved to mediaTypes) | +| `params.video.frameworks` | Use `mediaTypes.video.api` | Video API frameworks (moved to mediaTypes) | +| `params.app` | Use `ortb2.app` | App data (moved to ortb2 config) | +| `params.reserve` | Use bidfloor module | Reserve price (use bidfloor module) | +| `params.position` | Use `mediaTypes.banner.pos` | Banner position (moved to mediaTypes) | +| `params.traffic_source_code` | `params.traffic_source_code` | Traffic source code (unchanged) | +| `params.supply_type` | Use `ortb2.site` or `ortb2.app` | Supply type (moved to ortb2 config) | +| `params.pub_click` | `params.pubclick` | Publisher click URL (dropped underscore to align to endpoint) | +| `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` + +### First Party Data + +Publishers should use the `ortb2` method of setting [First Party Data](/features/firstPartyData.html). + +PBS/PSP supports all first party data fields: site, user, segments, and imp-level first party data. From 1c4774932033a61dd57ba891d83d2a22ed048c8a Mon Sep 17 00:00:00 2001 From: floxis-admin Date: Fri, 18 Sep 2026 00:56:59 +0300 Subject: [PATCH 45/54] Floxis: document first-party fallback id storage (stacks on #6596) (#6650) * Floxis: declare GVL ID 1609 and document first-party fallback id storage * Floxis: set pbs: true for the Prebid Server adapters (PBS-Go #4811, PBS-Java #4529) * Floxis: stack on #6596 (approved PBS docs) and keep only the first-party-id storage section * Floxis: PBS adapter is Java-only until the Go port lands Mirrors the same correction on #6596, which this PR stacks on. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01VAxEePaR3RJ9ULNbYp9pd4 --------- Co-authored-by: floxis-admin --- dev-docs/bidders/floxis.md | 49 ++++++++++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 10 deletions(-) diff --git a/dev-docs/bidders/floxis.md b/dev-docs/bidders/floxis.md index 5d04f78684..02aa5d83fa 100644 --- a/dev-docs/bidders/floxis.md +++ b/dev-docs/bidders/floxis.md @@ -4,8 +4,9 @@ title: Floxis description: Prebid Floxis Bidder Adapter biddercode: floxis pbjs: true -pbs: false -media_types: banner, video, native +pbs: true +pbs_app_supported: true +media_types: banner, video, native, audio safeframes_ok: true sidebarType: 1 tcfeu_supported: true @@ -13,11 +14,11 @@ dsa_supported: false gvl_id: 1609 usp_supported: true coppa_supported: true -gpp_supported: true +gpp_sids: tcfeu, usnat, usstate_all, usp schain_supported: true dchain_supported: false deals_supported: false -floors_supported: yes +floors_supported: true fpd_supported: false prebid_member: false multiformat_supported: will-bid-on-any @@ -27,17 +28,31 @@ privacy_sandbox: no ## Note -The Floxis bidder adapter enables integration with the Floxis programmatic advertising platform via Prebid.js. It supports banner, video, and native formats with OpenRTB 2.x compliance. Please contact Floxis to set up your partner account and obtain the required parameters. +The Floxis bidder adapter enables integration with the Floxis programmatic advertising platform. It supports banner, video, and native formats with OpenRTB 2.x compliance via Prebid.js, and banner, video, native, and audio via Prebid Server. Please contact Floxis at to set up your account and obtain the required parameters. -## Bid Params +## Prebid.js Bid Params {: .table .table-bordered .table-striped } | Name | Scope | Description | Example | Type | -| ------ | ------- | ----------- | ------- | ---- | +| ---- | ----- | ----------- | ------- | ---- | | `seat` | required | Seat identifier provided by Floxis | `"testSeat"` | `string` | -| `region` | required | Region identifier for routing | `"us-e"` | `string` | -| `partner` | required | Partner identifier provided by Floxis | `"floxis"` | `string` | +| `region` | optional | Routing region: `us-e`, `eu`, or `apac` (default: `us-e`) | `"us-e"` | `string` | +| `partner` | optional | Partner identifier (default: `floxis`) | `"floxis"` | `string` | + +## Prebid Server + +The Floxis Prebid Server adapter is available in `prebid-server-java`. The server-side endpoint follows the pattern `https://{region}.floxis.tech/pbs`, where `{region}` is one of `us-e`, `eu`, or `apac` (default: `us-e`). When a non-default `partner` is configured, the region host is prefixed accordingly (`https://{partner}-{region}.floxis.tech/pbs`). User-sync is handled via the standard Prebid Server cookie-sync mechanism. For setup assistance contact . + +## Prebid Server Bid Params + +{: .table .table-bordered .table-striped } + +| Name | Scope | Description | Example | Type | +| ---- | ----- | ----------- | ------- | ---- | +| `seat` | required | Seat identifier provided by Floxis | `"testSeat"` | `string` | +| `region` | optional | Routing region: `us-e`, `eu`, or `apac` (default: `us-e`) | `"us-e"` | `string` | +| `partner` | optional | Partner identifier (default: `floxis`) | `"floxis"` | `string` | ## Floors Support @@ -45,7 +60,21 @@ The Floxis adapter supports the Prebid.js [Floors Module](https://docs.prebid.or ## Privacy Support -Privacy fields (GDPR, USP, GPP, COPPA) are handled by Prebid.js core and automatically included in the OpenRTB request. +Privacy signals (GDPR/TCF EU, US Privacy, GPP, COPPA) are provided by Prebid.js core / Prebid Server and forwarded on the OpenRTB request. The Floxis exchange enforces IAB TCF EU vendor consent (GVL ID 1609) and honors US Privacy and GPP US national/state opt-out signals. + +## First-Party Fallback Id (Storage Use) + +In browsers that block third-party cookies, the Prebid.js adapter maintains a first-party fallback identifier: a random v4 UUID stored under the key `flx_uid` in `localStorage` (preferred) and a cookie (~30-day lifetime), both scoped to the publisher's own origin. The id is per-publisher — it is never shared across sites — and is sent as `user.ext.floxisId`. It is used only as an identity of last resort when the Floxis `__fxId` cookie is unavailable. Storage details are disclosed at [floxis.tech/vendor-storage.json](https://floxis.tech/vendor-storage.json). + +All storage access goes through the Prebid.js `storageManager`, so it is gated by the standard `deviceAccess` configuration and GDPR purpose-1 consent under GVL ID 1609. Bidder-level storage access is denied by default and requires an explicit publisher opt-in — without it, no id is generated or sent (a safe no-op): + +```javascript +pbjs.bidderSettings = { + floxis: { + storageAllowed: true + } +}; +``` ## AdUnit Configuration for Banner From 233b0713c54432ea0f12a9875981346f21d839f5 Mon Sep 17 00:00:00 2001 From: Andrii Rudyk <96918101+And-Rud@users.noreply.github.com> Date: Fri, 18 Sep 2026 00:58:01 +0300 Subject: [PATCH 46/54] Update matterfull.md (#6641) * Update matterfull.md * fix: add trailing newline --------- Co-authored-by: And-Rud --- dev-docs/bidders/matterfull.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/dev-docs/bidders/matterfull.md b/dev-docs/bidders/matterfull.md index d7e02aa524..d0187b317f 100644 --- a/dev-docs/bidders/matterfull.md +++ b/dev-docs/bidders/matterfull.md @@ -9,7 +9,7 @@ tcfeu_supported: false usp_supported: true prebid_member: false pbjs: true -pbs: false +pbs: true schain_supported: true floors_supported: true multiformat_supported: will-bid-on-any @@ -30,3 +30,11 @@ privacy_sandbox: no | `pid` | required | Placement ID | `0e232769e6f71d291ee7dbc9d157cf84` | `string` | | `env` | required | Environment name | `matterfull` | `string` | | `ext` | optional | Specific integration config | `{}` | `object` | + +## Prebid Server Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|-------------|----------|-----------------------------|------------------------------------|-----------| +| `pid` | required | Placement ID | `0e232769e6f71d291ee7dbc9d157cf84` | `string` | +| `env` | required | Environment name | `matterfull` | `string` | From 9839beda530bd9941a4daef30bd51d675be535fb Mon Sep 17 00:00:00 2001 From: cortex-tech Date: Fri, 18 Sep 2026 00:58:16 +0300 Subject: [PATCH 47/54] Update adapter Cortex (#6636) * Cortex Bid Adapter: document regional endpoints Document the regional subdomains supported by Cortex (eu, us-east, apac), the REGION placeholder used in the Prebid Server config, and the timezone-based region detection in the Prebid.js adapter. * Cortex Bid Adapter: document regional endpoints --------- Co-authored-by: Cortex Dev --- dev-docs/bidders/cortex.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/dev-docs/bidders/cortex.md b/dev-docs/bidders/cortex.md index 30617aa6cf..3ea0f36ec6 100644 --- a/dev-docs/bidders/cortex.md +++ b/dev-docs/bidders/cortex.md @@ -33,3 +33,30 @@ sidebarType: 1 ## Note For the prebid server you only need to use one parameter: either `placementId` or `endpointId` + +## Regional Endpoints + +Cortex supports the following regional endpoint subdomains: + +- `eu` — EU +- `us-east` — US East +- `apac` — APAC + +### Prebid Server + +The Prebid Server config endpoint is defined with a `REGION` placeholder: + +```yaml +endpoint: "https://REGION.targetadserver.com/pserver" +``` + +Please deploy this config in each of your datacenters and replace `REGION` with the appropriate regional subdomain (`eu`, `us-east`, or `apac`). + +### Prebid.js + +The Prebid.js adapter automatically selects the regional endpoint based on the browser timezone: + +- Europe / Africa / Atlantic / Arctic → `eu` +- Asia / Australia / Antarctica / Pacific / Indian → `apac` +- America / US / Canada → `us-east` +- Unknown / unresolved timezone → `eu` (fallback) From 82bbe85ec0d7d2083c3c1bf151aaeb62801a0794 Mon Sep 17 00:00:00 2001 From: krishnaatd <101393589+krishnaatd@users.noreply.github.com> Date: Fri, 18 Sep 2026 03:29:03 +0530 Subject: [PATCH 48/54] Add Mile RTD Provider module documentation (#6625) Co-authored-by: Cursor --- dev-docs/modules/mileRtdProvider.md | 89 +++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 dev-docs/modules/mileRtdProvider.md diff --git a/dev-docs/modules/mileRtdProvider.md b/dev-docs/modules/mileRtdProvider.md new file mode 100644 index 0000000000..4ac6a265b9 --- /dev/null +++ b/dev-docs/modules/mileRtdProvider.md @@ -0,0 +1,89 @@ +--- +layout: page_v2 +title: Mile RTD Module +display_name: Mile RTD Module +description: The Mile RTD module computes per-slot targeting values through a runtime engine and sets GPT slot targeting used by GAM unified Pricing rules. +page_type: module +module_type: rtd +module_code : mileRtdProvider +enable_download : true +vendor_specific: true +sidebarType : 1 +--- + +# Mile RTD Provider + +## Overview + +The `mile` RTD provider computes per-slot targeting values through a runtime engine and sets GPT slot targeting used by GAM unified Pricing rules. + +It sets a single targeting key: + +- `mile_rtd` + +The value is provider-specific and is returned by `window[params.runtimeGlobalName].getMileTargetingByAdUnit(...)` + +{% include dev-docs/loads-external-javascript.md %} + +## Installation + +Build the Mile RTD module into your Prebid.js package with: + +```bash +gulp build --modules=rtdModule,mileRtdProvider,... +``` + +## When targeting is applied + +Targeting is applied during: + +- `onAuctionInitEvent` +- `onBidResponseEvent` + +## Key-value mapping + +The runtime engine returns a map keyed by ad unit identifier (slot element ID or ad unit path), and each resolved slot gets: + +- key: `mile_rtd` +- value: `targetingByAdUnit[slotElementId]` or `targetingByAdUnit[adUnitPath]` + +Example runtime response: + +```js +{ + "div-gpt-ad-123": "segA_floorHigh", + "/1234567/homepage/top": "segB_floorMid" +} +``` + +Resulting GPT slot targeting: + +```js +slot.setTargeting("mile_rtd", "segA_floorHigh"); +``` + +## Configuration + +Use the RTD module with provider name `mile`: + +```js +pbjs.setConfig({ + realTimeData: { + dataProviders: [ + { + name: "mile", + waitForIt: false, + params: { + runtimeScriptUrl: "https://cdn.example.com/mile-rtd-runtime.js", + runtimeGlobalName: "mileRtdRuntime", // optional, default shown + }, + }, + ], + }, +}); +``` + +### Params + +- `runtimeScriptUrl` (optional): URL of runtime script to load. +- `runtimeGlobalName` (optional): global object name exposing `getMileTargetingByAdUnit`; defaults to `mileRtdRuntime`. From 93d968b32ca2126b7acb48c39e80534a973b4935 Mon Sep 17 00:00:00 2001 From: morock <98119227+mo4rock@users.noreply.github.com> Date: Fri, 18 Sep 2026 00:59:58 +0300 Subject: [PATCH 49/54] Update anzuDSP Adapter: add prebid server (#6595) --- dev-docs/bidders/anzuDSP.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/dev-docs/bidders/anzuDSP.md b/dev-docs/bidders/anzuDSP.md index d790fb9e41..36df4f82bb 100644 --- a/dev-docs/bidders/anzuDSP.md +++ b/dev-docs/bidders/anzuDSP.md @@ -9,7 +9,7 @@ tcfeu_supported: false usp_supported: true prebid_member: false pbjs: true -pbs: false +pbs: true schain_supported: true floors_supported: true multiformat_supported: will-bid-on-any @@ -30,3 +30,11 @@ privacy_sandbox: no | `pid` | required | Placement ID | `0e232769e6f71d291ee7dbc9d157cf84` | `string` | | `env` | required | Environment name | `anzuDSP` | `string` | | `ext` | optional | Specific integration config | `{}` | `object` | + +## Prebid Server Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|-------------|----------|-----------------------------|------------------------------------|-----------| +| `pid` | required | Placement ID | `0e232769e6f71d291ee7dbc9d157cf84` | `string` | +| `env` | required | Environment name | `anzuDSP` | `string` | From e7a8e986bd3346ab1fa876dc0f64ef4bbdd01531 Mon Sep 17 00:00:00 2001 From: Boris Yu Date: Fri, 18 Sep 2026 01:01:43 +0300 Subject: [PATCH 50/54] Displayio: add audio and native ad formats support info (#6500) * Displayio changes * multiformat * remove blank line * Add audio and native media types support * fix md linter errors * ### * Update dev-docs/bidders/displayio.md Co-authored-by: Muki Seiler --------- Co-authored-by: Roman G <46111871+rgushel@users.noreply.github.com> Co-authored-by: Muki Seiler --- dev-docs/bidders/displayio.md | 44 +++++++++++++++++------------------ 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/dev-docs/bidders/displayio.md b/dev-docs/bidders/displayio.md index 9abe57b05c..4b8e4f0dc2 100644 --- a/dev-docs/bidders/displayio.md +++ b/dev-docs/bidders/displayio.md @@ -3,7 +3,7 @@ layout: bidder title: Displayio description: Prebid Displayio Bidder Adapter biddercode: displayio -media_types: banner, video +media_types: banner, video, audio, native tcfeu_supported: true usp_supported: true safeframes_ok: true @@ -20,7 +20,7 @@ ortb_blocking_supported: true multiformat: will-bid-on-any --- -### Note +## Note Before configuring the display.io adapter you must reach out your account manager from display.io team (or send a request to ) for approval and setup steps. @@ -28,28 +28,28 @@ Before configuring the display.io adapter you must reach out your account manage {: .table .table-bordered .table-striped } -| Name | Scope | Type | Description | Example | -|----------------| ----- | ---- |----------------------------------------|--------------------------------------------------------------| -| `siteId` | required | Number | SiteId and PlacementID are your inventory IDs on the display.io platform (please ask your Account Manager for your site and placement IDs). | 7753 | -| `placementId` | required | Number | SiteId and PlacementID are your inventory IDs on the display.io platform (please ask your Account Manager for your site and placement IDs). | 5375 | -| `adsSrvDomain` | required | String | | "appsrv.display.io" | -| `cdnDomain` | required | String | | "cdn.display.io" | -| `renderURL` | optional | String | | "" | -| `pageCategory` | optional | String | Comma-separated list of IAB content categories that describe the current page or view of the site, list of available values. | "pageCategory1, pageCategory2" | -| `keywords` | optional | String | Comma-separated list of keywords describing the content. | "keyword1, keyword2, keyword3" | -| `custom` | optional | Object | User-defined targeting key-value pairs. custom applies to a specific unit. | `{headerTextColor: "red", fixedHeaderSelector: '.site-header'}` | -| `custom.headerText`| optional | String | Ad container header text. By default, text is "Scroll to continue with content". Limited to 50 characters. | "Our awesome advertisement" | -| `custom.headerTextColor`| optional | String | Ad container header text color, "white" by default | "#2196f3" | -| `custom.headerBackgroundColor`| optional | String | Ad container header background color, "black" by default | "#fff" | -| `custom.adContainerBackgroundColor`| optional | String | Ad container body background color, "transparent" by default | "#000" | -| `custom.fixedHeaderSelector`| optional | String | In case your webpage has a fixed header – the header Id attribute or header class attribute should be defined as a value for parameter fixedHeaderSelector. | ".site-header" | +| Name | Scope | Type | Description | Example | +| ------ | ------- | ------ | ------------- | --------- | +| `siteId` | required | Number | SiteId and PlacementID are your inventory IDs on the display.io platform (please ask your Account Manager for your site and placement IDs). | 7753 | +| `placementId` | required | Number | SiteId and PlacementID are your inventory IDs on the display.io platform (please ask your Account Manager for your site and placement IDs). | 5375 | +| `adsSrvDomain` | required | String | | "appsrv.display.io" | +| `cdnDomain` | required | String | | "cdn.display.io" | +| `renderURL` | optional | String | | "" | +| `pageCategory` | optional | String | Comma-separated list of IAB content categories that describe the current page or view of the site, list of available values. | "pageCategory1, pageCategory2" | +| `keywords` | optional | String | Comma-separated list of keywords describing the content. | "keyword1, keyword2, keyword3" | +| `custom` | optional | Object | User-defined targeting key-value pairs. custom applies to a specific unit. | `{headerTextColor: "red", fixedHeaderSelector: '.site-header'}` | +| `custom.headerText` | optional | String | Ad container header text. By default, text is "Scroll to continue with content". Limited to 50 characters. | "Our awesome advertisement" | +| `custom.headerTextColor` | optional | String | Ad container header text color, "white" by default | "#2196f3" | +| `custom.headerBackgroundColor` | optional | String | Ad container header background color, "black" by default | "#fff" | +| `custom.adContainerBackgroundColor` | optional | String | Ad container body background color, "transparent" by default | "#000" | +| `custom.fixedHeaderSelector` | optional | String | In case your webpage has a fixed header – the header Id attribute or header class attribute should be defined as a value for parameter fixedHeaderSelector. | ".site-header" | ### Prebid Server Params {: .table .table-bordered .table-striped } -| Name | Scope | Type | Description | Example | -|----------------| ----- | ---- |----------------------------------------|--------------------------------------------------------------| -| `publisherId` | required | String | Publisher Id on the display.io platform (please ask your Account Manager for your publisher id). | "101" | -| `inventoryId` | required | String | Inventory Id on the display.io platform (please ask your Account Manager for your inventory id). | "1011" | -| `placementId` | required | String | Placement Id on the display.io platform (please ask your Account Manager for your placement id). | "1011" | +| Name | Scope | Type | Description | Example | +| ------ | ------- | ------ | ------------- | --------- | +| `publisherId` | required | String | Publisher Id on the display.io platform (please ask your Account Manager for your publisher id). | "101" | +| `inventoryId` | required | String | Inventory Id on the display.io platform (please ask your Account Manager for your inventory id). | "1011" | +| `placementId` | required | String | Placement Id on the display.io platform (please ask your Account Manager for your placement id). | "1011" | From 61c6d85aa222f6675cc0e22ec96442c9c3d8c5bf Mon Sep 17 00:00:00 2001 From: Anthony Date: Fri, 18 Sep 2026 00:03:23 +0200 Subject: [PATCH 51/54] Enable Prebid Server (PBS) support for Proxistore in documentation (#6420) --- dev-docs/bidders/proxistore.md | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-docs/bidders/proxistore.md b/dev-docs/bidders/proxistore.md index 2fa119fb54..eda4267fbd 100644 --- a/dev-docs/bidders/proxistore.md +++ b/dev-docs/bidders/proxistore.md @@ -7,6 +7,7 @@ biddercode: proxistore gvl_id: 418 tcfeu_supported: true sidebarType: 1 +pbs: true --- From ed32f72a4273496fcb3d7eaedc745732d991c441 Mon Sep 17 00:00:00 2001 From: jclou Date: Thu, 17 Sep 2026 15:05:25 -0700 Subject: [PATCH 52/54] Add documentation for iOS ORTB response custom parsing (#6344) * Add documentation for iOS ORTB response custom parsing * Update prebid-mobile/pbm-api/ios/pbm-targeting-ios.md * Update prebid-mobile/pbm-api/ios/pbm-targeting-ios.md --------- Co-authored-by: James Lou Co-authored-by: Muki Seiler --- .../pbm-api/ios/pbm-targeting-ios.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/prebid-mobile/pbm-api/ios/pbm-targeting-ios.md b/prebid-mobile/pbm-api/ios/pbm-targeting-ios.md index 533d3fe760..6fa6cf930e 100644 --- a/prebid-mobile/pbm-api/ios/pbm-targeting-ios.md +++ b/prebid-mobile/pbm-api/ios/pbm-targeting-ios.md @@ -594,6 +594,26 @@ Pay attention that there are certain protected fields such as `regs`, `device`, - App and User first party data should use the [functions defined for those purposes](/prebid-mobile/pbm-api/ios/pbm-targeting-ios.html#first-party-data) - See the [Prebid Server auction endpoint](/prebid-server/endpoints/openrtb2/pbs-endpoint-auction.html#prebid-server-ortb2-extension-summary) reference for more information about how it will process incoming fields. +## ORTB Response Customization + +Prebid SDK allows customizing the parsing of the types used to represent the ORTB response. Use `CustomModelObjects.registerCustomType(_:)` to specify the custom types to use and override the `init(jsonDictionary:)` with custom parsing logic. + +```swift +class MyCustomORTBBidResponse: ORTBBidResponse { + + var myCustomField: String? + + required init(jsonDictionary: [String : Any]) { + myCustomField = jsonDictionary["customString"] as? String + super.init(jsonDictionary: jsonDictionary) + } +} + +CustomModelObjects.registerCustomType(MyCustomORTBBidResponse.self) +``` + +You can use this to access custom or unsupported fields from the prebid response, or to modify the response at your own risk. + ## Further Reading - [Prebid Mobile Overview](/prebid-mobile/prebid-mobile.html) From 0a0080eb8d664983a077932bd0d483fe8f6b8933 Mon Sep 17 00:00:00 2001 From: adbix-net Date: Fri, 18 Sep 2026 10:23:58 +0500 Subject: [PATCH 53/54] Adbix Bid Adapter: add docs (#6735) * Add Adbix bidder adapter documentation Added documentation for the Adbix bidder adapter, including registration details, bid parameters, supported media types, and user sync information. * Update adbix.md with user-sync and privacy details Added information about image user-sync endpoint and privacy practices. * Fix formatting in Adbix privacy policy link * Update headings in adbix.md for consistency * Fix formatting in Adbix privacy policy link * Fix formatting in Adbix privacy policy link * Revise Adbix bidder documentation Updated Adbix bidder documentation with new fields and clarified user sync information. --- dev-docs/bidders/adbix.md | 41 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 dev-docs/bidders/adbix.md diff --git a/dev-docs/bidders/adbix.md b/dev-docs/bidders/adbix.md new file mode 100644 index 0000000000..5b809d8412 --- /dev/null +++ b/dev-docs/bidders/adbix.md @@ -0,0 +1,41 @@ +--- +layout: bidder +title: Adbix +description: Prebid Adbix Bidder Adapter +pbjs: true +pbs: false +biddercode: adbix +media_types: banner +coppa_supported: false +tcfeu_supported: false +usp_supported: false +schain_supported: true +dchain_supported: false +safeframes_ok: true +deals_supported: true +floors_supported: true +fpd_supported: true +userId: none +sidebarType: 1 +--- + +## Registration + +To use the Adbix bidder you will need a valid publisher ID and placement ID from Adbix. For further information, please contact . + +## Bid Params + +{: .table .table-bordered .table-striped } +| Name | Scope | Description | Example | Type | +|---------------|----------|-------------------------------------|--------------------|-----------| +| `publisherId` | required | Adbix publisher identifier | `'test-publisher'` | `string` | +| `placementId` | required | Adbix placement identifier | `'test-300x250'` | `string` | +| `test` | optional | Enables the Adbix test response | `true` | `boolean` | + +## User Sync + +User sync is recommended to improve match rates and monetization. The adapter registers an image user-sync request when image/pixel syncing is enabled by the publisher. The auction continues to work when image user syncing is disabled. + +## Privacy + +For information about Adbix privacy practices, see: From 8e462160899480a5b297d1969843560c2066f2fc Mon Sep 17 00:00:00 2001 From: James Rosewell Date: Fri, 18 Sep 2026 07:11:22 +0100 Subject: [PATCH 54/54] 51Degrees RTD Provider: say what protects a 51Did, and correct the device identifier description (#6730) * Say what protects a 51Did, and correct the device identifier description Two claims on this page were wrong. 51Did was described as "a 51Degrees privacy-safe identifier". Nothing about the string keeps a person from being identified. What keeps them from being identified is that every party sending or receiving one is bound by the Model Terms for Marketing, published by the Movement for an Open Web. The page now says what a 51Did carries, that it is not anonymous, and what those terms require of a receiver, being a closed list of purposes, no modifying or splitting the data, no special category data or profiling on it, no attempt to identify the user, and only the operator may link it to a user. It also says that each party warrants it has no means reasonably likely to be used to identify anyone, which is a promise about the receiver rather than a fact about the string. device.ext.fod.deviceId was described as "a permanent device ID", which reads as a lasting identifier for one device or person. The published definition of that property is four components, Hardware-Platform-Browser-IsCrawler, each the id of the matching profile, so every device of the same model and configuration carries the same value. The page now says it names a configuration and identifies no individual device or person. Also on this page: the marketing preference is named as standard marketing or personalized marketing, as Appendix 1 of the Model Terms describes them to a user; ext.tdl is described as it now behaves, naming the Model Terms first and the publisher's own TDL after them; and the Customer Notices section carries clause 7.4, which makes every party bound by the terms publish its own notice. * Correct the eids entry count and the id.usage scope Review of the previous commit found two claims on this page that the module does not support. The eids paragraph described a single entry. Since Prebid.js#15490 the module emits one entry per identifier type, because mm is an eid-level field and the three types carry different values. The id.usage paragraph said a 51Did is only produced for standard or personalized marketing. That holds for the request this module makes, but not where the page supplies its own 51Degrees integration and the module consumes whatever preference that was loaded with. * Drop the eids rewrite, master already carries it The previous commit restated the per-type user.eids entries in prose. Master has documented them since #6703, in a table, so this branch only adds a conflicting second version of the same thing. The id.usage correction stays. --------- Co-authored-by: Eugene Dorfman --- dev-docs/modules/51DegreesRtdProvider.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/dev-docs/modules/51DegreesRtdProvider.md b/dev-docs/modules/51DegreesRtdProvider.md index d0aaa0a7d8..dec129daa6 100644 --- a/dev-docs/modules/51DegreesRtdProvider.md +++ b/dev-docs/modules/51DegreesRtdProvider.md @@ -29,13 +29,17 @@ The Cloud API is **free** to integrate and use. To increase limits please check 51Degrees module sets the following fields of the device object: `devicetype`, `make`, `model`, `hwv`, `os`, `osv`, `h`, `w`, `ppi`, `pxratio`. Interested bidder adapters may use these fields as needed. -The module also adds a `device.ext.fod` extension object (fod == fifty one degrees) and sets `device.ext.fod.deviceId` to a permanent device ID, which can be rapidly looked up in on-premise data, exposing over 250 properties, including device age, chipset, codec support, price, operating system and app/browser versions, age, and embedded features. +The module also adds a `device.ext.fod` extension object (fod == fifty one degrees) and sets `device.ext.fod.deviceId` to the 51Degrees device identifier. That value names the combination of hardware, platform and browser profiles detected, so every device of the same model and configuration carries the same value and it identifies no individual device or person. It can be rapidly looked up in on-premise data, exposing over 250 properties, including device age, chipset, codec support, price, operating system and app/browser versions, age, and embedded features. It also sets `device.ext.fod.tpc` to a binary value to indicate whether third-party cookies are enabled in the browser (1 if enabled, 0 if disabled). When 51Degrees IPI is available in the cloud response, the module sets `device.ip` and `device.ipv6`, and (if the location confidence is `high` or `medium`) populates `device.geo.{lat,lon,country,zip,utcoffset,accuracy,type,ipservice}` per OpenRTB 2.6 and AdCOM 1.0. -[51Did](https://51degrees.com/documentation/4.5/_identifiers_51_did.html) is a 51Degrees privacy-safe identifier derived from device signals. Its production requires a marketing usage preference (`id.usage`). The recommended way to collect and store that preference is the [51Degrees Preference Management Platform (PMP)](https://51degrees.com/documentation/4.5/_identifiers__p_m_p.html) — a lightweight consent widget that writes the user's choice to `localStorage`. When PMP is present on the page the module picks up that preference automatically. When PMP is absent the module falls back to inferring the preference from the publisher's existing TCF or GPP consent string (see below). +[51Did](https://51degrees.com/documentation/4.5/_identifiers_51_did.html) is a 51Degrees identifier derived from device signals. It carries a match key, being the stable alphanumeric string two recipients compare to decide they have seen the same browser, together with the user's marketing preference, the creator domain, a timestamp and a cryptographic signature. + +51Did is not anonymous. What protects the user is the contract every party is bound by, rather than anything about the string itself. A 51Did is sent and received under the [Model Terms for Marketing](https://m4ow.uk/mtm), published by the Movement for an Open Web, whose full text is at [m4ow.uk/mtm/2.txt](https://m4ow.uk/mtm/2.txt). Under those terms a receiver may use the data only for a closed list of purposes and only as the user's preference allows, must not modify it or store its parts separately, must not combine it with special category data or profile on such data, and must not attempt to identify the user from it. Only the operator, being the party running the interface where the user gave the preference, may link the identifier to a user. Each party warrants that it has no means reasonably likely to be used to identify anyone from the data, which is what puts the data outside personal data for that transaction where data protection law applies, and that warranty is a promise about the receiver rather than a fact about the string. + +A 51Did is produced only where the user has given a usage preference (`id.usage`). On the cloud request this module makes, that preference is either standard marketing or personalized marketing as those are described to the user in Appendix 1 of the [Model Terms](https://m4ow.uk/mtm/2.txt). Standard marketing means content unrelated to browsing history, such as content chosen by time, region and the page in view. Personalized marketing means content related to browsing history or interactions. Where no preference has been given, no 51Did is produced. Where the page already carries its own 51Degrees integration, the module uses that response as it finds it, so the preference is whichever one that integration was loaded with (see [On-page integration](#on-page-integration)). The recommended way to collect and store that preference is the [51Degrees Preference Management Platform (PMP)](https://51degrees.com/documentation/4.5/_identifiers__p_m_p.html) — a lightweight consent widget that writes the user's choice to `localStorage`. When PMP is present on the page the module picks up that preference automatically. When PMP is absent the module falls back to inferring the preference from the publisher's existing TCF or GPP consent string (see below). When 51Did is available, the module appends one `user.eids` entry per identifier type returned by the cloud, each with `source = "51d.es"` and `inserter = "51degrees.com"`. The match method (`mm`) is an eid-level field, so a type cannot share an entry with another type: @@ -46,7 +50,7 @@ When 51Did is available, the module appends one `user.eids` entry per identifier | Random | 0 (unknown) | 1 (browser or device tied) | | Hashed Email | 3 (authenticated) | 3 (person based) | -A type's license and global values share its entry as `uids`, license value first. The `ext.tdl` URL comes from the `params.tdlUrl` module config and is added to every entry. Random and Hashed Email appear only when the resource key includes those properties, and Hashed Email additionally requires evidence supplied to the 51Degrees integration itself (see [On-page integration](#on-page-integration)). +A type's license and global values share its entry as `uids`, license value first. Every entry carries `ext.tdl`, an array of terms documents naming the legal basis the identifier is shared under. The [Model Terms for Marketing](https://m4ow.uk/mtm/2.txt) are always first, because every party sending or receiving a 51Did is bound by them. The publisher's own Terms Document Locator follows when `params.tdlUrl` is configured. Random and Hashed Email appear only when the resource key includes those properties, and Hashed Email additionally requires evidence supplied to the 51Degrees integration itself (see [On-page integration](#on-page-integration)). The module forwards the publisher's consent strings to the cloud as evidence when present. The TCF consent string (from Prebid's GDPR consent) is sent as `tcstring` and the GPP string (from Prebid's GPP consent) is sent as `gppstring`; the cloud can infer the marketing usage preference from either when PMP is not present, so 51Did works for publishers running any TCF or GPP CMP. These come from Prebid's consent data, not module params. @@ -202,7 +206,7 @@ Two limitations follow from consuming the page integration directly: | params | Object | | | | params.resourceKey | String | Your 51Degrees Cloud Resource Key | | | params.onPremiseJSUrl | String | Direct URL to your self-hosted on-premise JS file (e.g. `https://your.domain/51Degrees.core.js`) | | -| params.tdlUrl | String | URL of your Terms Document Locator (TDL) — a machine-readable document declaring the data usage terms under which the identifier is shared, per the [data-labels proposal](https://github.com/jwrosewell/data-labels/tree/main) and its [OpenRTB extension](https://github.com/jwrosewell/data-labels/blob/main/OpenRTB.md). The URL is placed in the `ext.tdl` array of the `51d.es` eids entry. Omit if you do not publish a TDL; the module will log a warning and emit the eids entry without `ext.tdl`. | | +| params.tdlUrl | String | URL of your Terms Document Locator (TDL), a document declaring the data usage terms under which the identifier is shared, per the [data-labels proposal](https://github.com/jwrosewell/data-labels/tree/main) and its [OpenRTB extension](https://github.com/jwrosewell/data-labels/blob/main/OpenRTB.md). The URL is added to the `ext.tdl` array of the `51d.es` eids entry, after the [Model Terms for Marketing](https://m4ow.uk/mtm/2.txt), which are always present. Omit if you do not publish a TDL; the module logs a warning and the entry names the Model Terms alone. | | ## Example @@ -227,3 +231,5 @@ Open the browser console to see the logs. ## Customer Notices When using the 51Degrees cloud service publishers need to reference the 51Degrees [client services privacy policy](https://51degrees.com/terms/client-services-privacy-policy) in their customer notices. + +Where a publisher sends or receives a 51Did under the [Model Terms for Marketing](https://m4ow.uk/mtm), the terms carry their own notice obligation. Each party bound by them must publish a notice on its own site saying that it is bound by them, linking the version it is bound by, saying which of the data it handles is covered by them and which is not, and explaining what the match key is and why the party cannot identify anyone from it. The notice can sit inside an existing policy as long as that policy says these things and stays publicly reachable. See clause 7.4 of the [full text](https://m4ow.uk/mtm/2.txt).