PublisherRevenue Guide

The business behind
independent publishing.

New here? Choose a reading path ↗

Operating guide / Primary sources + editorial method

Trace one authorized sale from your domain to the final bid request

An ads.txt line is only the first checkpoint. This audit follows the account through sellers.json and the SupplyChain object, while keeping publisher and intermediary duties separate.

An open laptop displaying the Unsplash website on a table.
Reference photograph: a digital workspace, not an advertising dashboard. Bernd Dittrich / Unsplash ↗
Open the visual model ↗
Illustrative inventory branches from 144,000 eligible requests to 45,000 direct impressions and 99,000 requests available for network fill.
Original editorial diagram / Conceptual illustration; not benchmark data.

Start with a relationship, not a file-size target

Export the current ads.txt file from the public root of the domain and compare it with a publisher-owned register. Each data row should have an advertising-system domain, seller account identifier, and relationship type; a certification identifier may also appear. A syntactically valid row can still be wrong. Confirm that the named account is yours or belongs to the intermediary you intentionally authorized, and record the contract or partner ticket that supports it.

DIRECT means the publisher controls the indicated account with that advertising system. RESELLER means another entity controls that account and is authorized to resell the inventory. It does not mean that one route is morally better, nor does it describe every later hop. If a partner supplies ten rows, ask what each account and system does. Remove a row only after confirming that the relationship ended; an unexplained cleanup can cut off legitimate demand.

Publisher authorization register
FieldExample inputEvidence
Systemexchange.examplePartner instruction
Seller IDpub-2048Account screen or written confirmation
RelationshipDIRECTWho controls the account
OwnerRevenue operationsInternal approver
Last checked2026-09-19Saved fetch and ticket

The example domains and identifiers are illustrative.

Source notes: Ads.txt 1.1 specification

Cross the row into sellers.json

Fetch sellers.json from the advertising-system domain named in the row. Find an exact seller_id match. Compare the seller type and disclosed identity with the commercial relationship you understand. A PUBLISHER entry describes an entity that owns and directly controls the monetized inventory; an INTERMEDIARY entry describes an entity that does not. A confidential name is not automatically an error, but the identifier and seller type still need to match the path you were sold.

Classify the result as matched, missing, conflicting, or unresolved. Missing means the account identifier does not appear. Conflicting means, for example, your direct publisher account is represented as an intermediary. Unresolved covers inaccessible files, malformed JSON, and identity that cannot be connected to the contracting party. Send the smallest reproducible record to the partner: your ads.txt row, the sellers.json URL, the seller_id searched, the observed entry, and retrieval time.

Source notes: Sellers.json specification

Treat schain as transaction evidence

The SupplyChain object belongs to a bid request, so it cannot be proven by inspecting two public files. Ask the partner for a captured test request or use an authorized diagnostic view. In a complete chain, the first node represents the initial advertising system and seller involved with the inventory owner; the last represents the entity sending the bid request. Each node identifies an advertising system and seller account. The complete flag says whether all payment-path nodes are represented, not whether the traffic is valid or the campaign performed.

Compare the first applicable node with the ads.txt authorization and compare every node with the corresponding system's sellers.json. Stop at the boundary of your evidence. A publisher can verify its public file and the records exposed by partners, but usually cannot independently certify every downstream transformation. Record an incomplete chain as incomplete. Do not repair it by guessing a missing node.

Source notes: OpenRTB SupplyChain object

Run one path before auditing the whole file

Illustrative audit: a site has 42 ads.txt rows. Select the five rows responsible for current spend rather than reviewing all 42 as one undifferentiated list. Row A names exchange.example, account 2048, DIRECT. The matching sellers.json entry exists but says INTERMEDIARY. A test request begins with exchange.example and 2048, then names a second system, and marks the chain complete. The public authorization and transaction identifier align, while the seller type conflicts. The correct action is a partner clarification, not silently changing DIRECT to RESELLER.

Keep one row per finding with severity, owner, evidence link, and next check. Block launch for an account identifier that no partner recognizes or a route that was never authorized. Queue ordinary naming ambiguity for written resolution. Recheck after contract changes, platform migrations, domain transfers, or partner offboarding. The useful output is a traceable authorization graph, not a score based on how many lines the file contains.

  • Fetch the live root file; do not audit a dashboard copy alone.
  • Match the seller identifier exactly across files and requests.
  • Separate a syntax error from a commercial-relationship conflict.
  • Save the before-and-after files when a partner resolves an issue.

Source notes: Ads.txt 1.1 specification · Sellers.json specification · OpenRTB SupplyChain object

Continue the work

Sources & limits

The public files describe authorization and seller identity; they do not prove traffic validity, payment, or campaign quality. The example is hypothetical, and partner-specific paths require a current captured request.

  1. Ads.txt 1.1 specification
    IAB Tech Lab specification · Publication date not stated · Primary source checked · 19 September 2026
  2. Sellers.json specification
    IAB Tech Lab specification · Publication date not stated · Primary source checked · 19 September 2026
  3. OpenRTB SupplyChain object
    IAB Tech Lab specification · Publication date not stated · Primary source checked · 19 September 2026

Source claims and editorial judgments remain separate. Send a correction with the passage and supporting evidence.

Keep going

Also on the desk.

Explore the library ↗

A clearer view of the business

The Revenue Letter.

One useful model. One question worth asking.
A considered note for independent publishers.