Method

Where the data comes from

Every finding in a Channing & Co revenue map is measured from data the publisher already publishes to the open web. No logins, no private feeds, no data bought from a vendor. If you want to check a number yourself, you can.

The signals

ads.txt and app-ads.txt

A public file at the root of a publisher's domain listing who is authorized to sell its inventory, defined by the IAB Tech Lab's Authorized Digital Sellers specification. We read it at its published location and parse it against the spec.

sellers.json

Each exchange publishes its own public file of sellers and IDs, also an IAB Tech Lab specification. We use it to check whether the DIRECT lines in a publisher's ads.txt match what the exchange says.

Header bidding configuration

Prebid.js publishes its configuration to the page it runs on: version, bidder timeout, floors, identity modules, bidders per slot. We read it the way any visitor's browser does.

Ad server setup

Google Ad Manager's publisher tag exposes the ad units on a page and the targeting keys sent with each request, which shows whether content context reaches buyers or inventory goes out blind.

Page experience

Google PageSpeed Insights and the Chrome User Experience Report, both public APIs, for load performance and layout stability, including field data from real Chrome users.

Page composition

The rendered article: ad slots, video player, in-article email capture, third-party vendors, affiliate and sportsbook links.

Company context

Public filings, press releases, and the ads.txt OWNERDOMAIN field, used to identify who controls the ad stack. For a brand owned by a parent, that decides who can act on a finding.

What we do with it

Each capture is stored whole, with its timestamp and the page it came from. Findings point back to the capture that produced them, so any number can be traced months later. Captures are never overwritten, which is how a re-run shows what changed.

What we don't do

What this data cannot tell you

Ad auctions vary by visitor

What loads depends on geography, consent, device and whether the browser looks automated. Sites with bot protection may show a capture fewer ads than a real reader sees. When a capture looks incomplete, the finding is labeled verify first and is not presented as measured.

Privacy signals are geographic

Consent tools often load only for visitors in states or countries with privacy laws, so a missing signal from one location is not proof it is missing everywhere.

One page is not the whole site

A capture reads one article. Ad setups differ across sections and templates.

Public data cannot size the money

We can tell you a newsletter has no sponsor slot. We cannot tell you what it is worth without the publisher's own subscriber count and revenue. Dollar figures appear only after a publisher shares their numbers, and they are labeled as their data.

Confidence labels

Verified
Directly observed in the capture, with the evidence shown.
Inferred
Derived from what was observed. Reasonable, not proven.
Verify first
Observed, but the capture has a known limitation. Never sent to a client until confirmed.

Client data

Once an engagement starts, a publisher may grant read-only access to their analytics, ad server or newsletter platform. That data is theirs: used only for their work, kept separate from every other client, never added to the public benchmark except as an anonymized aggregate with permission, and access is handed back at the end of the engagement.