Building a First-Party Data Strategy with IAB Curated Audiences (Formerly Seller-Defined Audiences / SDA)
Passing audience attributes directly inside the OpenRTB 2.6 bidstream via user.data and site.content.data arrays eliminates the 40-to-80-millisecond

Passing audience attributes directly inside the OpenRTB 2.6 bidstream via user.data and site.content.data arrays eliminates the 40-to-80-millisecond client-side latency penalty of third-party cookie syncing while preserving high-margin cohort addressability on unauthenticated supply. Across Safari WebKit, Firefox, Apple iOS environments governed by AppTrackingTransparency (ATT), and Connected TV (CTV) households subject to dynamic carrier IP rotation, legacy deterministic identity graphs resolve on fewer than 35% of available ad requests. When a publisher relies exclusively on cross-site user identifiers or static Private Marketplace (PMP) Deal IDs to monetize audience intent, the remaining 65% of unauthenticated impressions fall into the open auction as unsegmented commodity supply, compressing clearing prices and eroding overall yield.
The engineering alternative to deterministic user tracking is standardized, bidstream-native cohort signaling. Instead of transmitting raw personal identifiers (such as hashed emails, IDFA, or third-party sync tokens) and waiting for a buy-side demand-side platform (DSP) to query an external data management platform (DMP), the sell-side classifies behavioral and contextual signals at the edge and attaches standardized taxonomy IDs directly to the OpenRTB bid request. This architecture shifts audience resolution from a brittle, cross-domain identity lookup to an inline protocol mechanic.
Executing this architecture at scale requires strict adherence to open industry schemas so that tier-1 DSPs can ingest, validate, and bid on sell-side cohorts programmatically without custom line-item trafficking. At Sky Boosts, we engineer our header bidding wrappers, server-side auctions, and Google Ad Manager (GAM) integrations to translate raw publisher telemetry into verified, brand-safe cohort signals across Web, Mobile App, and CTV environments.
Why IAB Tech Lab Renamed Seller-Defined Audiences (SDA) to Curated Audiences
In December 2024, IAB Tech Lab officially renamed Seller-Defined Audiences (SDA) to Curated Audiences, enabling publishers, DMPs, and curation partners to pass standardized cohort IDs via OpenRTB 2.6 user.data and site.content.data without relying on third-party cookies or manual Deal IDs. When the specification originally launched in 2022 under the "Seller-Defined Audiences" moniker, market adoption stalled due to a semantic misconception: media buyers and agency trading desks assumed the framework applied exclusively to individual publishers packaging their own isolated first-party analytics. In programmatic workflows where agencies curate supply across hundreds of domains and CTV apps simultaneously, an architecture perceived as single-publisher-only failed to align with multi-publisher media buying strategies.
The transition to Curated Audiences reflects the structural reality of modern supply path optimization (SPO) and sell-side curation. Under the updated positioning and underlying technical specification, any authorized participant on the sell side can assemble, classify, and inject audience and contextual segments into the OpenRTB payload. This includes individual enterprise publishers operating proprietary first-party data pipelines, contextual intelligence vendors analyzing page-level or video-frame semantics, and unified SSPs aggregating behavioral patterns across verified supply networks. Each entity declares its identity inside the Data object (data.name), specifies the taxonomy governing the segment (data.ext.segtax), and passes the corresponding cohort integers (data.segment[].id) downstream.
From an AdOps engineering perspective, the primary operational advantage of Curated Audiences is the elimination of Deal ID bloat. Historically, packaging a first-party audience required creating a dedicated PMP Deal ID in the SSP, synchronizing that exact alphanumeric string with a specific buyer seat inside a tier-1 DSP, and configuring custom targeting rules on both sides of the auction. Scaling that workflow across 50 audience segments and 15 DSPs required maintaining 750 individual Deal IDs, each subject to line-item pacing errors, floor price mismatches, and QPS throttling penalties.
Curated Audiences decouple audience signaling from transaction mechanics. Because the cohort taxonomy IDs travel natively inside the OpenRTB 2.6 bid request on both open exchange and private auction traffic, a DSP bidder can evaluate the presence of a standardized segment (such as IAB Audience Taxonomy ID 102 for Automotive Intenders) using its standard open-market bidding logic. Publishers pursuing enterprise audience monetization no longer need to wait for agency traders to set up bespoke PMP pipes before capturing CPM premiums on high-intent users. The cohort signal is self-describing, universally parseable, and immediately actionable across every participating DSP configured to read OpenRTB Data objects.
How Curated Audiences Operate Across Web, App, and CTV Without Cross-Site IDs
Constructing a resilient first-party data strategy requires recognizing how identity signals degrade across distinct runtime environments. On mobile and desktop web, Chromium privacy controls, Safari Intelligent Tracking Prevention (ITP), and Firefox Enhanced Tracking Protection (ETP) either block third-party cookies outright or cap client-side JavaScript storage lifetimes to seven days (and 24 hours when CNAME cloaking or known tracker parameters are detected). On iOS and tvOS, Apple's ATT framework restricts IDFA access to the minority of users who explicitly opt in, forcing mobile app monetization onto anonymous session contexts or coarse SKAdNetwork / AdAttributionKit postbacks. In CTV, household IPv4 and IPv6 addresses shift dynamically via ISP DHCP leases, while CTV operating systems (Roku OS, Samsung Tizen, LG webOS, and Amazon Fire TV) enforce strict sandboxing between installed channel applications.
Curated Audiences bypass these cross-site tracking bottlenecks by operating strictly within the first-party scope of the publisher or curation layer. No cross-domain user synchronization is required because the buyer is not purchasing an individual user profile; the buyer is bidding on an impression certified to belong to a specific behavioral or contextual cohort at the moment of the ad request.
+-----------------------------------------------------------------------+
| FIRST-PARTY TELEMETRY SOURCES |
| Web: 1P Cookie / LocalStorage, Scroll Depth, Dwell Time, DOM NLP |
| App: GMA / Prebid Mobile Session Events, In-App Category Graph |
| CTV: EPG Genre Metadata, Content Rating, SSAI Pod Watch Duration |
+-----------------------------------------------------------------------+
|
v
+-----------------------------------------------------------------------+
| EDGE COHORT CLASSIFICATION & TAXONOMY MAPPER |
| Maps behavioral/contextual events -> IAB Audience Taxonomy v1.1 |
| Attaches Data Label v1.2 provenance & recency metadata |
+-----------------------------------------------------------------------+
|
+--------------------------+--------------------------+
| |
v (User Behavioral Cohorts) v (Content / Contextual Cohorts)
+-----------------------------------+ +-----------------------------------+
| ortb2.user.data[] | | ortb2.site/app.content.data[] |
| name: "skyboosts.com" | | name: "skyboosts.com" |
| ext.segtax: 4 (IAB Aud Tax 1.1) | | ext.segtax: 6 (IAB Cont Tax 3.0) |
| segment: [{ id: "489" }] | | segment: [{ id: "150" }] |
+-----------------------------------+ +-----------------------------------+
| |
+--------------------------+--------------------------+
|
v
+-----------------------------------------------------------------------+
| PREBID.JS 11.x / PREBID SERVER (GO/JAVA) / GAM SECURE SIGNALS |
| Broadcasts standardized OpenRTB 2.6 bid requests to Tier-1 DSPs |
+-----------------------------------------------------------------------+
Across our unified monetization platform, this classification pipeline adapts to the specific technical primitives of each channel:
- Web Environments (Prebid.js 11.x and Server-Side Edge): A publisher tracks session depth, article category frequency, recirculation clicks, and on-page dwell time using a server-set, first-party HTTP cookie (
SameSite=Lax; Secure) paired withlocalStoragecaching. When a user reads three articles covering mortgage refinancing within a 14-day window, the publisher's edge worker assigns the session to the corresponding IAB Finance & Insurance cohort. Prebid.js 11.x reads these segment IDs synchronously from memory prior to auction initialization and injects them into the globalortb2configuration object, adding zero network latency to the header bidding auction timeout curve. - Mobile App Environments (Prebid Mobile SDK and Google Mobile Ads Next-Gen SDK): Inside iOS and Android applications, the app developer observes in-app navigation vectors, session frequency, and feature engagement without accessing IDFA or GAID. The Prebid Mobile SDK API (
Targeting.shared.addUserData()) or GMA SDK first-party data signals pass these in-memory cohort arrays directly to Prebid Server and Google Ad Manager (GAM 360 / AdX / Open Bidding). Even whenuser.ext.eidsis completely empty due to ATT opt-out, the bid request carries rich behavioral intent insideuser.data. - Connected TV and SSAI Environments (OpenRTB 2.6 and VAST 4.3): In CTV streaming, user-level behavioral tracking across unrelated apps is neither technically reliable nor privacy-compliant. Instead, Curated Audiences leverage rich Electronic Program Guide (EPG) metadata, content genre classifications, viewing duration, and daypart signals passed from the video player or Server-Side Ad Insertion (SSAI) stitcher. When the SSAI proxy constructs the outbound OpenRTB 2.6 bid request to our Prebid Server Go cluster, it populates
app.content.datawith IAB Content Taxonomy 3.0 nodes anduser.datawith household viewing cohorts derived from first-party app viewing history.
Mapping On-Site Behavioral and Contextual Cohorts to IAB Audience Taxonomy 1.1
To make first-party cohorts interoperable across dozens of independent DSPs, proprietary publisher segments must be normalized into a shared schema. If a financial news publisher labels an audience "High_Net_Worth_Investors_30d" and a lifestyle publisher labels a similar cohort "Active_Equities_Traders", no DSP algorithm can automatically bid across both segments without manual mapping. IAB Tech Lab standards solve this fragmentation by pairing Curated Audiences with the IAB Audience Taxonomy v1.1 and the Data Transparency Standard (Data Label v1.2, updated April 2024) to disclose cohort provenance and recency to buyers.
The IAB Audience Taxonomy v1.1 organizes human attributes into a hierarchical tree of unique integer IDs divided into three primary branches:
- Demographic Attributes: Age brackets, gender, household income tiers, education levels, marital status, and household composition (for example, ID
49for Education Level, ID77for Household Income tiers). - Interest Attributes: Ongoing behavioral affinities derived from recurring content consumption and engagement habits (for example, ID
489for Personal Finance, ID226for Automotive, ID652for Consumer Electronics). - Purchase Intent Attributes: High-velocity commercial signals indicating active in-market research or near-term transaction probability (identified via dedicated intent nodes or paired with recency/frequency thresholds in the Data Label).
When engineering a mapping pipeline, AdOps teams must enforce strict qualification thresholds to protect bid density and buyer conversion performance. If a publisher tags every casual pageview as an "In-Market Buyer," DSP bid shading algorithms quickly detect low post-click engagement or poor view-through attribution and discount bids originating from that publisher's data.name namespace.
| First-Party Signal Source | Qualification Logic (Edge Rule) | OpenRTB 2.6 Target Object | Taxonomy Standard (segtax) |
Mapped IAB Segment ID & Name |
|---|---|---|---|---|
| Web Article Consumption + Scroll Velocity | >= 3 sessions in 14 days on auto review pages; >= 65% scroll depth; >= 45s active dwell time | ortb2.user.data |
4 (IAB Audience Taxonomy 1.1) |
226 (Interest > Automotive) / 231 (SUVs & Crossovers) |
| Mobile App Utility Usage | >= 5 sessions in 7 days using mortgage / loan calculator views | ortb2.user.data |
4 (IAB Audience Taxonomy 1.1) |
489 (Interest > Personal Finance) / 502 (Home Financing) |
| Real-Time Page DOM / CTV EPG Metadata | Current article NLP classification or CTV stream genre tag matches Personal Investing | ortb2.site.content.data or ortb2.app.content.data |
6 (IAB Content Taxonomy 3.0) |
150 (Personal Finance > Personal Investing) |
| Registered Subscriber Profile | Verified first-party account registration indicating C-Suite / Executive job role | ortb2.user.data |
4 (IAB Audience Taxonomy 1.1) |
118 (Demographics > Employment > Executive / Senior Management) |
Maintaining clean separation between behavioral user cohorts (user.data) and real-time page or stream context (site.content.data or app.content.data) is critical for regulatory compliance and buyer trust. Under GDPR, ePrivacy, and US state privacy frameworks, populating user.data based on historical cross-session profiles requires valid user consent (verified via the IAB TCF v2.2 string or GPP payload) and must respect opt-out flags. Conversely, populating site.content.data using strictly stateless, real-time semantic analysis of the current URL or video stream operates independent of historical user profiling, guaranteeing baseline monetization even when consent for behavioral storage is withheld.
Furthermore, for brand demand partners, the quality of the underlying inventory is just as important as the taxonomy integer itself. At Sky Boosts, all Curated Audience segments are generated exclusively across 100% Google-friendly, mainstream brand-safe publishers verified by HUMAN and Pixalate pre-bid invalid traffic (IVT) filters, with zero exposure to restricted categories such as alcohol, gambling, adult content, or tobacco. This ensures that when a DSP targets a finance or automotive cohort across our exchange, the resulting impressions deliver genuine human attention in brand-safe editorial environments, supporting reliable Net-30 and Net-60 revenue cycles for our publishing partners without clawbacks.
Constructing the ortb2.user.data and ortb2.site.content.data Objects
In client-side web integrations using Prebid.js 11.x, first-party audience and contextual cohorts must be injected via the ortb2 global configuration object using pbjs.setConfig() or pbjs.mergeConfig() before pbjs.requestBids() executes. Relying on legacy adapter-specific custom key-values fragments your supply path, as modern Prebid adapters and Prebid Server endpoints expect standardized First-Party Data (FPD) paths that map 1:1 to the OpenRTB 2.6 specification.
The following production configuration demonstrates how to read pre-computed behavioral and contextual cohorts from first-party storage, structure the ortb2.user.data and ortb2.site.content.data arrays, and simultaneously pass encrypted or clear first-party audience signals to Google Ad Manager via GPT:
window.pbjs = window.pbjs || { que: [] };
window.googletag = window.googletag || { cmd: [] };
/**
* Resolves first-party behavioral and contextual cohorts computed by
* the publisher edge classifier and formats an OpenRTB 2.6 compliant payload.
*/
function buildCuratedAudienceOrtb2() {
return {
user: {
data: [
{
name: "skyboosts.com",
ext: {
segtax: 4, // IAB Tech Lab Audience Taxonomy v1.1
cids: ["sb-aud-auto-suv-30d", "sb-aud-fin-prime-14d"]
},
segment: [
{ id: "226" }, // Automotive
{ id: "231" }, // SUVs
{ id: "489" } // Personal Finance
]
}
]
},
site: {
content: {
data: [
{
name: "skyboosts.com",
ext: {
segtax: 6, // IAB Tech Lab Content Taxonomy v3.0
cids: ["sb-ctx-tier1-investing"]
},
segment: [
{ id: "150" }, // Personal Investing
{ id: "153" } // Stocks and Bonds
]
}
]
}
}
};
}
pbjs.que.push(function () {
const ortb2Payload = buildCuratedAudienceOrtb2();
// Merge standardized OpenRTB 2.6 first-party data into Prebid.js 11.x
pbjs.mergeConfig({
ortb2: ortb2Payload,
firstPartyData: {
uaHints: ["architecture", "model", "platform", "platformVersion"]
}
});
// Request bids across client-side adapters and Prebid Server S2S
pbjs.requestBids({
timeout: 1200,
bidsBackHandler: function () {
googletag.cmd.push(function () {
pbjs.setTargetingForGPTAsync();
googletag.pubads().refresh();
});
}
});
});
// Synchronize taxonomy segments with Google Ad Manager (GPT) for AdX & Open Bidding
googletag.cmd.push(function () {
const pubads = googletag.pubads();
pubads.setTargeting("iab_aud_tax", ["226", "231", "489"]);
pubads.setTargeting("iab_cnt_tax", ["150", "153"]);
});
Notice the inclusion of ext.cids (Cohort IDs) alongside ext.segtax and the segment array. While segment[].id carries the universal IAB taxonomy integer (such as "226"), ext.cids carries the unique identifier tying that specific segment calculation to its corresponding record in the IAB Tech Lab Data Transparency Registry.
Specifying segtax (Taxonomy ID) and Validating with Data Transparency Standard v1.2
For a tier-1 DSP to bid confidently on a user.data or site.content.data segment without fear of taxonomy collisions, two protocol elements must be present and valid: the taxonomy registry integer (segtax) and the provenance metadata defined by the Data Transparency Standard v1.2.
In the IAB Tech Lab OpenRTB enumeration list, segtax informs the receiving bidder which dictionary to use when decoding segment[].id strings:
segtax: 4designates IAB Tech Lab Audience Taxonomy v1.1 (used insideuser.datafor demographic, interest, and purchase intent cohorts).segtax: 6designates IAB Tech Lab Content Taxonomy v3.0 (used insidesite.content.dataorapp.content.datafor contextual classification, replacingsegtax: 2for Content Taxonomy 2.0 andsegtax: 5for 2.2).segtax: 7designates IAB Tech Lab Content Taxonomy v3.1 (adding expanded CTV genre and brand safety suitability modifiers).segtax: 500+is reserved for registered vendor-specific taxonomies when a curation partner passes proprietary segment extensions alongside standard IAB nodes.
However, knowing that a segment claims to represent "489" (Personal Finance) does not tell a buyer how that cohort was built. Was it derived from deterministic financial calculator usage within the past 48 hours, or was it inferred by a noisy lookalike model trained on 180-day-old data? To solve this information asymmetry, the Data Transparency Standard (Data Label v1.2, updated in April 2024) establishes a machine-readable schema for disclosing data provenance, methodology, population source, and recency.
When our Prebid Server Go cluster emits an outbound OpenRTB 2.6 bid request to participating DSPs, the server-side payload pairs the segtax and cids markers with explicit Data Transparency extensions (ds for data source and ists for issuance timestamp):
{
"id": "80ce30c53c16e0b309f81234",
"tmax": 250,
"imp": [
{
"id": "1",
"banner": { "w": 300, "h": 250 },
"bidfloor": 2.40,
"bidfloorcur": "USD"
}
],
"site": {
"domain": "publisher-example.com",
"content": {
"data": [
{
"name": "skyboosts.com",
"ext": {
"segtax": 6,
"cids": ["sb-ctx-tier1-investing"]
},
"segment": [
{
"id": "150",
"ext": {
"ds": "contextual_nlp_dom_v3",
"ists": 1738368000
}
}
]
}
]
}
},
"user": {
"data": [
{
"name": "skyboosts.com",
"ext": {
"segtax": 4,
"cids": ["sb-aud-fin-prime-14d"]
},
"segment": [
{
"id": "489",
"ext": {
"ds": "1p_behavioral_event_graph",
"ists": 1738364400
}
}
]
}
]
}
}
By referencing the cids token ("sb-aud-fin-prime-14d") against the synchronized Data Label v1.2 JSON manifest in the IAB Tech Lab Data Transparency repository, a DSP's ingestion engine can programmatically verify that the segment originates from deterministic first-party behavioral events ("1p_behavioral_event_graph"), enforces a maximum 14-day lookback window, and is refreshed daily. Furthermore, the inline ists Unix epoch timestamp confirms the exact second the cohort classification was issued for the current user session, preventing stale cached segments from polluting real-time bidding models.
For engineering and AdOps teams auditing their current monetization stack, the path forward is concrete: audit your Prebid.js 11.x, Prebid Mobile, and SSAI integrations to verify that ortb2.user.data and ortb2.site.content.data arrays are populated on 100% of eligible impressions; enforce strict segtax: 4 and segtax: 6 schema compliance; and register your cohort definitions using Data Label v1.2 metadata. Shifting first-party data activation from brittle third-party cookies and manual PMP Deal IDs to standardized OpenRTB 2.6 Curated Audiences immediately unlocks buyer budgets across unauthenticated Web, Mobile App, and CTV supply.