Skip to main content

Prebid

Prebid

DirectionBidirectional
Environment
Web
Capability
Event CollectionCohort ActivationIdentity Signal
SDK RequiredYes
Product(s) RequiredCore Platform

Prebid is an open-source header bidding solution that helps publishers maximize revenue through real-time bidding.

Overview

Prebid is an open-source header bidding solution that enables publishers to offer their ad inventory to multiple demand sources simultaneously before making calls to their ad servers. Permutive provides two specialized Prebid modules that work independently or together:
  1. Real-Time Data (RTD) Module - Activates cohort signals in bid requests for audience targeting
  2. Identity Manager Module - Passes identity signals from third-party identity providers to bidders
This integration is both a Source and Destination:
  • Source: Permutive collects bid data and auction information from Prebid.js auctions, including bid prices, response times, and winning bids.
  • Destination (Cohort Activation): Permutive activates your cohorts in Prebid.js auctions for real-time targeting via the RTD module.
  • Destination (Identity Signal Activation): Permutive passes identity signals (RampID, ID5, UID2) to bidders via the Identity Manager module.

How It Works

RTD Module (Cohort Activation): The Permutive RTD module acts as a bridge between the Permutive Web SDK and Prebid.js:
  1. When users fall into activated cohorts, these are detected by Permutive’s Prebid RTD module
  2. Cohort data is attached to the ortb2.user.data object in bid requests for configured SSPs
  3. SSPs receive cohort targeting data and can use it for real-time decisioning
Identity Manager Module (Identity Signal Activation): The Permutive Identity Manager module retrieves identity signals from third-party identity providers and makes them available in Prebid auctions:
  1. Identity providers (RampID, ID5, UID2) generate identity envelopes through Permutive’s Identity Manager
  2. The Permutive Identity Manager module retrieves these identities from the Permutive SDK
  3. Identity signals are passed to bidders via the user.eids object in bid requests
  4. Bidders can decrypt and use these identity signals for targeting and measurement

Cohort Types

  • Standard Cohorts (IDs > 1,000,000): Automatically available to all configured AC bidders without specific activation. These are general audience segments.
  • Custom Cohorts: Must be explicitly activated for each SSP in the Permutive Dashboard. These are your custom-built audience segments.
  • Advertiser Cohorts: Must be configured by your Customer Success Manager for customers using Permutive’s Data Clean Room.
Use cases include:
  • Send Permutive cohorts to your Prebid.js auctions for real-time targeting and decisioning across multiple SSPs.
  • Pass identity signals (RampID, ID5, UID2) from third-party identity providers to bidders for enhanced addressability and targeting.
  • Track bid data and auction performance in Permutive for insights and optimization.
  • Build cohorts based on bidder behavior, auction outcomes, and advertiser information.
  • Optimize header bidding performance with data-driven audience insights and identity resolution.

Environment Compatibility

EnvironmentSupportedNotes
WebYesRequires Prebid.js v9.5.0+
iOSNoNot supported
AndroidNoNot supported
CTVNoNot supported
API DirectNoNot supported

Prerequisites

For both modules:
  • Prebid.js Version: You must have Prebid.js v9.5.0 or later installed on your website.
  • Web SDK: The Permutive Web SDK must be deployed on your site.
  • GDPR/Consent Management: If operating in regions with GDPR requirements, you must configure the Prebid consent management module with proper storage exceptions for Permutive.
For Cohort Activation (RTD Module):
  • Permutive RTD Module: The permutiveRtdProvider module must be included in your Prebid.js build. This module is essential for reading cohort data from local storage and passing it to SSPs.
For Identity Signal Activation (Identity Manager Module):
  • Permutive Identity Manager Module: The permutiveIdentityManagerIdSystem module must be included in your Prebid.js build.
  • Identity Provider Setup: You must have at least one identity provider (RampID, ID5, or UID2) configured in the Permutive Dashboard. See the Identity Integration Catalog for details on setting up identity providers.

Setup

Choose which module(s) you want to configure based on your needs. You can use either module independently or both together.
1

Install Prebid.js RTD Module

The Permutive Real-Time Data (RTD) module must be included in your Prebid.js build. This module reads cohort data from local storage and passes it to configured SSPs. Ensure your Prebid.js build includes the permutiveRtdProvider module.
2

Configure Prebid.js RTD Module

Configure your Prebid.js setup to include the Permutive RTD module. Add the following configuration to your Prebid.js setup:
pbjs.setConfig({
  realTimeData: {
    auctionDelay: 200, // Milliseconds to delay auction for RTD data
    dataProviders: [{
      name: 'permutive',
      waitForIt: true, // Delays auction until Permutive data is ready
    }]
  }
});
Configuration Notes:
  • waitForIt: true: Ensures the auction waits for the RTD module to complete before sending bid requests. This is critical for cohorts to be included in all bid requests.
  • auctionDelay: Maximum time (in milliseconds) to wait for RTD data. Recommended value is 200-300ms to balance cohort availability with auction speed.
3

Configure GDPR Consent Management (If Applicable)

If you operate in regions with GDPR requirements, you must configure Prebid’s consent management to allow Permutive access to local storage. Without this, the RTD module cannot read cohort data.As Permutive acts as a processor on behalf of publishers, consent is given to the Permutive SDK by the publisher, not by the GDPR Consent Management Module.Important: While Permutive is listed as a TCF vendor (ID: 361), Permutive does not obtain consent directly from the TCF. If you are using the TCF Control Module and need to prevent Permutive from being blocked, you must add Permutive as a vendor exception. Here’s an example configuration:
pbjs.setConfig({
  consentManagement: {
    gdpr: {
      cmpApi: 'iab',
      timeout: 8000,
      allowAuctionWithoutConsent: true,
      defaultGdprScope: true,
      rules: [
        {
          purpose: 'storage',
          enforcePurpose: true,
          enforceVendor: true,
          vendorExceptions: ["permutive"]
        },
        {
          purpose: 'basicAds',
          enforcePurpose: true,
          enforceVendor: true,
          vendorExceptions: []
        }
      ]
    }
  }
});
Consult the Prebid consent management documentation and Permutive RTD Provider documentation for detailed guidance.
4

Verify Setup

In the Permutive Dashboard, navigate to your events page. You should start seeing Prebid event data appear. For cohorts with Prebid activation configured, you should see these cohorts available for targeting in your Prebid auctions.To verify cohorts are being passed to SSPs:
  1. Add ?pbjs_debug=true to your URL
  2. Open your browser’s Developer Console
  3. Filter logs for “permutiveRTD” to see RTD module activity
  4. Look for “Bid requests” logs in Prebid to see cohort data attached to bid requests in the ortb2.user.data field

Data Types

With your Prebid integration setup, you’ll see the following additional event types collected in Permutive:
Tracks individual bids from Prebid auctions. This event contains detailed information about each bid received during an auction.
auction_id
string
Unique identifier for the Prebid auction.
ad_unit_code
string
The ad unit code for the slot being auctioned.
bidder
string
The bidder code (e.g., ‘appnexus’, ‘pubmatic’).
cpm
number
The exact bid price from the bidder in CPM.
width
number
The width of the returned creative size.
height
number
The height of the returned creative size.
time_to_respond
number
The amount of time for the bidder to respond with the bid in milliseconds.
bid_available
boolean
Boolean indicating whether the bid is available.
winning_bid
boolean
Boolean indicating whether this bid won the auction.
advertiser_id
string
The advertiser ID from the bid response.
advertiser_name
string
The advertiser name from the bid response.
deal_id
string
If the bid is associated with a Deal, this field contains the deal ID.
creative_id
string
The ID of the selected creative for the ad.
hb_pb
string
Prebid bid price bucket.
request_timestamp
number
The time at which the prebid request was sent.
response_timestamp
number
The time at which the prebid response was received.
Tracks winning bids from Prebid auctions. This event is fired when a bid wins an auction and includes all the same properties as PrebidBid.
auction_id
string
Unique identifier for the Prebid auction.
ad_unit_code
string
The ad unit code for the slot being auctioned.
bidder
string
The bidder code (e.g., ‘appnexus’, ‘pubmatic’).
cpm
number
The exact bid price from the bidder in CPM.
width
number
The width of the returned creative size.
height
number
The height of the returned creative size.
time_to_respond
number
The amount of time for the bidder to respond with the bid in milliseconds.
bid_available
boolean
Boolean indicating whether the bid is available.
winning_bid
boolean
Boolean indicating whether this bid won the auction (always true for this event).
advertiser_id
string
The advertiser ID from the bid response.
advertiser_name
string
The advertiser name from the bid response.
deal_id
string
If the bid is associated with a Deal, this field contains the deal ID.
creative_id
string
The ID of the selected creative for the ad.
hb_pb
string
Prebid bid price bucket.
request_timestamp
number
The time at which the prebid request was sent.
response_timestamp
number
The time at which the prebid response was received.
Tracks aggregated auction data containing multiple bids and no-bid responses for a single auction. This event provides comprehensive auction-level insights.
auction_id
string
Unique identifier for the Prebid auction.
bids
list[object]
Array of bid objects containing detailed bid information.
no_bids
list[object]
Array of no-bid responses from bidders who chose not to bid.
aggregations.auctions
list[object]
Array of auction objects containing multiple ad units and their associated bids.

Troubleshooting

Check that your Prebid.js version is 9.5.0 or later. Verify that the Permutive RTD module (permutiveRtdProvider) is included in your Prebid.js build and properly configured. Ensure the Prebid integration is enabled in your Permutive Dashboard. Use the debugging query parameters ?permutive_debug=true&pbjs_debug=true in your browser to view detailed logs in the developer console.
Check local storage first: Open your browser’s Developer Tools, navigate to Application > Local Storage, and verify that cohort data is being written to keys starting with _P (e.g., _prubicons, _papns, _pindexs). If these keys are empty, cohorts are not being activated in the Permutive Dashboard. Standard cohorts (IDs over 1,000,000) are automatically available to all AC bidders without specific activation, but custom cohorts must be explicitly activated for each SSP.
If cohorts are missing from some bid requests, ensure your Real-Time Data configuration includes waitForIt: true in the Permutive RTD provider setup. This setting delays the auction until the Permutive RTD module has completed processing. Also verify that auctionDelay is set to an appropriate value (typically 200ms or higher) in your pbjs.setConfig().realTimeData configuration.
If you recently upgraded to Prebid.js v9.5.0 or later and are experiencing issues, this version fixed a critical bug related to how the Permutive RTD module pushes values into ORTB2 objects. If you’re on an older version and seeing intermittent targeting issues (especially when numeric targeting values are present), upgrade to v9.5.0 or later. After upgrading, verify that all required modules (RTD module, bid adapter modules, Permutive RTD provider) are still included in your build.
Some publishers run multiple versions of Prebid.js on their site (e.g., one for display ads and another for video). This can cause conflicts with the Permutive RTD module. Ensure you’re using a single, consistent Prebid.js setup across your site.
If identity signals (RampID, ID5, UID2) are not appearing in the user.eids field of bid requests:
  1. Verify identity provider is enabled: Navigate to IdentityCatalog in the Permutive Dashboard and confirm your identity provider is enabled and configured correctly
  2. Check Prebid module inclusion: Verify the permutiveIdentityManagerIdSystem module is included in your Prebid build by checking your Prebid configuration
  3. Confirm consent: Ensure your identity provider has proper consent in your CMP. Each identity provider requires specific TCF purposes to be enabled
  4. Check SDK timing: The Identity Manager module needs the Permutive SDK to be available. Increase the ajaxTimeout parameter if your SDK loads slowly
  5. Review debug logs: Add ?pbjs_debug=true to your URL and check for “User ID” logs in the console
For identity provider-specific troubleshooting, see the individual identity integration documentation:
If you see empty user.eids in some bid requests but not others, the Identity Manager module may not be loading in time for the auction. This can happen if:
  • The Permutive SDK loads slowly on your page
  • The ajaxTimeout parameter is too low
  • The auctionDelay in userSync configuration is too short
Solution: Increase both the ajaxTimeout (in the module params) and auctionDelay (in userSync config). Start with ajaxTimeout: 90 and auctionDelay: 100, then adjust based on your page load times.
If you’re using both modules and experiencing slow auctions, you may need to optimize your timeout configuration:
  • RTD module auctionDelay: Controls how long to wait for cohort data (recommended: 200ms)
  • Identity Manager auctionDelay: Controls how long to wait for identity signals (recommended: 100ms)
  • Identity Manager ajaxTimeout: Controls how long to wait for the SDK (recommended: 50-90ms)
Tip: The RTD module and Identity Manager module delays are independent. If using both, consider the cumulative impact on auction timing and adjust accordingly to balance data availability with page performance.
To troubleshoot Prebid integration issues, add these query parameters to your URL: ?permutive_debug=true&pbjs_debug=true. This enables detailed logging from both the Permutive SDK and Prebid.js in your browser’s developer console. Look for logs tagged with “permutiveRTD” to see exactly what the RTD module is doing, including which segments it’s reading and which bidders it’s attaching data to. For the Identity Manager module, look for “User ID” logs showing identity retrieval.

Changelog

July 2025

  • Enhanced support for advertiser cohort activation via Prebid
  • Improved Prebid RTD module configuration options

June 2025

  • Added support for PrebidAuctions event collection
  • Enhanced bid data collection and auction insights
For detailed changelog information, visit our Changelog.