Repository navigation
[Change] § 5.1, § 5.2 — Define channel and environments in AdCOM terms, so one impression gets one label #90
Description
What kind of change?
Change a field's type or shape
Which section?
Whole document / more than one section
Current text
§ 5.1:
| `channel` | Enum | immutable | `display` \| `video` \| `audio` \| `ctv` \| `dooh` \| `native`. The discriminator for how the rest of the line item is read |
§ 5.2:
| `environments` | Object | selectable | `available[]` from `web_desktop` \| `web_mobile` \| `app_mobile` \| `ctv` \| `dooh` \| `audio_streaming` |Proposed text
§ 5.1, `channel` row: replace the enum with "One value from Channel values".
#### 5.1.1 Channel values
An impression's channel is the first row it matches, in AdCOM 1.0 terms.
Where an impression accepts more than one medium, its media is that of the
ad served.
| `channel` | Condition |
| :--- | :--- |
| `dooh` | Distribution channel `Dooh` |
| `audio` | Audio ad |
| `ctv` | Device type Connected TV (3), Connected Device (6), or Set Top Box (7) |
| `native` | Native ad (`nativefmt`), video assets included |
| `video` | Video ad |
| `display` | Any other display ad |
The seller MUST serve a line item only on impressions of its `channel`.
Placement type does not change it. A consumer MUST skip a line item whose
`channel` it does not recognize, and MUST NOT reject the proposal because
of it. Impressions in linear TV, including addressable linear, are outside
this table: they have no `channel` value in 3.0.
A channel whose delivery is not an AdCOM ad-served impression, such as
`print` or `ooh`, is not in the first-match table. The rule that a line
item serves only impressions of its `channel`, and the environment rule
in 5.2.1, apply only to channels in the table. Such a channel defines
its own environment values, and its definition lists the fields that
have no meaning for it. Those fields are absent from its line items. A
`proof_of_performance` (#92), with the evidence terms its definition lists,
shows its delivery in place of a served-impression count. Audience and
circulation guarantees stay in `committed_metrics[]`.
§ 5.2, `environments` row: `available[]` of values from Environment values.
#### 5.2.1 Environment values
Each value is the set of (distribution channel, device type) pairs formed
from its row. An impression matches the value when both its distribution
channel and its device type are in the row.
| Value | Distribution channel | Device types |
| :--- | :--- | :--- |
| `web_desktop` | `Site` | Personal Computer (2) |
| `web_mobile` | `Site` | Mobile/Tablet - General (1), Phone (4), Tablet (5) |
| `app_mobile` | `App` | Mobile/Tablet - General (1), Phone (4), Tablet (5) |
| `ctv` | `Site` or `App` | Connected TV (3), Connected Device (6), Set Top Box (7) |
| `dooh` | `Dooh` | any |
Device types are AdCOM 1.0 List: Device Types, named with their codes.
Each `available[]` value MUST match at least one impression to which
5.1.1 gives the line item's `channel`.
§ 2.1, Summary Representation: add `environments.available[]`.Why
channel and environments have no definitions, and their values overlap. Two sellers can label the same impression differently, and a buyer can't check delivery against the label. We ask to define each value in the terms AdCOM uses to describe an impression: distribution channel, ad media, and device type. Delivery is then checkable wherever the impression carries them.
videoorctv? Nothing says whether CTV video ischannel: ctv, as in the CTV example, orchannel: video, environments: [ctv]. The § 2.1 summary carrieschannelbut notenvironments. Display & Video 360 sells Connected TV as its own line item type, with position, video, and device targeting preselected.doohis a distribution channel. OpenRTB 2.6 Object: DOOH is sent instead ofsiteorapp, with any media.nativeis a display format. AdCOM puts it insideDisplayPlacement; its video asset reusesVideoPlacement. Native video fits two values.audio_streamingnames a medium, not a surface. @fgranata (#8) notes thatctvandaudio_streamingboth repeat the channel. We keepctvin both fields. As a channel, it marks lines whose household caps and SSAI serving differ from web and app. As an environment, it is the TV surface, which anaudioline item can also select.
The first-match order keeps the six labels and makes each impression's label unique. It proposes a definition rule for environments (#8) and leaves the value list open to the inventory evidence there. Linear TV gets no value, and its scope is left to #44. Print, in the print channel change request (#102) that @matthew-iabtechlab filed for BCN, and static OOH, in OOH as a channel (#49) from @clerongi and @premesh, sell inventory with no ad-served impression. Such a channel sits outside the table and shows delivery by proof of performance. The per-channel list of absent fields follows #102's own recommendation. We don't add the not_applicable value of #102's design principle 5: as in our placement change request (#89), an absent key doesn't constrain the line item. Whether 3.0 adds print or ooh stays with #102 and #49.
Definitions: AdCOM 1.0 objects Site, App, Dooh, and AudioPlacement.
Details: Channel and environments: full rationale and examples.
Knock-on effects
- The § 6.4 audio example lists surfaces instead of
audio_streaming. - Under this definition, a cross-screen video deal becomes a
videoand actvline item, tied by #23 and our commitment-set reply on #23. This fits #20 item 6: packages are linked line items. @fgranata reports that their exchange already sells television as its own lane, identified by Connected TV (3), Connected Device (6), or Set Top Box (7). - Our targeting-values reply on #58:
devicenarrowsenvironments, now checkable locally. A seller or buyer that wants to separate consoles and streaming devices from TVs narrowsctvwith device targeting, not a separate environment value.
Open questions for the working group
- Should 3.0 keep the six
channellabels and define them with the first-match table, or replacechannelnow with separate media, distribution, and device fields and derive the label from them? - Is the first-match order right, in particular
audiobeforectv(audio in a TV app isaudio) andnativebeforevideo(native video isnative), or should either pair go the other way? - Answered by @fgranata on this issue. Should a cross-screen video deal split into a
videoand actvline item tied by line-item dependencies (#23), or shouldchannelsay what renders andenvironmentssay where, as @fgranata suggests on open question 7 on environments (#8), withfrequency_cap.basisandserving_modeset per environment? - Answered in part in our device-type revision: the filing adds no
connected_devicevalue, andapp_tvin place ofctvwent with the alternative that @fgranata withdrew on this issue. Still open: should this filing dropaudio_streaming, or should open question 7 on environments (#8) settle the value list, includingapp_tablet, while this filing sets only the rule? - When a consumer skips a line item whose
channelit doesn't recognize, should the text also say that it can't commit alinked_executionorrequiresfrom line-item dependencies (#23), or a commitment set from our commitment-set reply, that contains the line item? - Answered by @premesh on #125. Should proof of performance be one field across channels that also covers DOOH proof of play, as @premesh asks on #49, or part of each channel's own object, like
print.proof_of_publicationin #102? Oneproof_of_performanceobject,{ logged_by, evidence[] }as [Change] § 5.6, § 5.7 — DOOH: define a play, and whose multiplier turns plays into impressions #92 drafts it, serves every channel. Each channel's definition lists its evidence terms:play_logfor DOOH,posting_photoandinstall_recordfor static OOH, and [Change] § 1.1, § 5.1, § 5.9, new § 5.11 — Add a print channel: enum, print extension object, downstream row #102's proof-of-publication types for print. - A smart speaker that reports Connected Device (6) is in the
ctvenvironment, so an audio line item sold on smart speakers selectsctv, and a buyer that screens for thectvenvironment also finds that audio. Should smart speakers stay inctv, narrowed by device targeting as in our reply on typed targeting codes (#58), or get their own value that, as @fgranata asks, a seller may omit and a buyer doesn't have to select to reach TV? - What happens when an impression doesn't carry an attribute that a condition names?
device.devicetypeis optional in OpenRTB 2.6 Object: Device, so a TV video impression without it falls through tovideo, and an impression without a device type matches no environment exceptdooh. Should a missing attribute fail the condition, or should the seller classify the impression from what it knows about the property? This goes with the question on sendingdevice.devicetypein the supporting material's open questions. - Should the seller also serve a line item only on impressions that match a value in its
environments.included[]? As written, 5.2.1 limits which environments a line item may offer, not where it serves, so a buyer can check delivery againstchannelbut not against the environments it selected.
Would this break an implementation already built to this draft?
Yes — breaking
Alternatives you considered and rejected
channelfor what renders,environmentsfor where (#8): TV would then share a line item with web and app, butfrequency_cap.basisandserving_modeare set once per line item and differ on TV. @fgranata has since withdrawn it.- Connected Device (6) outside
ctv, in its ownconnected_deviceenvironment: a television line item could then not serve Connected Device (6) impressions, which @fgranata's TV lane includes, and a buyer would have to select a second value to reach television. Device targeting separates them where needed. - Separate media, distribution, and device fields: cleanest. The table derives the label from them, so a later version can add them without relabeling.
channel[]: breaks one channel per line item.
You are commenting as
Other — IAB Tech Lab member (Postindustria).
Before you submit
- I have read CONTRIBUTING.md and agree my contribution may be published under this repository's licence.
- This contains no confidential or commercially sensitive information.
Revised 2026-10-28: Proof of performance is one object across channels, as @premesh proposes on #125. From @fgranata's implementation evidence, ctv covers Connected Device (6), the connected_device environment is gone, and cross-screen deals are settled as two line items (our device-type revision). Channels without an ad-served impression, such as print or ooh, sit outside the table, the fields with no meaning for such a channel are absent, and open question 6 asks about proof of performance (our print and OOH revision). The draft PR adds the served-ad media rule, states the delivery, skip, linear TV, and consistency rules more precisely, defines environments as (distribution channel, device type) pairs, and raises open questions 7 to 9.
Analyzed and generated with the help of Claude, fully reviewed by me.
Activity
fgranata commentedon Oct 23, 2026
Implementation evidence from an in-app + CTV supply-side exchange, on the open questions.
Q3 (one line item per channel vs. channel = what renders, environments = where). We already operate the way the first-match table implies. Television is its own lane in our catalogue: separate line items, separate floors, separate frequency and serving settings, identified by device type 3/6/7 on the request, never by OS (a large share of our CTV impressions report
android). A cross-screen video deal is two line items for us today, so the table matches practice; the alternative I floated on #8 would makefrequency_cap.basisandserving_modeper environment, which we could not honour on one line. Withdrawn in favour of this definition.Q4 (
connected_device). We fold device type 6 into the television lane and do not yet see meaningful volume on it to treat separately. A separate environment value is fine as long as a seller may omit it; a buyer should not have to select it to reach television.Q2. No audio inventory here yet; no position on
audiobeforectv.One request: keep the device-type codes in the table, as drafted. They are what we filter on at request time, so delivery against the label becomes checkable for us without a mapping step.
KonstantinMirin commentedon Oct 23, 2026
Revision, from implementation evidence on this issue. @fgranata reports that their television lane is identified by device type 3, 6, or 7 on the request, and that device type 6 carries no volume worth separating. As drafted,
ctvcovers device types 3 and 7 only. That would leave their television line items unable to serve Connected Device (6) impressions, because a line item serves only impressions of itschannel.We revise both tables:
The device-type codes stay in the table, as @fgranata asks, because delivery is checked against them at request time. A seller or buyer that wants to separate consoles and streaming devices narrows with device targeting, which our reply on typed targeting codes (#58) defines on AdCOM Device Types. A separate environment value isn't needed for that. This also answers part of open question 4: the filing adds no
connected_devicevalue.The same evidence answers open question 3. A cross-screen video deal is two line items,
videoandctv, tied by line-item dependencies (#23), and @fgranata withdraws the alternative raised on open question 7 on environments (#8).Analyzed and generated with the help of Claude, fully reviewed by me.
KonstantinMirin commentedon Oct 25, 2026
Revision, from the print channel change request (#102) that @matthew-iabtechlab filed for BCN, and from @clerongi and @premesh on Add OOH as a channel (#49). Print and static OOH both sell inventory with no ad-served impression. Our rationale says that static OOH "gets no value until AdCOM describes it". Read that way, neither channel could ever get a value. We make two changes.
In § 5.1.1, after the Linear TV rule, add:
In Why, drop the sentence "Static OOH (#49) gets no value until AdCOM describes it."
The per-channel list of absent fields follows #102's own recommendation. We don't add the
not_applicablevalue of #102's design principle 5: as in our placement change request (#89), an absent key doesn't constrain the line item. The first-match table still labels every served impression. Linear TV stays with linear TV scope (#44). Whether 3.0 addsprintoroohstays with the print channel (#102) and OOH as a channel (#49).Open question for the working group
print.proof_of_publicationin #102?Analyzed and generated with the help of Claude, fully reviewed by me.
KonstantinMirin commentedon Oct 25, 2026
Draft PR: § 2.1, § 5.1, § 5.2 — Define channel and environments in AdCOM terms. It applies this change request with the revision for Connected Device (6), from @fgranata's implementation evidence. It removes
audio_streamingand leaves the rest of the environment value list, such asapp_tablet, to #8. The revision for print and static OOH isn't in it yet.Writing the change as spec text added one rule that the issue's labels ("Audio ad", "Video ad") imply but the issue didn't state:
Without it, the first match makes every impression that accepts both video and display a
videoimpression, so adisplayline item could never serve it. A buyer can check the served media againstbid.mtypein OpenRTB 2.6 Object: Bid.The PR also gives the delivery rule an actor: "The seller MUST serve a line item only on impressions of its
channel." The PR description lists the other wording changes, such as putting linear TV outside the table. None of them changes what this issue asks for.It also raised three questions:
ctvenvironment, so an audio line item sold on smart speakers selectsctv, and a buyer that screens for thectvenvironment also finds that audio. Should smart speakers stay inctv, narrowed by device targeting as in our reply on typed targeting codes (#58), or get their own value that, as @fgranata asks, a seller may omit and a buyer doesn't have to select to reach TV?device.devicetypeis optional in OpenRTB 2.6 Object: Device, so a TV video impression without it falls through tovideo, and an impression without a device type matches no environment exceptdooh. Should a missing attribute fail the condition, or should the seller classify the impression from what it knows about the property? This goes with the question on sendingdevice.devicetypein the supporting material's open questions.environments.included[]? As written, § 5.2.1 in the PR limits which environments a line item may offer, not where it serves, so a buyer can check delivery againstchannelbut not against the environments it selected.Analyzed and generated with the help of Claude, fully reviewed by me.