Lesson 6 of 7 · 8 min read · intermediate
Supply path optimization (SPO)
Why the same impression reaches buyers through many paths, how SPO picks the best ones, and how ads.txt, sellers.json and schain make it possible.
Imagine a DSP receives ten bid requests in the same instant. They all describe the same ad slot on the same Brazilian news site, shown to the same reader. They just arrived through ten different SSPs and resellers. Which one should it bid on? Bidding on all of them is wasteful and drives up prices against yourself. Choosing well is called supply path optimization, or SPO.
SPO is like buying a concert ticket. You could buy from the official box office, from an authorised partner or from a chain of resellers, each adding a markup. It is the same seat; the only question is how many hands you want your money to pass through, and whether the ticket is even real.
Why there are so many paths
Header bidding lets a publisher work with many SSPs at once, and SSPs sometimes pass inventory on to other exchanges. Some companies act as a reseller, selling inventory they do not own on the publisher's behalf. Each path creates another copy of the same opportunity, a problem known as bid duplication. Some paths also carry more fees, slower timeouts or, at worst, fake supply.
ads.txt, sellers.json & schain
news.example posts a public file, ads.txt, listing every company allowed to sell its ads and the account ID it uses, marked DIRECT or RESELLER.
- The publisher declares its sellers: news.example posts a public file, ads.txt, listing every company allowed to sell its ads and the account ID it uses, marked DIRECT or RESELLER.
- A bid request arrives: The DSP receives a request “for news.example”, sent by SSP account 1234, with a SupplyChain object listing every hop it passed through.
- Check 1: is this seller authorised?: The buyer checks news.example/ads.txt: is SSP account 1234 listed? If not, the request is unauthorised and is not bought.
- Check 2: who is account 1234?: The SSP’s sellers.json names the business behind 1234 and whether it is the publisher itself or an intermediary. Hidden sellers are a warning sign.
- A spoofer tries the same trick: A fraudster sends requests claiming to be news.example from its own junk site. This is domain spoofing. Its seller ID is not in news.example’s ads.txt.
- Only verified paths get bought: Requests whose seller, ads.txt entry and schain all line up get bought; the spoofed ones fail. Simple public files closed one of the biggest fraud loopholes of the 2010s.
The three transparency tools
SPO is only possible because the IAB Tech Lab created standards that let a buyer check who is selling what.
| Standard | Published by | Answers the question |
|---|---|---|
| ads.txt (2017) and app-ads.txt | The publisher, on its own domain or developer site | Which sellers are authorised to sell my inventory, and are they DIRECT or RESELLER? |
| sellers.json (2019) | Each SSP or exchange | Who are the sellers in my system, and are they publishers or intermediaries? |
| SupplyChain object (schain, 2019) | Carried in each bid request | Which companies has this specific request passed through? |
A careful buyer checks that every company listed in the schain appears in the SSP's sellers.json, and that the SSP and seller account appear in the publisher's ads.txt. If the chain is broken, incomplete or points to a seller the publisher never authorised, it is a red flag for spoofing or arbitrage.
How SPO is done
- Map pathsFor each publisher, list every SSP and reseller route by which its inventory arrives.
- VerifyDrop paths that fail ads.txt, sellers.json or schain checks, and prefer a direct seller path.
- ScoreCompare remaining paths on fees, win rate, viewability, invalid traffic rate and latency.
- ConsolidateBid mainly through the best one or two paths per publisher; reduce or stop the rest.
- Re-testPaths change, so re-run the analysis regularly.
Large DSPs and agency groups run SPO programmes and choose preferred SSP partners. The Trade Desk went further with OpenPath, a direct connection to publishers that skips SSPs for some inventory, and in 2025 acquired the supply-quality data company Sincera, launching OpenSincera to publish metadata about supply paths. SSPs responded with their own direct-to-buyer tools. On the sell side, publishers do the mirror image, called demand path optimization: trimming SSP partners that add little unique demand.
Why it matters for fraud and waste
Long, unverified paths are where fraud hides. A fraudster can declare a fake site to be a famous one, sell it through a lenient reseller, and rely on buyers not checking. Traffic arbitrage operators buy cheap traffic and resell it as ad impressions, and made-for-advertising sites exist mostly to harvest programmatic spend. Shortening and verifying paths cuts off much of this.
The ANA's 2023 study, based on log-level data from 21 advertisers, found spend spread across a vast number of websites, much of it on low-quality and made-for-advertising inventory, and recommended that advertisers cut sites and supply paths aggressively.
Key takeaways
- The same impression often reaches buyers through many SSP and reseller paths, causing bid duplication.
- SPO means choosing the cleanest, cheapest, best-performing paths and cutting the rest.
- ads.txt, sellers.json and the schain object let buyers verify who is authorised to sell and who touched the request.
- Publishers do the mirror image, demand path optimization, by trimming low-value SSPs.
- Short, verified paths reduce fees, arbitrage and fraud, but over-cutting can hurt small publishers.
Questions people ask
What is supply path optimization in programmatic?
Supply path optimization, or SPO, is the process buyers use to choose the best routes to a publisher's inventory. Because the same impression can arrive through many SSPs and resellers, a DSP or agency maps these paths, removes unauthorised or duplicated ones, compares fees and quality, and focuses spend on the few paths that deliver the most real value.
What is the difference between ads.txt and sellers.json?
ads.txt is a file a publisher posts on its own website listing which ad systems and account IDs are authorised to sell its inventory, marked DIRECT or RESELLER. sellers.json is a file each SSP or exchange publishes listing the sellers in its platform and whether they are publishers or intermediaries. Buyers cross-check both, along with the schain in bid requests.
What is the SupplyChain object (schain)?
The SupplyChain object is a field in the OpenRTB bid request that lists every company that handled the request on its way from publisher to buyer, with each seller's ID. Buyers match these entries against sellers.json and ads.txt to confirm the path is complete and authorised. An incomplete or mismatched schain is a common warning sign of arbitrage or spoofing.