Ad tech stocks
TEAD0.59▲ +16.13%CDLX2.69▼ -8.33%PSKY9.54▼ -7.70%186013.51▲ +7.48%U43.30▲ +5.78%APPS11.60▲ +4.50%APP278.01▼ -4.28%STGW8.45▲ +3.81%RDDT147.51▲ +3.56%ZETA32.45▲ +2.79%OMC75.62▲ +2.70%MNTN10.43▲ +2.56%TRU62.66▲ +2.51%SFOR44.85▼ -2.50%CCO2.41▲ +2.50%LFTO15.42▼ -2.41%CART43.95▲ +1.92%PUBM19.09▲ +1.92%WPP382.90▲ +1.81%INUV0.57▲ +1.79%NFLX68.36▼ -1.76%DSP12.52▲ +1.71%ILLM0.66▲ +1.54%GOOGL338.81▼ -1.53%SAX35.96▲ +1.41%SCOR4.75▲ +1.39%SIRI25.54▼ -1.31%035420191200.00▼ -1.29%4755681.70▼ -1.26%SPOT493.33▲ +1.22%AZRN0.82▼ -1.20%AAPL329.05▼ -1.19%IHRT2.13▲ +1.19%MGNI25.54▲ +1.09%ROKU150.66▼ -1.06%BIDU85.99▼ -1.01%PUB95.34▲ +0.87%SNAP5.45▲ +0.83%IBTA39.73▲ +0.82%SST2.64▲ +0.76%SNOW341.49▲ +0.57%47511238.50▲ +0.57%HAVAS17.55▼ -0.57%TBLA3.35▼ -0.45%RAMP37.69▲ +0.44%META728.04▲ +0.39%24331308.00▲ +0.38%TTD12.21▲ +0.29%OUT27.68▼ -0.25%0700431.00▼ -0.23%PINS18.93▲ +0.19%NEXN9.02▲ +0.17%DEC24.68▲ +0.16%PERI8.68▼ -0.12%CRTO15.21▲ +0.07%CPNG13.88▲ +0.04%DV13.48▼ -0.04%43243564.00▲ +0.03%WBD30.94▼ -0.02%BABA107.54▲ 0.00%VER12.08▲ 0.00%
Ticker byClearTrust

Lesson 2 of 4 · 9 min read · advanced

This lesson counts towards the ClearTrust Programmatic Advertising certificate. Enrol with your email to record your progress and scores.Get certified, free

ads.txt, sellers.json, schain and ads.cert in depth

Four IAB Tech Lab standards that let buyers check who is really selling an ad: how ads.txt, app-ads.txt, sellers.json, schain and ads.cert work together.

Programmatic ads are sold by machines to machines in milliseconds. That makes it easy for a fraudster to claim “I am selling ads on a famous news site” when the traffic really comes from a junk site or a bot farm. The fix the industry built is a set of public files and data fields that let a buyer check every claim in the chain. None is perfect alone. Together, they make lying much harder.

Imagine buying a concert ticket from a stranger. ads.txt is the venue publishing a list of official ticket sellers. sellers.json is each ticket agency publishing who its sub-agents are. The schain is the chain of receipts showing every hand the ticket passed through. ads.cert is a tamper-proof seal proving the ticket details were not changed on the way.

ads.txt: the publisher’s list of authorised sellers

Launched by IAB Tech Lab in 2017, ads.txt is a plain text file a website places at its root, for example example-news.com/ads.txt. Each line names an ad system (such as an SSP’s domain), the publisher’s account ID in that system, whether the relationship is DIRECT or RESELLER, and optionally a TAG certification ID. A buyer receiving a bid request that claims to be from example-news.com can check whether the seller account in the request appears in that file. If not, the request is likely spoofed.

An illustrative ads.txt line: ssp-example.com, 12345, DIRECT, followed by an optional TAG ID.
FieldExampleMeaning
Ad system domainssp-example.comThe exchange or SSP authorised to sell
Seller account ID12345The publisher’s account inside that SSP
RelationshipDIRECT or RESELLERWhether the publisher controls the account (direct seller) or a third party resells (reseller)
Certification authority IDOptionalThe seller’s TAG ID, if it has one

app-ads.txt, released in 2019, does the same for mobile and CTV apps. Because an app has no website root, the file lives on the developer website listed in the app store. Buyers look up the app’s store listing, find the developer URL and fetch app-ads.txt from there.

sellers.json: the SSP’s list of who it pays

ads.txt tells you which accounts a publisher authorises, but not who owns those accounts. sellers.json, also from IAB Tech Lab in 2019, closes that gap. Each SSP or exchange publishes a file listing every seller account it pays, with the seller’s name, domain, and whether it is a PUBLISHER, INTERMEDIARY or BOTH. Buyers can now join the dots: account 12345 on ssp-example.com belongs to Example News Ltd, a publisher. Sellers can be marked confidential, which is allowed but reduces transparency.

schain: the receipt trail

The supplyChain object, or schain, is a field inside the OpenRTB bid request. Every company that handles the request adds a “node” describing itself: its ad system domain, the seller ID it uses, and whether the chain is complete. A buyer can then compare each node with the matching sellers.json entry and ads.txt line. A short, complete chain with known names is a good sign. A long chain, gaps, or unknown sellers are warning signs of traffic arbitrage or fraud.

ads.txt, sellers.json & schain

1/6
▤news.examplepublisher✓ads.txtwho may sell me⇄SSPseller ID 1234▦sellers.jsonwho 1234 is◎DSPthe buyer!Spooferclaims to be news.example★Verified pathbuy with confidence
1
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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.

ads.cert: signing the request

Files can be checked, but the bid request itself can still be altered in transit. ads.cert uses public-key cryptography so that companies can prove who sent a message. The current version, ads.cert 2.0, focuses on Authenticated Connections: each participant publishes a public key in its DNS records, and messages between partners carry a signature that the other side can verify. Adoption has been slower than for ads.txt, because it requires engineering work on both ends.

Putting it together

  1. Read the claimThe bid request says the impression is on example-news.com, sold through account 12345 at ssp-example.com.
  2. Check ads.txtDoes example-news.com/ads.txt list ssp-example.com with account 12345? If not, reject.
  3. Check sellers.jsonDoes ssp-example.com/sellers.json say account 12345 belongs to Example News as a PUBLISHER? If it names an unknown intermediary, look closer.
  4. Walk the schainIs every node in the chain known, and does the chain end at the publisher? Missing nodes are a red flag.
  5. Verify signatures where availableIf partners use ads.cert, confirm the request was signed by who it claims.

Supply-chain standards catch

  • Domain spoofing and app spoofing by unauthorised sellers
  • Hidden resellers and long, unnecessary chains
  • Seller accounts owned by unknown companies

They do not catch

  • Bots on a legitimate, authorised site
  • Low-quality or MFA content
  • Fraud by an authorised direct seller

There is a buyer-side counterpart too. buyers.json and related IAB Tech Lab work aim to let sellers see who is behind the demand, so publishers can block malicious buyers and malvertising. The principle is the same in both directions: when everyone publishes who they are, anonymous bad actors have fewer places to hide.

Key takeaways

  • ads.txt and app-ads.txt let publishers and app developers list the seller accounts they authorise.
  • sellers.json lets SSPs disclose who owns each seller account and whether it is a publisher or intermediary.
  • schain records every hop in a bid request; ads.cert adds cryptographic signatures to prove who sent it.
  • These standards stop impersonation and hidden resellers but do not detect bots on authorised inventory.

Questions people ask

What is the difference between ads.txt and sellers.json?

ads.txt is published by the publisher and lists which ad systems and account IDs are allowed to sell its inventory. sellers.json is published by the SSP or exchange and lists who owns each seller account it pays. Buyers use both together: ads.txt confirms the account is authorised, sellers.json confirms who is behind that account and whether it is a direct publisher or an intermediary.

What is a supply chain object (schain) in programmatic?

The SupplyChain object, or schain, is a field in an OpenRTB bid request that records every company that handled the ad opportunity on its way to the buyer. Each company adds a node with its domain and seller ID. Buyers check these nodes against sellers.json and ads.txt to spot unknown resellers, missing hops or suspiciously long chains that suggest arbitrage or fraud.

Does ads.txt stop ad fraud?

It stops one important kind: unauthorised sellers pretending to sell a known website’s inventory, called domain spoofing. It cannot tell whether the visitors on an authorised site are real people, so bot traffic, click farms and made-for-advertising sites can still pass. Buyers need ads.txt plus invalid traffic detection, quality measurement and careful supply path choices.

Previous: The standards bodies: who writes ad tech’s rulesNext: The Google ad tech case, explained