The SupplyChain object, usually written as schain, is a structure carried inside a programmatic bid request that lists, in order, every company being paid as an impression travels from the publisher to the buyer. Each entry names an advertising system by its domain and a seller account inside that system. A demand-side platform reading it can tell whether it is buying one hop from the site owner or five through resellers, and price accordingly. The object exists because ads.txt, the file publishers host to declare authorised sellers, establishes who may sell inventory but not who handled the request on its way to the bidder.
OpenRTB, the real-time bidding protocol maintained by IAB Tech Lab, the standards body of the Interactive Advertising Bureau, carries the object, which began life as an extension to it.
Nodes, fields and the complete flag
The object has three required attributes. The nodes array holds the chain. The ver attribute carries the specification version in major.minor form, which has been "1.0" since publication. The complete attribute is a flag, 1 or 0, declaring whether the chain runs back to the owner of the site, app or other medium. An optional ext attribute holds system-specific extensions.
Each node describes one entity. Two fields are mandatory: asi, the canonical domain of the advertising system a bidder connects to, and sid, the seller or reseller account identifier within that system, capped at 64 characters and usually the value carried in publisher.id. A third required field, hp, indicates whether the node sits in the flow of payment. Version 1.0 requires it to be 1 in every case, and says it exists so later versions can describe entities that touch a transaction without being paid for it.
Three fields are optional. The rid field carries the request identifier issued by that seller. The name and domain fields identify the legal entity paid under the seller ID, and the specification instructs implementers to omit both when the information already appears in the advertising system's sellers.json file, the public directory each exchange hosts listing the sellers it represents. Domains must be canonical roots derived from the Public Suffix List: example.co.uk is valid, a full URL is not.
Seller identifiers carry a one-to-one rule: an ID may not stand for more than one entity, though one entity may hold several. Order matters as much as content. In a complete chain the first node is the originating system and the last is whichever party is sending the request.
Placement has moved with the protocol. The specification puts the object at source.schain in OpenRTB 2.6 and later, at source.ext.schain in 2.5, and at ext.schain in 2.4 or earlier. For traffic that never touches OpenRTB, such as a VAST video URL or a display tag, it defines a serialised string carried in a parameter named schain, nodes separated by exclamation marks and properties by commas in the order asi, sid, hp, rid, name, domain, ext. A single-node chain with optional fields empty serialises to 1.0,1!exchange1.com,1234,1,,, and systems are advised to expose a macro, suggested as $SCHAIN, that emits the string with their own node appended.
How a chain gets assembled
Construction rules are strict. A seller originating a request creates the object with itself as the only node and complete set to 1. A reseller receiving a request that already carries an object copies it, preserves the existing complete value and appends its own node. Inventory that arrived without one gets a fresh object marked incomplete with a 0. Copying a chain forward without adding a node is invalid, and a reseller that will not insert itself is told to send no object at all.
Only payment counts. According to Microsoft's documentation for Prebid Server Premium, no appnexus node is appended when requests leave the service for external demand partners, because the product charges publishers a fee without paying upstream sellers. In header bidding the burden falls on whoever handles the money. Prebid's schain module exists because the specification forbids supply-side platforms from inserting upstream intermediaries on someone else's behalf, so a wrapper operator that pays publishers must declare itself. Since Prebid.js version 10 the data is treated as first-party data at ortb2.source.schain.
Google constructs objects automatically and its Authorized Buyers documentation sets out the shapes. A publisher selling directly through Ad Manager, AdMob or AdSense generates a single google.com node carrying the seller ID published in Google's sellers.json. Open Bidding produces two. Under Multiple Customer Management the parent and child each get a node and the chain is marked complete, which requires the parent to have supplied the child's seller ID.
Buyers check the object in two stages. Validation confirms the structure parses and carries the required fields. Verification is harder: each node is cross-referenced against sellers.json and ads.txt, so one typo across three separately maintained sources can fail an honest chain.
Origin and evolution
Payment-chain signalling predates the specification. OpenRTB 2.5, published in December 2016, carried a pchain field for the Trustworthy Accountability Group's payment ID chain, but the format was open only to TAG members and adoption stayed thin. Ads.txt followed in 2017 against domain spoofing, and worked well enough to expose what it left uncovered.
IAB Tech Lab released the SupplyChain object alongside sellers.json for public comment on April 11, 2019, with feedback accepted until May 10 and the pair finalised that July. According to MarTech, Dennis Buchheim, then senior vice president and general manager of IAB Tech Lab, said the two standards gave "essential visibility into the supply chain, enabling buyers to curate media sources."
Adoption followed the file rather than the object. Google committed to sellers.json in Ad Manager in 2020, pushing its deadline to June 8 that year, and extended the settings to AdSense and AdMob in March 2022. Index Exchange implemented both standards early, and the file's mechanics were simple enough that buyers cached directories offline rather than reading names from the bid stream. OpenRTB 2.6, released in April 2022, promoted the object out of the extension namespace into source.schain.
Why the object matters commercially
Chain length is now a budget variable. IAB Spain's first supply-side platform guide, published in April 2026, found that 41% of programmatic spend reaches genuine measurable inventory, with direct connections delivering 70% to 80% of an advertiser's money to publishers against 40% to 50% through indirect routes. The Association of National Advertisers study released by TAG in December 2023 put 36% of post-transaction budget against valid, viewable, measurable, non-made-for-advertising impressions.
Buyers act on the object through seller identifiers. Display and Video 360 opened its Seller ID blocklist to all users in April 2025 at 1.5% of media cost, filtering by exchange and seller rather than by domain. The Trade Desk built OpenAds on the same argument about intermediated routes in October 2025. What the chain cannot settle is content quality: authorisation is not editorial legitimacy, and a counterfeit news network can transact through authorised sellers.
Where the object falls short
Coverage and accuracy are both contested. HUMAN Security published a diagnostic on November 1, 2023, drawn from bid requests it protected in late October that year: 79% carried an object, 94% on web against 62% on app and connected television, while 98% of the objects present declared themselves complete and only 42% passed full validation. External consistency, meaning agreement between the chain and published sellers.json data, was weakest at 50%. Those are vendor figures from one detection network, and the company reads most failures as implementation errors rather than fraud.
Design criticisms are separate. Prebid's reference wiki notes that seller domains are optional and that request identifiers are issued per node rather than per originating opportunity, so organisational identity varies by path. Nothing in the object discloses what any node charges. The IAB Tech Lab Deals API released for public comment on December 5, 2025addresses part of that gap outside the bid stream, with a curation object naming the curator domain and encoding fee type as a percentage, flat fee or CPM. Sellers.json also permits a confidential flag that withholds a seller's identity, and the complete flag is self-asserted, which is why buyers treat incomplete chains as risk signals rather than facts.
Buy-side symmetry never arrived. Buyers.json and the DemandChain object still need synchronised adoption across intermediaries to produce anything readable, though IAB UK's Gold Standard now lists DemandChain among its requirements. A sharper challenge came in April 2026, when Brian O'Kelley proposed adagents.json as a publisher-declared authorisation model, arguing that "the future of supply-chain transparency is not a slightly longer text file."
Adjacent terms
Ads.txt is a publisher-hosted list of authorised sellers, static and checked before a bid. Sellers.json is the exchange-hosted mirror naming the accounts behind those seller IDs. The object is the only one of the three describing a specific auction, and it is meaningless without the other two to check against. Supply path optimisation is the buying discipline that consumes the object rather than a standard. The DemandChain object applies the same node structure to the buy side.
Recent developments
Measurement has improved. IAB Europe examined 2,054 European news publishers and reported 72.64% hosting ads.txton August 7, 2025, with 99.83% of lines valid and roughly 79% matched to sellers.json entries, though collection of the sellers.json files themselves succeeded in about 61% of attempts. IAB Tech Lab raised its Supply Chain API crawl frequency from three to five days a week and added Samsung, Vizio and LG to the app-ads.txt aggregator.
Curation is the live pressure point. Since the curation framework gained platform adoption through 2024 and 2025, more inventory reaches buyers through packaging layers whose fees the chain does not describe. IAB Tech Lab's Programmatic Auction Definitions, published for comment on January 29, 2026, place supply chain authorisation among the first checks a selling platform performs.
Timeline
- December 2016: OpenRTB 2.5 ships with the pchain field for the TAG payment ID chain
- 2017: IAB Tech Lab publishes ads.txt against domain spoofing and unauthorised reselling
- April 11, 2019: sellers.json and the OpenRTB SupplyChain object released for public comment
- May 10, 2019: the 30-day comment period closes
- July 2019: both specifications finalised at version 1.0
- June 8, 2020: Google Ad Manager sellers.json deadline, extended from an earlier date
- March 2022: Google adds sellers.json settings to AdSense and AdMob
- April 2022: OpenRTB 2.6 moves the object to source.schain
- November 1, 2023: HUMAN Security publishes schain adoption and validation measurements
- December 2023: TAG releases the final ANA programmatic supply chain transparency findings
- April 2024: IAB Tech Lab raises Supply Chain API crawl frequency to five days a week
- April 2025: Display and Video 360 opens its Seller ID blocklist to all users at a 1.5% fee
- August 7, 2025: IAB Europe publishes its European transparency standards study
- December 5, 2025: IAB Tech Lab releases the Deals API for public comment
- January 29, 2026: Programmatic Auction Definitions published for comment
- April 2026: adagents.json proposed as a publisher-declared authorisation model
Related PPC Land coverage
- Index Exchange adopts sellers.json and SupplyChain - An early exchange implementation, describing how each party touching a request adds a node.
- What is sellers.json? - The companion file that lets buyers resolve the seller IDs carried in each node.
- Google to support sellers.json in Google Ad Manager - Google's transparency settings and the June 8, 2020 deadline.
- Google starts supporting sellers.json in AdSense and in AdMob - Extension of seller disclosure to small web and app publishers.
- DV360 introduces seller ID blocklist with additional fee - Seller-level supply path control priced at 1.5% of media cost.
- European publishers show 73% adoption of supply chain transparency standards - IAB Europe's measurement of ads.txt validity and sellers.json matching.
- IAB Spain's first SSP guide exposes the 41% working media problem - Working media shares for direct and intermediated routes.
- ANA programmatic media study reveals transparency challenges in digital advertising - The log-level finding that 36% of post-transaction budget reaches quality impressions.
- ads.txt is ten years old. adagents.json wants to replace it - A publisher-declared alternative to flat seller lists.
- IAB Tech Lab releases Deals API to streamline programmatic transactions - Curator identity and fee type described outside the bid stream.
- IAB Tech Lab enhances Supply Chain API for increased transparency and ad fraud prevention - Crawl frequency raised to five days a week.
- IAB Tech Lab expands CTV app store support in app-ads.txt aggregator - Samsung, Vizio and LG added to the connected television aggregator.
- IAB Tech Lab defines digital auction mechanics for ad buyers - Where supply chain validation sits in the standardised auction sequence.
- Industry adopts programmatic curation standards after IAB framework gains traction - The packaging layer whose fees the chain does not describe.
- Trade Desk launches OpenAds to counter supply chain manipulation - A buyer-side response to intermediated routes.
- Explaining buyer - buyers.json, the DemandChain object and the uneven state of buy-side disclosure.
- OpenX says 100% of its supply meets IAB UK Gold Standard rules - Certification requirements built on the same transparency files.
- Explaining pink slime - What supply chain authorisation establishes, and what it does not.
Summary
Who: IAB Tech Lab authored the specification with contributions from exchanges and mobile platforms including InMobi; supply-side platforms, header bidding wrappers and resellers populate it, and demand-side platforms consume it.
What: An ordered list of nodes inside an OpenRTB bid request, each naming an advertising system domain and a seller account paid for the inventory, plus a flag declaring whether the chain reaches the medium's owner.
When: Released for public comment on April 11, 2019, finalised in July 2019 at version 1.0, and moved into the source object with OpenRTB 2.6 in April 2022.
Where: In the source.schain attribute of the bid request, in source.ext.schain under OpenRTB 2.5, or in a serialised schain parameter on tag and VAST requests.
Why: Ads.txt authorises sellers and sellers.json names them, but neither shows the route a specific impression took. The object closes that gap, letting buyers count intermediaries, reject unauthorised paths and shorten the distance between a budget and a publisher.
Discussion