Skip to content

spec(creative): model inline display tags and paired internal redirects #6761

Description

@bokelley

Problem

The AdCP 3.2 display_tag canonical says it covers JavaScript, iframe, and
1x1-redirect delivery, but its default contract has only one required
tag_url URL asset. That is not enough to represent common advertiser-ad-server
exports faithfully:

  • CM360 iframe/JavaScript and JavaScript placement tags are inline markup, not a
    single tag URL.
  • A CM360 Internal Redirect is an atomic pair: an image/ad-request URL and a
    click-through URL, entered separately in Google Ad Manager. Treating the
    image URL as HTML or separating the pair loses the trafficking contract.
  • url-asset-type.json has clickthrough, tracker_pixel, and tracker_script, but
    no invocation mechanism for a display ad request. Meanwhile the canonical
    text asks for a tag URL with an "appropriate url_type" that does not exist.

This makes a conformant implementation choose among incorrect representations:
label inline third-party markup as hosted html5, squeeze a paired redirect
into one URL, or use an undefined extension.

References:

Proposed direction

Keep the portable canonical format_kind: "display_tag". Do not add a
Google-specific canonical kind. Extend the display-tag contract with explicit,
discriminated delivery variants:

  1. tag_url — the existing single-URL contract.
  2. inline_markup — inline iframe/JavaScript/standard tag markup, represented
    by an appropriate typed asset rather than pretending it is a hosted HTML5
    bundle.
  3. paired_redirect — an atomic ad_request_url + clickthrough_url contract.

A GAM seller can then publish a publisher-scoped format option such as
format_option_id: "gam_internal_redirect" under format_kind: "display_tag", with the paired variant required. Other sellers can expose only
the variants they actually traffic.

The WG should decide whether ad_request_url is:

  • a new generic URL invocation type; or
  • a dedicated display-redirect asset that owns the pair atomically.

The latter is safer if separate URL slots could be mixed across rows or
creative revisions.

Required semantics

  • A paired redirect is one creative representation; its URLs cannot be matched
    independently.
  • The format option declares which delivery variants it accepts.
  • Dimensions remain format/placement constraints and can be declared for every
    variant.
  • Macro tokens remain byte-preserved until the declared resolver owns
    substitution; this issue does not define the macro vocabulary.
  • html5 remains reserved for seller-hosted HTML5 bundles, not arbitrary
    third-party tag snippets.

Acceptance criteria

  • display_tag can represent URL, inline-markup, and paired-redirect
    delivery without vendor-specific canonical kinds.
  • The paired form requires both ad-request and click-through URLs and keeps
    them atomic.
  • supported_tag_types (or its replacement) distinguishes all supported
    variants and includes Internal Redirect semantics.
  • Positive examples cover CM360 iframe/JavaScript and GAM Internal
    Redirect.
  • Negative vectors reject half-present pairs and HTML5 misclassification.
  • SDK types, generated schemas, docs, and conformance fixtures agree.

Compatibility

Additive if the existing tag_url representation remains valid. Sellers that
do not advertise the new variants continue unchanged.

Metadata

Metadata

Assignees

No one assigned

    Labels

    claude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.creativeneeds-wg-reviewBlocked on a working-group decision — surface in WG meeting agendasrfcProtocol change — auto-adds to roadmap boardspec / protocol

    Type

    No type

    Projects

    Status
    No status

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions