Back to Blog
Best Practices August 4, 2025 5 min read

ads.txt, sellers.json and schain: A Supply Chain Guide for Local Publishers

Buyers use ads.txt, sellers.json and schain to decide which paths to your inventory are worth bidding on. A step-by-step audit local news and community publishers can run in an afternoon.

HR
HBDR Research
August 4, 2025

Local news and community publishers face a particular problem in programmatic advertising. Their inventory is valuable to local and regional advertisers, but it is small enough that buyers' algorithms can overlook it, and it often runs through several intermediaries. When buyers trim supply paths, the paths that look messy are the first to go.

Three IAB Tech Lab standards determine what those paths look like: ads.txt, which declares who is authorized to sell your inventory; sellers.json, where SSPs and exchanges declare who they pay; and the SupplyChain object, or schain, which records every hop an impression takes to reach a buyer. Getting them right does not guarantee more demand. Getting them wrong reliably costs demand.

This guide is an audit you can run in an afternoon. It is also timely: with Prebid.js 10, released July 1, schain moved to first-party data configuration, so many publishers will be touching this setup anyway.

How buyers use these files

A DSP evaluating a bid request checks that the seller ID in the request appears in your ads.txt as an authorized seller, that the relationship type (DIRECT or RESELLER) makes sense, that the seller appears in the SSP's sellers.json with an accurate name and domain, and that the schain is complete. Many buyers also run supply path optimization, preferring the shortest, cheapest and most transparent path to the same impression. If your inventory is available through several paths, the clean direct path usually wins.

Step 1: Clean up ads.txt

Download your live ads.txt file (at yourdomain.com/ads.txt) and review every line:

  • Remove dead entries. Lines for partners you stopped working with years ago still authorize someone to sell your inventory. Remove them.
  • Check relationship types. DIRECT means you control the account with that seller. RESELLER means someone else does. Mislabeling a reseller as DIRECT is a common error and a red flag for buyers.
  • Check seller IDs. Every ID should match the account ID your partner assigned. Typos silently invalidate lines.
  • Add ownerdomain. ads.txt version 1.1, released in 2022, added OWNERDOMAIN and MANAGERDOMAIN. OWNERDOMAIN should list the business domain of the company that owns the site and should match the domain in your sellers.json entries. MANAGERDOMAIN applies when a third party manages your inventory.
  • Watch file size and format. Keep the file valid plain text, served with a 200 response from the root domain, and do not redirect it to another domain unless the specification allows it.

Step 2: Check your sellers.json entries

For each SSP in your ads.txt, look up your seller ID in that SSP's sellers.json file, typically at the SSP's domain followed by /sellers.json. Confirm:

  • Your entry exists.
  • The seller type matches reality: PUBLISHER if you own the inventory, INTERMEDIARY if the account is held by a reseller or network.
  • The name and domain are accurate. Some local publishers find entries listed as confidential or under an old company name after acquisitions or rebrands.

If anything is wrong, contact the SSP. They are the only ones who can change it.

Step 3: Verify schain in bid requests

The supply chain object should list every entity that handles the impression, in order, with the seller ID each one uses. For a publisher selling direct through an SSP, the chain is short. For a publisher working through a network or managed service, the chain should include that intermediary's node.

  • Open your browser's developer tools on a page with ads and inspect outgoing bid requests.
  • Find the source.schain or source.ext.schain field.
  • Check that it is marked complete and that each node's seller ID matches the corresponding sellers.json entry.

If you upgrade to Prebid 10, configure schain in ortb2.source.schain or ortb2.source.ext.schain as the release notes describe, then recheck the requests.

Step 4: Reduce duplicate paths

Many local publishers are sold through several networks that each resell through the same SSPs. The result is multiple paths to the same impression, which confuses buyers and invites SPO cuts. For each SSP, ask whether you need both a direct path and one or more reseller paths. If a reseller adds real demand, such as local agency relationships you cannot reach alone, keep it. If it duplicates a path you already have, consider removing it.

Step 5: Remember app-ads.txt

If you publish a mobile app, the same rules apply through app-ads.txt, hosted on the developer domain listed in the app store. Local TV and radio groups with streaming apps should check this file with the same care as their website.

Step 6: Schedule it

Supply chain files decay. Partners change IDs, contracts end, networks get acquired. Put a quarterly review on the calendar, and review immediately whenever you add or remove a demand partner.

Common mistakes to look for

  • Copied files. Publishers sometimes paste a partner's recommended ads.txt lines in full, including lines for exchanges they never use. Every line should correspond to a real, active relationship.
  • Mismatched domains. After a rebrand or acquisition, sellers.json entries may still show an old company name or domain, which makes buyers doubt the path.
  • Subdomains and sister sites. Each root domain you monetize needs its own ads.txt. Check every site in your group, not just the flagship.
  • Missing intermediaries in schain. If a network sells your inventory, its node belongs in the chain. An incomplete chain can lead buyers to skip the request.

Why this matters more for local publishers

National publishers with large volumes can absorb some inefficiency. Local publishers cannot. When a buyer has budget for a regional campaign, you want your inventory to show up as a clean, verified, direct path with an accurate publisher name. That is how local audiences get valued like the premium, high-trust audiences they are.

For publishers who work with a managed partner such as HBDR, the partner should appear transparently in your ads.txt and in the schain, and should be able to show you exactly which paths it uses. Ask for that, whoever you work with.

Tags: ads.txt sellers.json schain supply path optimization local publishers

Ready to maximize your ad revenue?

Get Started