Summary
A buyer agent may want to mandate client-side or server-side tracker firing on a campaign — e.g., a brand-safety-sensitive CTV buy where the brand standard requires client-side measurement. AdCP today doesn't have a discoverable way to declare this property or filter products on it.
This issue holds two distinct questions and asks WG to weigh in on both:
- Is this a real, recurring buyer requirement?
- If yes, where does the declaration live?
Origin
Surfaced in #3759 by @coppertop18, who proposed an execution_context enum on the verification asset spanning capabilities, products, and creative manifest. The measurement taxonomy argues verification is outcome-based — buyer commits vendor + threshold + standard via performance_standard, seller is accountable for delivering, path is plumbing — so per-asset execution_context doesn't earn its protocol surface. But @coppertop18 also surfaced a discovery-filter use case the outcome-based contract doesn't cover:
"Do I wanna mandate client-side measurement only, or server-side measurement only? 'Cause that just means I'm not gonna buy certain properties, most likely." — @coppertop18
That use case is the question this issue asks.
Q1: Is it a real business requirement?
Cases where it would matter:
- Brand mandate. Some brand standards require client-side measurement (regulated verticals, certain ad formats, legal/compliance overlays). Buyer needs to filter products before commit.
- Buyer's own attribution pixels. Server-side firing means the buyer's pixel sees the SSAI service's IP/UA, not the user's device — buyers doing first-party identity ops lose that signal.
- Audit transparency. Knowing the delivered path-mix helps buyers learn — paired with the delivery-time partition follow-up.
Cases where it doesn't:
- Outcome-based verification (most cases). The buyer commits to "70% MRC viewability by DV"; the seller is accountable regardless of path. Vendor confidence varies by path — that's the vendor's job to disclose and the buyer's contract with the vendor to govern.
The discovery-filter case is the strongest. WG sense-check welcome: how often does a real brand standard require client-side-only? Recurring v3.x concern or rare enough to defer?
Q2: If yes, where does it go?
Option A — Product-level delivery property
"delivery": { "tracker_firing": "client" | "server" | "mixed" }
One dimension, channel-neutral, discoverable at get_products, clean filter primitive.
Pros: simple, channel-neutral. Cons: coarse — a single product may have heterogeneous firing per event (VAST impression server-side, click client-side).
Option B — Per-tracker on the creative manifest (extends #3051)
{ "event": "impression", "url": "...", "fires": "server" }
Pros: granular truth, lives where trackers live, natural extension of #3051. Cons: doesn't solve discovery — buyers can't filter at get_products without resolving every manifest.
Option C — Both: product summary + per-tracker truth
Product-level delivery.tracker_firing summary (computed by seller) + per-tracker detail in #3051's tracker schema. Buyers filter on the summary; audit and breakdown use the per-tracker truth.
Pros: matches existing capability-summary → contract → manifest-detail pattern. Cons: two surfaces to keep in sync.
Option D — Capability-level (get_adcp_capabilities)
Cons: too coarse — same seller usually has products with materially different paths.
Strawman
If Q1 = yes, Option C matches existing AdCP patterns best. But the prior question is whether the discovery-filter use case is recurring enough to justify the surface.
Out of scope
Related
Summary
A buyer agent may want to mandate client-side or server-side tracker firing on a campaign — e.g., a brand-safety-sensitive CTV buy where the brand standard requires client-side measurement. AdCP today doesn't have a discoverable way to declare this property or filter products on it.
This issue holds two distinct questions and asks WG to weigh in on both:
Origin
Surfaced in #3759 by @coppertop18, who proposed an
execution_contextenum on the verification asset spanning capabilities, products, and creative manifest. The measurement taxonomy argues verification is outcome-based — buyer commits vendor + threshold + standard viaperformance_standard, seller is accountable for delivering, path is plumbing — so per-assetexecution_contextdoesn't earn its protocol surface. But @coppertop18 also surfaced a discovery-filter use case the outcome-based contract doesn't cover:That use case is the question this issue asks.
Q1: Is it a real business requirement?
Cases where it would matter:
Cases where it doesn't:
The discovery-filter case is the strongest. WG sense-check welcome: how often does a real brand standard require client-side-only? Recurring v3.x concern or rare enough to defer?
Q2: If yes, where does it go?
Option A — Product-level delivery property
One dimension, channel-neutral, discoverable at
get_products, clean filter primitive.Pros: simple, channel-neutral. Cons: coarse — a single product may have heterogeneous firing per event (VAST
impressionserver-side,clickclient-side).Option B — Per-tracker on the creative manifest (extends #3051)
{ "event": "impression", "url": "...", "fires": "server" }Pros: granular truth, lives where trackers live, natural extension of #3051. Cons: doesn't solve discovery — buyers can't filter at
get_productswithout resolving every manifest.Option C — Both: product summary + per-tracker truth
Product-level
delivery.tracker_firingsummary (computed by seller) + per-tracker detail in #3051's tracker schema. Buyers filter on the summary; audit and breakdown use the per-tracker truth.Pros: matches existing capability-summary → contract → manifest-detail pattern. Cons: two surfaces to keep in sync.
Option D — Capability-level (
get_adcp_capabilities)Cons: too coarse — same seller usually has products with materially different paths.
Strawman
If Q1 = yes, Option C matches existing AdCP patterns best. But the prior question is whether the discovery-filter use case is recurring enough to justify the surface.
Out of scope
brand.jsonagents[type='measurement']record, not in seller-published declarations.Related