The Return of Contextual Targeting: Classifying Content for Modern DSPs
Every bidder working from the OpenRTB 2.6 spec assumes IAB Content Taxonomy 1.0 whenever a bid request carries no cattax field. A publisher that has never classified a single page therefore still ships buyers a taxonomy, just an obsolete one, and the buy side decodes those category strings accordingly. Classification never left the transaction; it decayed while audience data absorbed the budgets. The audience layer is now the side in retreat, and content categories came back as the one signal both sides of the trade can verify.
Two facts frame the shift. The IAB Tech Lab has deprecated Content Taxonomy 2.x and expanded the shared category set from roughly 400 categories to more than 1,500 in version 3.0, and the Lab describes migration as not optional. Meanwhile Google Ad Manager, the ad server most of this market runs on, does not share its automated contextual categories for traffic from the EEA, the UK or Switzerland, which opens a classification gap precisely where privacy enforcement bites hardest. What follows: the taxonomy itself, the OpenRTB 2.6 fields that carry it, how Ad Manager and Prebid populate those fields, and the workflow that turns editorial output into signal buyers pay for.
Why buyers moved budget back to content
A DSP buying an audience segment inherits every weakness of that segment: consent gaps, identity resolution failures, staleness. A content category inherits none of these, because it describes the page in front of the user at the moment of the bid. Buyers know the difference. Every major DSP, including The Trade Desk, DV360, Amazon DSP and Criteo, exposes some form of content-category targeting to its traders, and the line items built on those categories clear in markets where audience segments underperform.
The fastest growing channels never had cookie-based targeting to lose. Content Taxonomy 3.0, which arrived on September 23, 2021, supports buying on CTV, video, podcasts, games and mobile apps. In those environments the content category is the native targeting key, not a fallback, and publishers who classify well there sell into budgets that have no other lever to pull.
Made-for-advertising pages pushed buyers in the same direction. When buyers could no longer trust what a page claimed to be, they stopped paying for adjacency claims and started paying for adjacency they could check. A taxonomy-aligned category screened before the auction prices like quality supply. A category claim with nothing behind it prices like remnant, if it clears at all.
For publishers this changes the job. Ad operations teams once treated contextual data as a compliance checkbox. It now functions as yield infrastructure, and the difference shows up directly in bid density between classified and unclassified sections.
What Content Taxonomy 3.0 changed
The headline change is scale. Version 3.0 expands the taxonomy from roughly 400 categories to more than 1,500, which gives buyers nodes fine enough to separate topics that older versions merged and gives publishers codes for content the old tree could not express. The IAB Tech Lab Content Taxonomy hub publishes the full category list and the migration guidance, and the Lab describes the move off 2.x as not optional: 2.x sits on the deprecation path, and tags built on it age by the day.
Version 3.0 also introduces the Content Purpose vector, covering news, opinions, op eds and reviews. The vector answers a different question than the topic tree: not what the content is about, but what it is for. A straight news report and an opinion column on the same story can share a topic category while carrying different purpose codes, so a buyer can treat the two adjacencies differently without giving up either. For a publisher running a newsroom, an opinion desk and a reviews team, purpose tagging converts one blended category into three distinct products.
Treat the migration as a reclassification project rather than a find and replace. An expansion of this size means old codes no longer cover the same ground, so inventory every template and content type, map old codes to new ones, then declare the new version in the bid stream so no buyer has to guess.

The transport layer: how OpenRTB 2.6 carries classification
Classification only pays when it reaches the bidder, and OpenRTB 2.6 defines exactly how it travels. Three fields on the site object carry it: site.cat describes the site, site.sectioncat describes the current section, and site.pagecat describes the current page. The cattax field tells the buyer which taxonomy those codes come from. The OpenRTB 2.6 specification is blunt about the failure mode: if the request carries no cattax field, bidders assume IAB Content Taxonomy 1.0. Send 3.0 codes without cattax and every buyer decodes them against the wrong taxonomy, which silently corrupts both targeting and exclusions.
The same taxonomy runs the other direction through bcat, which blocks advertiser categories using the specified taxonomy. One bcat list excludes an entire vertical of advertisers without maintaining domain blocklists, and buyers read that list against the taxonomy the request declares. Targeting and blocking are two uses of one shared language: your content categories let buyers in, your bcat declarations keep verticals out, and cattax governs the meaning of both.
Granularity decides auction eligibility. A buyer targeting a narrow node qualifies your impression only when your deepest field matches that node, so site-level cat alone earns the coarsest matches while page-level pagecat earns the fullest. Run the mechanism on a review site: the masthead sets cat to its root category, each channel sets sectioncat, each review page sets pagecat to the review topic, and the page's status as a review rides the Content Purpose vector rather than the topic tree. A buyer targeting reviews, with an exclusion on opinion formats, can now buy that page confidently and skip the op ed next door.
Sections classified at page level enter more auctions on the same impressions, because the bid request answers the questions the buyer was about to ask anyway. The deeper fields also feed verification, which is where the money actually moves.
Populating the fields: Ad Manager and Prebid
Google Ad Manager populates standard OpenRTB contextual categories in the bid requests it sends to Authorized Buyers, Open Bidders and SDK Bidders, through site.cat, site.pagecat, app.cat and app.pagecat. Sharing those signals sits under publisher control, so the first audit is your own Ad Manager configuration. The second audit matters more: Google does not share the signals for traffic from the EEA, the UK or Switzerland. A publisher whose audience concentrates in those three regions gets nothing from automated population in exactly the markets where classification earns the most. Google documents how Ad Manager populates contextual categories end to end, controls and regional restrictions included, and the sharing settings deserve a deliberate decision rather than a default.
App inventory follows the same pattern through app.cat and app.pagecat, so classify both sides of the supply. A publisher who classifies only the web leaves app impressions unclassified on some of the fastest growing formats.
Prebid closes the regional gap, because publisher-provided first-party data can set the same fields: cat, sectioncat and pagecat on the site object. The documented pattern is compact: a site sets cat to IAB2 and sectioncat and pagecat to IAB2-2, with the deepest field describing the most specific slice of inventory. Publisher-provided first-party data generally takes precedence for all fields, which makes Prebid the override lever. Where Ad Manager withholds categories for EEA, UK or Swiss traffic, first-party data injects them anyway, and where an automated classifier misreads a section, first-party data corrects the record before buyers see it.

What buyers do with your categories
Content categories drive three actions on the buy side. Traders target: a line item buys a node or a subtree, and your impressions qualify when your deepest field matches. Traders exclude: brand safety policies translate into blocked categories, and a mismatch between your declared cat and the buyer's own page scan suppresses the bid. Traders package: agencies assemble contextual deals around verified categories and transact them as curated supply, and a publisher whose bid requests tell the truth page by page lands inside those packages.
Assume verification on every impression. Pre-bid classification scans the page before the auction, and the result competes with your declared categories. When they agree, the buyer bids with confidence. When they disagree, the buyer suppresses or reprices, and repeated disagreement across a domain pushes that domain toward exclusion lists. Accurate page-level classification is therefore a verification input first and a targeting input second, because verification failures cost more than targeting misses.
Agencies advising publishers should treat category coverage as an audit line item, next to viewability and inventory quality. The questions are concrete: which taxonomy version, which fields at which depth, what covers EEA, UK and Swiss traffic, and where purpose tagging stands. A publisher who answers those four questions with specifics is a publisher whose contextual inventory an agency can actually sell.
The classification workflow, step by step
For a site above one million monthly pageviews, classification is a pipeline with an owner, not a one-off tag cleanup. Six decisions carry most of the weight.
- Pin the version and declare cattax. Choose 3.0, declare it on every request, and audit that your wrapper or SSP actually sends the field on all traffic.
- Classify at three depths. Site-level cat for the masthead, sectioncat for channels, pagecat for articles. News publishers need pagecat, because a crash report and a destination review can sit in the same section.
- Pick the classifier deliberately. Editorial tagging at publish time gives the highest accuracy at the highest cost; automated classifiers scale and drift; Ad Manager population covers connected demand but skips EEA, UK and Swiss traffic. Combine them: an automated first pass, editorial review on the top revenue templates.
- Add purpose tagging. Tag news, opinion, op ed and review formats with the Content Purpose vector so buyers can price adjacency by type, not only by topic.
- Run a monthly QA loop. Sample URLs, compare declared categories against the actual page, and fix drift before buyers log it in verification reports.
- Watch the money. Compare bid density and cleared CPMs between classified and unclassified sections after a full 30-day cycle, then let the delta fund the next pass.
Four failure modes show up repeatedly, and each one costs real money:
- Version mixing. Header bidding sends 2.x codes while the ad server sends its own set, so two demand paths describe one page in two languages. Fix: one taxonomy, declared through cattax everywhere.
- Section-level complacency. Tagging stops at sectioncat, so the buyer sees one coarse label for both a match report and a betting scandal investigation, and brand-sensitive buyers exclude both.
- Category inflation. Tagging ordinary pages with premium categories to attract bids. Verification catches it, and the whole domain pays for the mismatch.
- Redesign drift. A CMS migration or template change drops the tagging field silently, and revenue falls without an obvious cause. Fix: monitor field coverage with the same alerting you apply to ad slots.
None of this requires new headcount so much as a new habit. Category fields deserve the same release discipline as ad unit sizes, and the same rollback plan when a template change breaks them.
Where curation sits
This is where we plug in. At OnlyMedia we run an ad network, an SSP and an agency in one company, and a curation layer sits in front of our auctions: managed floors, demand mapping, whitelists, pre-bid brand safety filtering and MFA filtering aligned with the IAB Content Taxonomy. The filtering matters as much as the floors, because pre-bid screening on every impression is what converts a declared category into a verified one, and verified categories are what buyers pay for.
We integrate OpenRTB 2.6 seats and Prebid for header and server-side demand, so the fields this article describes are fields we set, read and correct daily. We work with thousands of publishers, each above one million monthly pageviews, and we pay Net 30, CPM based, with no chasing and no sliding terms, through our curated programmatic demand network.
Classification raises what buyers bid, and the floor decides what you keep. Managed floors only work when the whole team understands the auction mechanics underneath, from expected-value ranking to first-price with bid shading to reserve prices, and we set floors with the demand mix in view, never in isolation. The buy side runs through us as well: agencies buying our inventory pair demand side reach and verified audiences with curated supply paths across our OpenRTB 2.6 seats. A contextual deal only holds its price when the categories behind it survive screening, which is why the curation layer and the taxonomy work are one project, not two.
A migration you can schedule
For an ad operations team, the taxonomy migration and the monetization case compress into one sequence. Confirm what your stack sends today by pulling a sample of your own bid requests and checking cat, sectioncat, pagecat and cattax. Set the 3.0 migration date and freeze new work on 2.x tags. Map sections and top templates to 3.0 nodes, page level first. Add Content Purpose codes for news, opinion, op ed and review desks. Fill the EEA, UK and Switzerland gap with Prebid first-party data, because Ad Manager will not populate those requests for you. Then re-run floors once classification stabilizes, since bid density shifts when buyers can finally see what they are buying.
Contextual targeting returned for a structural reason: it is the one signal in the bid stream that describes the page truthfully at impression time and that both sides can audit. The taxonomy grew from roughly 400 categories to more than 1,500 because buyers asked for finer keys, and OpenRTB 2.6 carries those keys on fields that have existed in your stack all along. Publishers who declare them, with cattax set and page-level depth in place, will take the contextual budgets now forming. Everyone else keeps sending Content Taxonomy 1.0 by accident.