Repository navigation
Description
What kind of change?
Add a new field
Which section?
2 — Object shape
Current text
§ 5.5:
| `geo` | Object | settable | `allowed[]` of geo codes the buyer may select within |
examples/line-item-display.yaml:
geo: { allowed: ["US-NY", "US-CA", "US-IL", "US-TX"] }Proposed text
§ 5.5, replace the geo row:
| `geo` | Object | settable | `allowed[]` of typed geo areas the buyer may select within. See 5.5.1 |
New § 5.5.1 geo:
Each entry in `allowed[]` is `{ type, code }`, using the code systems of the
OpenRTB 2.6 Geo object so that an agreed value passes to the bid request
without translation:
| `type` | `code` | OpenRTB 2.6 equivalent |
| :--- | :--- | :--- |
| `country` | ISO 3166-1 alpha-3 | `geo.country` |
| `region` | ISO 3166-2, including the country prefix (`US-NY`) | `geo.region` (which carries `NY` alone for the US) |
| `metro` | Google metro code | `geo.metro` |
| `city` | UN/LOCODE | `geo.city` |
| `zip` | Postal code. The entry MUST also carry `country` | `geo.zip` |
- A geo entry that needs an identifier, for example as a pricing key, MUST use
`<type>:<code>`, as in `metro:501`.
- A buyer agent MUST treat an entry whose `type` it does not recognize as not
selectable.
Updated display example:
geo:
allowed: [{ type: region, code: "US-NY" }, { type: region, code: "US-CA" },
{ type: region, code: "US-IL" }, { type: metro, code: "623" }]Why
geo is a list of "geo codes" with no code system named. Nothing tells a
buyer agent whether 501 is the New York metro or some other kind of code.
US-NY in the example is ISO 3166-2, which OpenRTB 2.6 carries as NY, while
OpenRTB country codes are alpha-3 (USA), not the alpha-2 prefix in US-NY.
Two agents that agree a geo today have no shared way to read it, and the
agreed value cannot be handed to the downstream bid request without a mapping.
Reusing the OpenRTB 2.6 Geo code systems avoids inventing new ones, and every
area type maps to a field the seller already matches at auction.
Concrete scenario
A line item allows New York, California and Illinois, plus the Dallas–Fort
Worth metro. Under the draft the seller writes the states as untyped strings
and has no unambiguous way to write the metro. A buyer agent that selects them
can't tell which code system it is reading, and the agreed values need a
hand-built mapping before they can target the downstream deal.
Knock-on effects
- § 5.5
georow, the new § 5.5.1, and the § 6.2 display example. No new
top-level field, so Appendix A/B counts are unchanged. - [Change] § 5.6 — Per-geo pricing: selectable
geowith price deltas, andpricing[].guidancepercentiles alongsidefloor#14 (selectablegeowith price deltas): the same{ type, code }entries
serve asavailable[]options, keyed<type>:<code>inpricing. - Downstream: each type maps one-to-one to an OpenRTB 2.6
device.geo/
user.geoattribute. - "Resolves without a round trip" is unaffected: the seller still declares the
areas up front.
Would this break an implementation already built to this draft?
No — additive or editorial
Alternatives you considered and rejected
- Prefixed strings (
"metro:501","zip:USA:10001"): workable, but a
convention to parse rather than a shape to validate, and it still needs the
code-system table above. - Naming one code system for all entries: no single system covers
countries, regions, metros and postal codes.
You are commenting as
SSP
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.
Activity
KonstantinMirin commentedon Oct 22, 2026
Postindustria (IAB Tech Lab member) supports this. The other § 5.5 targeting values need the same treatment: a buyer and seller can agree one line item and read it differently.
{ days[], start, end }in civil time, withendexclusive. Addtime_zone, the clock for windows and cap periods: an IANA time zone name orviewer_local, REQUIRED withdaypartorperiod. The UTC rule that #37 proposes suits instants, not civil-time windows: 06:00 in New York is 10:00 UTC in summer, 11:00 in winter. At a daylight-saving change, a skipped hour matches no instant and a repeated hour matches both.Device.devicetypesends. AdCOM lists the values flat; we propose that Mobile/Tablet - General (1) covers Phone (4) and Tablet (5).periodtakeshour,day,week,month, orflight, the OpenDirect 2.1frequencyintervalvalues (flightforLineDuration), as calendar periods intime_zone, with weeks starting on Monday.basisgainsperson, as in #38 and #39. The buyer sets the cap count;periodandbasisstay with the seller.geo,device, anddaypart, the buyer's value (thevaluekey from #22) is{ include[], exclude[] }and only narrowsallowed[]. Exclusion wins. A country covers the regions and cities whose codes name it, and the postal codes that carry it ascountry. A metro code names no country, so only the same metro covers it. Nothing else is assumed.default, besidevalue, in the same shape.This is a breaking change.
deviceanddaypartvalues change shape, buyer values become{ include[], exclude[] }, andtime_zoneis a new field, REQUIRED withdaypartorperiod. We think now is the right time: a break costs least before 3.0 is final, and today the draft gives these values no shape that two implementations could already share.Open questions:
time_zonetake only an IANA name orviewer_local, or also aninventory_localtoken for sellers whose units span zones, or besettableso the buyer picks the clock?periodcount calendar periods, as OpenDirect 2.1Line.frequencyintervaldoes, or rolling windows written as ISO 8601 durations (P1D,P7D), the duration style that the issue on example timestamp formats (#37) proposes?USAcovers every US metro?defaultkey besidevalue, as proposed, or should the change request on the buyer's selection keys (#22) name that key when it definesvalue?Our channel definitions filing gives each
environmentsvalue its device types, sodevicenarrowsenvironments. Proposed text: Targeting values: proposed text and rationale.Analyzed and generated with the help of Claude, fully reviewed by me.
nitinms2 commentedon Nov 9, 2026
Commenting as: seller. Intersection, out-of-home media owner offering digital, place-based, traditional and large-format OOH across street furniture, place-based venues and moving media.
Typed codes help, but out-of-home buys are often a radius around a point of interest ("within 800 m of a stadium") rather than a region. Could allowed[] admit { type: radius, lat, lon, meters } alongside the code types? OpenRTB 2.6 has no radius type, so this one wouldn't pass straight through to a bid request. That's acceptable for direct and guaranteed OOH, where the seller resolves the radius to the units inside it.
KonstantinMirin commentedon Nov 10, 2026
Thanks, @nitinms2. #141 carries #58. There, a
GeoCodeis an ISO 3166 code or an extension term for any other area (§ 5.5). A seller can list a radius it sells, such asexample.com:stadium-800m, inallowed[], and resolve it to the units inside.An extension term covers only itself, so it can't carry a point and radius that the buyer picks. That needs a structured type, which #141 doesn't add, so we'd leave it to the working group.
Analyzed and generated with the help of Claude, fully reviewed by me.