Skip to content

AdCP 3.3: pixel_tracker playback events; never downgrade them to impression_tracker #1643

Closed

Description

@bokelley

Spec

The pixel_tracker event enum gains start, first_quartile, midpoint, third_quartile and complete for video_hosted and audio_hosted. Migration guide §Hosted video and audio playback trackers (tag v3.3.0-beta.0):

  • To 3.2 sellers (not negotiating 3.3), the buyer sends each as event: custom with custom_event_name set to the 3.3 value. An SDK MAY do this rewrite itself.
  • Downgrade to 3.0.x (tracker_pixel v1 shape): drop these trackers, including the event: custom interim form, emit PIXEL_TRACKER_LOSSY_DOWNGRADE, and never emit them as impression_tracker, because a quartile URL fired at impression time counts every impression as a quartile view.

Current state

canonical_formats/pixel_tracker.py maps event=custom to the impression_tracker slot with a loss record. For a custom_event_name in the playback set, that's the miscount the spec forbids.

Work

  • Downgrade: drop playback events and their custom interim form with PIXEL_TRACKER_LOSSY_DOWNGRADE. Part of this can land before regen.
  • 3.3 → 3.2 projection: rewrite playback events to custom (the SDK MAY do this) instead of dropping them.
  • Tests both ways.

Batch: C.

Activity

  1. added
    no-triageSkip the Claude triage bot — human or designated agent will handle this issue
    sdk-10SDK 10 (next branch, AdCP 3.3)
    on Oct 26, 2026
  2. bokelley commented on Nov 2, 2026

    @bokelley
    ContributorAuthor

    Done on next in #1800 (41c39887): 3.3 → 3.2 conversion rewrites playback trackers to event: custom + custom_event_name (loss playback_event_as_custom); the 3.0 drop from #1655 is now fully tested. Docs row in #1814 (7657ac7b). Not backported: SDK 9's downgrade_pixel_tracker still maps the custom interim form to impression_tracker; the fix changes its return contract, so it is not a non-breaking 9.x change.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    no-triageSkip the Claude triage bot — human or designated agent will handle this issuesdk-10SDK 10 (next branch, AdCP 3.3)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions