---
title: "Demand partners' ads.txt lines"
description: "Scenarios 3 and 4 of the supply-chain setup — a network whose ad tag resells your inventory as a third-party code banner, and an exchange that hands over a multi-line ads.txt block with comments and variables — where the lines go, which sites carry them, and which lines are refused."
type: "howto"
audience: [network-manager, admin, publisher]
keywords: [demand partner, Demand partner ads.txt lines, app-ads.txt, tag-based demand, third-party ad tag, SSP, exchange, multi-line block, INVENTORYPARTNERDOMAIN, OWNERDOMAIN, MANAGERDOMAIN, CONTACT, SUBDOMAIN, Not published, Add lines, RESELLER]
ui_path: "Account → Advertisers → advertiser → Basic info → Demand partner ads.txt / app-ads.txt lines"
---

Fetch the complete documentation index at: https://epom.com/ad-server/docs/llms.txt. Use this file to discover all available pages before exploring further. Append .md to any documentation page URL to get its markdown version.

# Demand partners' ads.txt lines

## What it is and why

A demand partner is not a brand buying campaigns: it is another network, an exchange or a DSP
seat that resells the impression through its own ad tag, set up in your account as an
advertiser. It asks every publisher to carry its ads.txt line, and that line travels with the
partner's banners: it lands in the block of every site where one of them is linked, and nowhere
else. The one-time network setup is on
[Set up the network as a seller](https://epom.com/ad-server/docs/guides/inventory/supply-chain-ads-txt-setup-network.md); where the other kinds
of partner put their lines is on
[Supply chain, sellers.json and ads.txt: setup by scenario](https://epom.com/ad-server/docs/guides/inventory/supply-chain-ads-txt-setup.md#typical-scenarios).

**Example.** *Lakeshore Media* resells *Sports Daily* through a JavaScript tag that runs as a
third-party code banner on two of its placements. Its line
`lakeshore-tags.example, LKS-20417, RESELLER`, pasted once on the Lakeshore advertiser, appears
in the *Sports Daily* block under *Lakeshore Media · Demand partner* — and drops out the day the
banner is unlinked.

## Typical scenarios

| You sell… | Set | Then read |
|---|---|---|
| To **another network's ad tag** (a third-party code banner that resells) | That network's line on its advertiser's **Demand partner ads.txt / app-ads.txt lines** | [Scenario 3](#scenario-3-tag-based-demand-from-another-network) |
| Through an **exchange** that hands you a block with comments and variables | Paste the block as given on the advertiser; drop any `OWNERDOMAIN` / `MANAGERDOMAIN` line it refuses | [Scenario 4](#scenario-4-an-exchange-hands-over-a-multi-line-block) |

An ordinary advertiser that only buys campaigns has no ads.txt line: ads.txt lists the companies
that sell the inventory, not those that buy it.

## Step by step

### Scenario 3: tag-based demand from another network

**Setup.** The advertiser *Lakeshore Media* is not a brand buying campaigns: it is another network,
a demand partner whose JavaScript ad tag runs as a third-party code banner and resells the
impression. Lakeshore asks every publisher to carry its line. Open **Account → Advertisers →
Lakeshore Media → Basic info → Demand partner ads.txt / app-ads.txt lines**, paste the line,
press **Add lines**:

```text
lakeshore-tags.example, LKS-20417, RESELLER
```

**Where it appears.** Only on sites where one of Lakeshore's active banners is linked to an active
placement. Unlink the banner or switch it off and the line drops out of those sites' blocks and
checks. On the site page its line is grouped under *Lakeshore Media · Demand partner*, so the
publisher can see why it is needed. A reader who may not see that advertiser gets the same line
under *Demand partner* alone.

**sellers.json / schain:** unchanged — Lakeshore buys through its own tag, not through a bid
request from you.

### Scenario 4: an exchange hands over a multi-line block

**Setup.** The SSP behind advertiser *Foxglove Digital* — a DSP seat that resells through its own
exchange — sends a block with comments and variables. Paste it on the advertiser's **Demand
partner ads.txt lines** exactly as received:

```text
# Foxglove exchange block, paste as given
foxglove-exchange.example, FX-88231, RESELLER, 2a6f1c9d0b7e4f31   # display
foxglove-exchange.example, FX-88231-V, RESELLER, 2a6f1c9d0b7e4f31 # video
INVENTORYPARTNERDOMAIN=foxglove-exchange.example
MANAGERDOMAIN=foxglove-group.example
```

**Add lines** stores nothing and names the line to drop:

```text
Line 5: OWNERDOMAIN and MANAGERDOMAIN describe the site owner; set them in White Label.
```

Under the IAB ads.txt 1.1 rules `OWNERDOMAIN` and `MANAGERDOMAIN` say who owns the site and who
manages its inventory, so a partner cannot set them for the publisher. `CONTACT` and `SUBDOMAIN`
are the publisher's own entries and are refused the same way. Delete the line and paste again.
`INVENTORYPARTNERDOMAIN` names the partner itself and is kept.

Comments and blank lines are dropped. Domains and relationships are lower- and upper-cased. Each
record is kept once. Variables appear in the publisher's block but are not required when the live
file is checked. A variable stored before these lines were refused stays listed with **Not
published**: it is left out of every site's block until you remove it. The same rules apply to a
site's **Additional ads.txt lines**.

![Demand partner ads.txt / app-ads.txt lines](https://epom.com/docs-images/ad-server/supply-chain-ads-txt-setup/advertiser-ads-txt.webp)

## Caveats and exceptions

**The subsection needs its own permission.** *Advertiser ads.txt / app-ads.txt Lines (demand
partners)* is off for every role until an administrator grants it; read-only shows the lines
under a **Read-only** mark, disabled hides the subsection. The full permission table, and the
caveats that apply to every supply-chain setting, are on
[Supply chain, sellers.json and ads.txt: setup by scenario](https://epom.com/ad-server/docs/guides/inventory/supply-chain-ads-txt-setup.md#caveats-and-exceptions).

## Not working?

1. **The partner's line is missing from a site's block.** Where: the partner's banners — the line
   is carried only where one of its **active** banners is linked to an **active** placement of
   that site.
2. **Add lines stores nothing.** Where: the message names the line. `OWNERDOMAIN`,
   `MANAGERDOMAIN`, `CONTACT` and `SUBDOMAIN` are refused; delete that line and paste the rest
   again.
3. **A variable shows *Not published*.** Where: the saved lines — it was stored before such lines
   were refused and is left out of every block until you remove it.

The causes of **Missing lines: N**, *File not found* and *Could not check* on the site are on
[Supply chain, sellers.json and ads.txt: setup by scenario](https://epom.com/ad-server/docs/guides/inventory/supply-chain-ads-txt-setup.md#not-working).

## Reference

The terms (*Demand partner*, `RESELLER`, certification authority ID) are in the hub's
[Glossary](https://epom.com/ad-server/docs/guides/inventory/supply-chain-ads-txt-setup.md#glossary); every setting and its page in
[Where things live](https://epom.com/ad-server/docs/guides/inventory/supply-chain-ads-txt-setup.md#where-things-live).

## Related

- [Supply chain, sellers.json and ads.txt: setup by scenario](https://epom.com/ad-server/docs/guides/inventory/supply-chain-ads-txt-setup.md)
- [Set up the network as a seller](https://epom.com/ad-server/docs/guides/inventory/supply-chain-ads-txt-setup-network.md)
- [Supply chain for DSPs and header bidding](https://epom.com/ad-server/docs/guides/inventory/supply-chain-ads-txt-setup-dsp-and-header-bidding.md)
- [Intermediary sites and CTV channels](https://epom.com/ad-server/docs/guides/inventory/supply-chain-ads-txt-setup-intermediary-and-ctv.md)
- [Advertisers](https://epom.com/ad-server/docs/guides/advertising/advertisers.md)
- [Privacy signals and ads.txt](https://epom.com/ad-server/docs/guides/inventory/privacy-and-ads-txt.md)