9 years of ads.txt and still no confidence it’s correct

9 years of ads.txt and still no confidence it’s correct

BY HAZEL BROADLEY, BEELER.TECH


This conversation is for our exclusive publisher–only community. Please ask in the community for the password to watch this video. You can also become a member of our community here.

When ads.txt arrived in 2017, publishers were handed a file format and told to get on with it. Sellers.json followed in 2019, SChain shortly after. Nine years on, very few publishers can say with any confidence that their setup is correct.

James Strang of JS.Consulting opened our latest Camp.Fire by acknowledging this, and he has implemented sellers.json for five separate companies from day one. Part of the problem is that the same SSP will give you different answers about how its own lines should be handled, depending on who you happen to ask.

Using live publisher files, James walked us through how the three standards depend on one another, what is quietly broken across those files today, the crawlability blind spot almost nobody is checking, and why the direct and reseller labels may not mean what publishers assume they mean.


The transparency triangle

James frames the three standards as a triangle, split between public and private declarations.

Ads.txt is the publisher’s public declaration, sitting at publisher.com/ads.txt. Sellers.json is the seller’s public declaration, covering any SSP, network or intermediary passing inventory on. SChain is the third side, travelling inside the OpenRTB bid request rather than sitting somewhere anyone can analyze it. On a direct connection, the SSP builds the SChain on the publisher’s behalf.

Because publishers rarely touch SChain themselves, it is the side that gets ignored. It is also the one doing the work, linking publisher IDs to seller IDs so the other two files can be reconciled at all.

🔎 Get the latest: Subscribe to The Traffic Report, our weekly newsletter

The practical consequence is that sellers.json is not somebody else’s problem. It is how your partners describe you to the market. They may be declaring you an intermediary. They may be listing one of your site names rather than your corporate entity, or a company name you retired three acquisitions ago. Buyers see the SChain and check it against crawler data, either their own or a licensed service.

What is actually broken

Importing a household-name reference publisher into Hologram, James’s new management tool, surfaced a representative spread of problems in minutes.

A Google seat declared in ads.txt that does not appear in Google’s sellers.json, so it is almost certainly dead. A line marked reseller that Sharethrough lists as publisher. A line marked direct that Index Exchange lists as an intermediary. Seats with no sellers.json behind them at all, making them unverifiable by anyone. A partner file broken for months and still not fixed. Duplicate records nobody had spotted.

🔎 Read more: Publishers, chasing revenue at all costs is, well, costing you

This was not a neglected long-tail site. It was a large publisher with a real adops team, and none of these are errors you would find by opening the file and reading it.

A second check compared what a publisher expects to be live against what actually is. Across one group of sister domains, it returned 22 missing lines and 118 unexpected ones. Worth knowing while cleaning up: some buyers use file length as a quality proxy and filter out sites carrying more than 1,000 lines.

The blind spot

The check that drew the strongest reaction on the call was crawlability.

As publishers tighten defenses against AI scrapers, many are also blocking the crawlers whose entire purpose is to read ads.txt and robots.txt. James simulated a range of bots, including Amazon Ads, DoubleVerify and Google Display, against two very large weather properties. Both failed outright, returning a 403 consistent with a firewall serving a human-verification challenge to something correctly identified as not human.

Open the same file in a browser as an ad ops person and it loads perfectly. That is exactly why it goes unnoticed. And the consequence is not cosmetic: if a buyer cannot fetch your ads.txt, it cannot verify your SChain, and it cannot treat the request as confirmed.

🔎 Read more: Ad ops is where other people’s bad decisions become emergencies

One publisher on the call said this was the most compelling check of the three, for the simple reason that it is where they currently have the least visibility.

Labels nobody enforces

Everything in ads.txt is self-declared, and nothing enforces the direct and reseller distinction. What happens next is entirely down to buyers.

One major DSP has said publicly that it does not want to buy through resellers, so a publisher declaring reseller on a seat its SSP lists as publisher may be suppressing its own demand. What buyers do when the two sides disagree is far less clear. As James put it, third-party behavior moves around like the staircases in Harry Potter. One attendee made the useful point that it may not be binary at all, and that the label may simply shade the bid price.

He also described a practice he has seen often enough to name. SChain nulling happens when a reseller passes a request to an SSP that separately holds a direct seat with the same publisher. The SSP erases the SChain it received and substitutes one showing its own direct connection, so the impression reaches the next party downstream looking like direct inventory.

There is a commercial logic to it. A reseller taking an extra cut can feed part of that back to the buyer, making the path more profitable to buy even though the publisher ends up with less.

What that leaves publishers

Nine years after the industry was handed ads.txt, the three sides of the triangle still do not reconcile themselves. Partner files go stale or break, seats point at nothing, declared labels drift from what SSPs publish, and SChain carries whatever it is given. Add a firewall that cannot distinguish a verification crawler from an AI scraper, and a file that looks immaculate in your browser may be invisible to the people buying your inventory.

Knowing which of your lines are dead, which of your partners disagree with you, and which of your domains no buyer can read is a considerably better position than most publishers occupy today. James’s tool is at hologram.adopsboost.com, with a free tier, and he is reachable at js@js.consulting.

👉Want to stay in the loop with what’s happening in the Beeler.Tech community? Subscribe to our newsletter. If you’re interested in attending or sponsoring a future event, you can explore our upcoming events here.