Blog · Signals

Google Ad Manager now sends site.pagecat on Ad Exchange requests, and Prebid bidders on the same page still get whatever you put in ortb2.site.

On October 16, 2026, AdExchanger's content studio argued that CTV automation will only work if buyers can activate richer signals across programmatic inventory. Two days earlier, on October 15, Google shipped a concrete bid-request change on its own demand paths: Authorized Buyers RTB release notes say Ad Manager now populates site.cat, site.pagecat, app.cat, and app.pagecat, with matching cattax values, on requests Google builds for Ad Exchange, Open Bidding, and SDK bidders. That is not the same object Prebid.js forwards to SSP adapters on the same page. The industry argument about better signals just became a path split you can measure in JSON.

What came back on the wire, and where

Google's October 15, 2026 OpenRTB proto release notes state that Google populates the category fields with standard IAB Tech Lab content category IDs. The cattax fields indicate the taxonomy in use for the corresponding cat and pagecat arrays; the CategoryTaxonomy enum on Authorized Buyers supports IAB_CONTENT_1_0 and IAB_CONTENT_2_2. The cat arrays describe the site or app as a whole; pagecat describes the current page or view. Sharing is subject to publisher controls and privacy rules documented in Google Ad Manager help.

Google Ad Manager release notes for the same date describe the feature as sharing standard OpenRTB contextual categories with Authorized Buyers, Open Bidding, and SDK bidding. For now, those fields are sent only on bid requests from outside the European Economic Area, the United Kingdom, and Switzerland. Categories that may relate to GDPR Article 9 special categories of personal data are not shared from any geography. Publishers can disable sharing with the network-level toggle "Share contextual category signals" under Admin, Global settings, Network settings.

Google had not passed contextual content categories to buyers in its auction since February 2020, after discussions with European data protection authorities. Buyers on Ad Exchange and Open Bidding spent six years inferring page meaning from URL, crawl, or post-bid classification. The October 15 change restores declarative categories on Google-built requests only. It does not backfill history on Prebid legs that never carried those arrays.

Prebid is a different hop with a different publisher

The change covers bid requests Ad Manager constructs for its own demand. Prebid bidders receive whatever the wrapper places in ortb2.site or ortb2.app. Prebid's first-party data documentation lists cat, sectioncat, and pagecat as standard site fields settable via setConfig, per-auction overrides, or setBidderConfig. Many production wrappers leave them unset. On an article URL where pbjs.getConfig('ortb2') returns no pagecat, Ad Exchange buyers outside Europe now see IAB codes Google mapped from the publisher's own Ad Manager inventory, while Prebid SSPs still price a request with an empty site object.

That is the same structural pattern as Prebid vs TAM vs Open Bidding: one ad unit in the UI, multiple OpenRTB assemblies. Floors, deals, and privacy strings already diverged by path. Category arrays are another request-wide field that can differ without violating the spec. A buyer who trains contextual avoidance on Ad Exchange logs is not automatically applying the same rules to header-bidding impressions from the identical page.

OpenRTB 2.6 defaults BidRequest.cattax to 1, Content Category Taxonomy 1.0. A taxonomy 2.x or 3.x integer sent without cattax is a different code than the buyer interprets. Google's populated cattax on site and app objects reduces that ambiguity on Google paths. A publisher who manually maps CMS sections to IAB codes in ortb2.site must set cattax to match, or Prebid-side bcat and contextual targeting will misfire even after they copy Google's category lists.

Extensions that still are not on every path

The same October 15 release notes add Google OpenRTB extensions for content.title, content.series, content.network, and content.channel on site and app objects. Those fields describe show-level metadata buyers have asked for in CTV and long-form web video. They arrive on the Google protobuf extensions version bundled with Authorized Buyers, not as a guarantee on arbitrary SSP traffic. A DSP rule that hard-requires content.title will behave differently on Open Bidding than on a Prebid Server fan-out that never copied those extensions.

The AI slop impressions post made a related point with different supply: verification can count hundreds of millions of low-quality impressions while the OpenRTB request still validates. Restoring site.cat does not label slop on the wire either. It gives buyers a declared category to match against block lists and contextual models. When only one demand path receives that declaration, spend shifts toward the path with richer signals, not necessarily toward higher-quality pages.

Google-built request (Ad Exchange / Open Bidding / SDK, non-EEA/UK/CH):
  site.pagecat: ["IAB9-30"]     // example IAB Content 1.0 code
  site.cattax:  IAB_CONTENT_1_0
  site.cat:     ["IAB9"]

Prebid-forwarded request (same URL, default wrapper):
  site: {}                       // or site without pagecat
  // bcat on the request still applies, but buyer contextual bid
  // logic keyed on pagecat sees nothing

The example uses illustrative IAB codes. Production values come from Google's mapping of publisher inventory to IAB Content Taxonomy IDs subject to the Article 9 exclusion. The point is structural: two JSON objects, one impression opportunity, unequal category arrays. RTBlint will flag type errors and invalid cattax enums; it does not judge whether Google's mapping matches editorial intent.

Why the EEA split is a built-in experiment

European Economic Area, United Kingdom, and Swiss traffic continues to omit the category fields for now. Everywhere else receives them by default unless the publisher toggles sharing off. That geography split is useful for analytics: same site, same week, two bid-request shapes differing primarily by whether pagecat is present. Revenue per thousand requests that rises outside Europe but not inside it is evidence that category signals moved bids, not that header bidding suddenly improved globally.

Buyers should segment win rate and effective CPM by country bucket and by demand path (Ad Exchange versus Prebid adapter) before rewriting targeting rules. Sellers should compare Ad Exchange win share against Prebid on ad units where both fire. A shift toward Google demand outside Europe with flat European results is consistent with the category rollout even when no other trafficking change occurred.

None of that shows up in a single aggregated fill-rate tile. It shows up when exports retain path dimension and when someone reads the October 15 release notes instead of assuming contextual targeting returned everywhere at once. The Prebid ad-server bid-in proposal is a separate auction-topology story. Category population is live now on Google demand regardless of whether GAM ever bids into Prebid Server.

What to diff this week

  • Capture one Authorized Buyers or Open Bidding request and one Prebid outbound request on the same non-European page view. Compare site.pagecat, site.cat, and site.cattax (or app equivalents).
  • Run pbjs.getConfig('ortb2') on article and section templates. Document whether pagecat is empty before copying Google's categories into ortb2.site.
  • If you map CMS tags to IAB codes for Prebid, set cattax explicitly and validate samples in the bid request tester or CI per the OpenRTB validation guide.
  • Split reporting into EEA or UK or CH versus rest-of-world when testing contextual bid adjustments, so you do not attribute a European control group to a signal that is not there yet.
  • Read buyer loss reason 209 (category blocked) with the cattax from the same request. The same integer under two taxonomies is two different categories.

RTBlint is independent and not affiliated with Google, IAB Tech Lab, or AdExchanger. Field names follow OpenRTB as published by IAB Tech Lab. Category population rules quoted here are from Google Authorized Buyers release notes dated October 15, 2026 and Google Ad Manager release notes for the same date.

Sources