How to read app-ads.txt in mobile advertising

What seller authorizations tell buyers and publishers about supply chains, and what they don't

How to read app-ads.txt in mobile advertising

Every publisher who integrates a monetization SDK gets the same request: add these lines to your app-ads.txt. Sometimes it is a handful of lines, sometimes hundreds, but the file grows with the monetization setup. So what are you agreeing to, what does its length say about your inventory and why does an accurate one matter to brand advertisers? Here are the mechanics.

What one line authorizes

app-ads.txt is the IAB Tech Lab standard for declaring who may sell a publisher's inventory. It sits at the root of the developer domain listed on the app's store page, and anyone can open it. Each line names one seller account:

<exchange domain>, <seller account ID>, DIRECT, <certification authority ID>
<exchange domain>, <seller account ID>, RESELLER, <certification authority ID>

The first field is the domain of the exchange running the auction, and the second is the account ID the publisher holds there. The third says whether the publisher controls that account directly, or has authorized someone else to sell through it. The fourth, when present, is that exchange's certification ID in a registry such as TAG, the industry body that vets and identifies ad tech vendors.

Why revenue cannot be traced to a single entry

Publishers sometimes mistake each line for a separate source of income, one they could measure and switch off. But it grants the right to sell and nothing else, with no promise of demand, volume or price.

Lines also cannot be compared with each other. Bid requests carry a supply chain object listing the companies between the app and the buyer, so the route into the auction is documented. No equivalent is in general use on the demand side, so you cannot see which authorization produced which bid. Revenue by partner is still in your reporting, and it is the breakdown inside that total which is missing. That is what makes pruning risky: removing an entry means cutting a path without knowing what it carried, and a later dip in revenue will not tell you which one caused it. Delete only what you can account for, such as a partner you have stopped working with.

Who reads it

Brand buyers read app-ads.txt, and so does anyone running supply-path optimization. They open it to confirm that the company offering them an impression, along with every intermediary disclosed in the supply chain object, appears in the publisher's own list of authorized sellers, which is the only record of that permission they can verify independently. It also shows which routes lead to the same inventory, so a buyer can take the shortest one it trusts.

The file matters most to publishers who want brand and ecommerce budgets, because those campaigns have to document the path and a route that fails verification is dropped before the bid, whatever the quality of the app behind it. On BidMachine those budgets are the larger share of spend, with brand at roughly 63% and ecommerce around 30%, which is why we recommend that publishers on our SDK keep the file accurate.

What a long file doesn't mean

A long app-ads.txt is not, on its own, evidence of made-for-advertising inventory, and it is not a quality score. Every entry should match an account in the exchange’s own sellers.json, the public file where it lists the accounts it sells through, and buyers check that it does. In the end, your app-ads.txt lives on your own domain, and you decide what stays in it.

Making sure your app-ads.txt can be read

The first thing to check is whether a crawler can fetch the file at all. A redirect to another domain, an error page or a bot challenge makes it invisible to the systems that build buyers' allowlists, and an app whose file never loads is treated as having none.

  1. The developer domain on your store listing resolves, and https://<that domain>/app-ads.txt opens in a browser
  2. It arrives as plain text, not as an HTML page, and any redirect stays on the same domain
  3. Every line a partner asked you to add is there, spelled the way they gave it
  4. The mediation and exchange platforms you use do not flag the file as missing or unverified
  5. Each DIRECT line matches an account the exchange lists as yours in its sellers.json

Have more questions about your supply setup? Talk to our team.