Supply chain for DSPs and header bidding
Scenarios 1 and 2 of the supply-chain setup — a publisher's site sold to DSPs over OpenRTB, and a site sold through header bidding with other bidders in the tag — with the exact settings, the sellers.json entry, the schain node and the ads.txt block each produces, and how the non-advertiser bidders get their lines.
What it is and why
These are the two setups where the network’s own chain reaches buyers: in the OpenRTB bid request sent to a DSP partner, and in the header-bidding tag that runs on the publisher’s page. Each needs the site’s seller ID to agree across sellers.json, the schain node and the publisher’s ads.txt. The one-time network setup — seller domain, Publish sellers.json, the listed sites — is on Set up the network as a seller.
Example. The network Northwind Ads sells Sports Daily to DSPs. The bid request says
asi: northwind-ads.example, sid: 4831207; https://northwind-ads.example/sellers.json lists
seller 4831207 as Sports Daily Media Ltd, sportsdaily.example; and
https://sportsdaily.example/ads.txt contains northwind-ads.example, 4831207, DIRECT. One
check on each of the three files and the buyer knows the sale is authorised end to end.
Typical scenarios
| You sell… | Set | Then read |
|---|---|---|
| A publisher’s site to DSPs over OpenRTB | Send supply chain on the DSP partner; the site listed in sellers.json, Publisher type, generated ID | Scenario 1 |
| Through header bidding, with other bidders in the tag | A filled Seller ID (say nw-sd-01) so the tag carries your chain; each non-advertiser bidder’s line in the site’s Additional ads.txt lines | Scenario 2 |
Step by step
Scenario 1: the network sells a publisher to DSPs over OpenRTB
Setup. The DSP endpoints are DSP partners; their banners run on the publisher’s placements. On the DSP partner, switch on Send supply chain (see DSP partners). On the site Sports Daily, leave Seller ID empty to use the generated ID, keep Seller type = Publisher, tick List in sellers.json.
sellers.json entry (the generated ID is an example). The name is the company of the site’s owner, the domain the root domain of the site URL:
{ "seller_id": "4831207", "is_confidential": 0, "seller_type": "PUBLISHER",
"name": "Sports Daily Media Ltd", "domain": "sportsdaily.example" }
schain node buyers receive (source.schain on OpenRTB 2.6, source.ext.schain on 2.5). It
names the seller domain and the site’s seller ID because Publish sellers.json is on; with it
off, the node keeps the installation domain and the generated ID:
{ "ver": "1.0", "complete": 1,
"nodes": [ { "asi": "northwind-ads.example", "sid": "4831207", "hp": 1 } ] }
ads.txt the publisher publishes at https://sportsdaily.example/ads.txt:
northwind-ads.example, 4831207, DIRECT
meridian-ssp.example, MRD-5512, RESELLER, 7c1e2a90b3d54f6a
The second line comes from the network-wide lines in step 3 of the network setup.
Scenario 2: header bidding
Setup. Header-bidding tags carry a supply chain only when both the White Label Seller
domain and the site’s Seller ID are filled in, because in header bidding the buyer may pay
the publisher directly. If you resell the inventory, set the site’s seller ID — for example
nw-sd-01 — and keep the site listed.
sellers.json entry: as in scenario 1, with "seller_id": "nw-sd-01".
schain in the tag (set as ortb2.source.ext.schain for Prebid):
{ "ver": "1.0", "complete": 1,
"nodes": [ { "asi": "northwind-ads.example", "sid": "nw-sd-01", "hp": 1 } ] }
ads.txt: northwind-ads.example, nw-sd-01, DIRECT plus a line from every other bidder in the
tag. See Header bidding settings.
While the site has an active tag that carries this chain, its block asks for this pair whether or
not Publish sellers.json is on, because the tag sends it either way. If DSP partners also buy
the site, the block keeps the line their bid requests name it by as well — with sellers.json off
that is the installation domain and the generated ID; with it on, both name the same pair and one
line covers both. A site sold only through header bidding is not asked for the OpenRTB line.
The other bidders. Say Sports Daily’s tag also offers every slot to Adform, as Prebid bidder
adf. Adform is not an advertiser in your account — it bids in the publisher’s page, not through
a banner — so it has no advertiser to carry its line. The site’s ads.txt block lists it in the
Header-bidding partners table, one row per bidder:
Partner Bidder code Status
Adform adform.com adf Line missing — ask Adform for its line
- Ask Adform for the line it gives this site, for example
adform.com, 2817, RESELLER. - Open the site’s Supply chain section, paste the line into Additional ads.txt lines and press Add lines. The line appears under Saved lines and joins the block under This site, and Adform’s status changes to Added, not on the live file yet.
- The publisher copies or downloads the block as before. Once a check finds the line in the publisher’s file, Adform’s status reads Live.
The status always combines the block with the last check of the live file. When there is no check that read the file — never checked, the file was not found or could not be fetched — a partner whose line is in the block reads In the list above — not confirmed on the live file, because nothing can be said about the file yet. A line added after the last check counts as not on the live file until the next check, nightly or Re-check now.
Each bidder is mapped from its Prebid code to the ad system it sells under, from a list checked
against each company’s own sellers.json and publisher documentation: adf adform.com, appnexus
appnexus.com, criteo criteo.com, rubicon rubiconproject.com, ix indexexchange.com,
pubmatic pubmatic.com, openx openx.com, sovrn lijit.com, smartadserver
smartadserver.com, triplelift triplelift.com, sharethrough sharethrough.com, gumgum
gumgum.com, teads teads.tv, yieldmo yieldmo.com, onetag onetag.com, richaudience
richaudience.com, improvedigital improvedigital.com, amx amxrtb.com, medianet media.net.
Any other bidder is listed as Unknown ad system — ask the partner.
The live check counts a known bidder’s system as missing when the publisher’s file has no record for that domain at all, and shows it under Missing from the live file as Any line from Adform (adform.com). A record you did not paste still satisfies it — the publisher may have Adform’s line from another seller.
Caveats and exceptions
A header-bidding partner is listed from the site’s active tags only. Switch a tag off and its bidders drop out of the block and of the check.
The caveats that apply to every supply-chain setting — who can do this, what a seller ID change touches, which line the network’s own entry is — are on Supply chain, sellers.json and ads.txt: setup by scenario.
Not working?
- The bid request carries no chain. Where: the DSP partner’s Send supply chain switch (Admin → DSP partners → the partner).
- The header-bidding tag carries no chain. Where: both the White Label Seller domain and the site’s Seller ID — the tag sends a chain only when both are filled in.
- A bidder reads Unknown ad system — ask the partner. Where: its Prebid code is not in the mapped list above; ask the partner which ad system it sells under and for its line.
The causes of Missing lines: N, File not found and Could not check are on Supply chain, sellers.json and ads.txt: setup by scenario.
Reference
The terms (asi, sid, complete, DIRECT, RESELLER) are in the hub’s
Glossary; every setting and its page in
Where things live. The tag-side settings:
Header bidding settings.