Skip to content

§ 5.5 — Selectable geo with per-market price deltas (#14) - #72

Draft
Sirajmx wants to merge 2 commits into
mainfrom
spec/14-geo-pricing
Draft

Sirajmx wants to merge 2 commits into
mainfrom
spec/14-geo-pricing

Conversation

@Sirajmx

@Sirajmx Sirajmx commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Draft. Do not merge until the working group confirms the disposition of #14.

What this changes

A line item can now be priced by market. geo may declare the selectable structure of § 3.1 — available[] markets, the ones included[] in the base rate, per-market pricing deltas and max_select — so a buyer composing a geo-scoped buy gets the geo-scoped rate without a round trip. A geo that declares only allowed[] is settable, exactly as today. This is part 1 of #14; part 2 (pricing[].guidance) is #19.

Related issue

Refs #14

Type

  • Editorial — no normative effect
  • Normative — changes what the spec requires
  • Breaking — would break an implementation already built to this draft
  • Examples / schema / docs only

Checklist

  • The body section is updated
  • Appendix A (field index) matches the body — geo marker settable → selectable; scripts/check_appendix.py passes
  • Appendix B (fields by marker, and the counts) matches the body — selectable 12 → 13, settable 5 → 4; totals unchanged
  • Any affected example in examples/ is updated and still parses — the audio example is priced by market
  • RFC 2119 keywords used deliberately — MUST / SHOULD / MAY are not synonyms
  • The no-inheritance rule (§ 2) still holds
  • Anything selectable declares available[] and included[]; anything settable declares bounds (§ 3.1, § 3.2)
  • No confidential or commercially sensitive content

Knock-on effects


By opening this pull request I agree my contribution may be published under this
repository's licence, as set out in CONTRIBUTING.md.

A line item whose rate differs by market can declare geo with the
selectable structure of § 3.1: available[], included[], pricing deltas
and max_select. A geo that declares only allowed[] stays settable, so
existing payloads are unchanged. When several priced markets are
selected, the highest delta applies. The audio example is priced by
market.

Refs #14
#14 doesn't say how deltas combine when a buyer selects more than one
priced market, and neither did any comment on it. The earlier commit
said the highest delta applies; that is a design choice nobody
proposed, so it moves to the PR description as a question.

Refs #14
@KonstantinMirin

KonstantinMirin commented Oct 25, 2026 •

Copy link
Copy Markdown

Thanks, @Sirajmx, and @fgranata for #14. Postindustria (IAB Tech Lab member) has three corrections.

  • Deltas. "pricing deltas add to agreed_rate" already decides the multi-market question: it is the sum in step 2 of @VJAlkimi's agreed_rate derivation (#30), which @aleksUIX's pricing fixtures (#117) test. § 3.1 has no combining rule. Our buyer writes PR adds one to § 5.6, so point the bullet there.
  • Marker. § 3 allows one marker per field, and this PR gives geo two. Keep geo settable and give market pricing its own selectable field, markets, as our buyer writes PR does. "A geo MUST NOT declare both" then reads "A line item MUST NOT declare both geo and markets".
  • Codes. Our buyer writes PR keeps geo codes as strings, not the { type, code } objects of @dtbarne's typed geo codes (#58). A code's form shows its kind, and an ISO 3166-2 code names its country, so a string needs no type. A country is ISO 3166-1 alpha-2, such as ID, so the examples change. The PR's OpenRTB 2.6 mapping (§ 1.1) converts it to alpha-3.

Our buyer writes PR carries this PR at its head and makes these corrections. It keeps @fgranata's per-market deltas and this PR's "MUST NOT declare both", in the form above. Could you review it there?

Open questions:

  1. Summed, an Indonesia + Malaysia buyer pays +39.00 on every impression, which is [Change] § 5.6 — Per-geo pricing: selectable geo with price deltas, and pricing[].guidance percentiles alongside floor #14's own scenario. Should a markets delta apply only to impressions in its market, as our break-position change request (#99) asks for pod positions? This belongs on #30.

Revised 2026-11-04: Market pricing moves to its own markets field, countries are alpha-2 strings, and the per-market floor point is dropped. Our buyer writes PR carries this PR with these corrections.

Analyzed and generated with the help of Claude, fully reviewed by me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants