Guides

Beacons

Beacons record impressions, clicks, and other ad events. Serving responses include signed tracking URLs for your player or application to call when each event occurs. Impression events determine billable delivery; duplicate events are counted once.

URL format

Connect beacons after your player or renderer can show an ad. They let delivery reports distinguish a returned ad from an impression, playback milestone or click that actually occurred. The URLs below illustrate the format; your application must use the signed URLs from its own serving response.

https://events.acme.example/impression?e=<sealed payload>
https://events.acme.example/complete?e=<sealed payload>
https://events.acme.example/error?e=<sealed payload>&code=[ERRORCODE]

The path identifies the event. The serving cell signs the payload for that decision, and the beacon service verifies it with the tenant's key. Use the URL exactly as returned. Send a GET when the event occurs; the response is a 1×1 pixel or an empty HTTP 200. A VAST player handles these calls, while OpenRTB wrappers and Decision API integrations must send the events they observe.

KindWhen it fires
impressionRecords billable delivery when the ad is shown. Repeated calls with the same key are counted once.
start, firstquartile, midpoint, thirdquartile, completeVideo progress; the VAST document carries them as Tracking events.
clickRecords a click through ClickTracking or click_url. The creative’s landing-page URL opens the destination.
nurl, burlOpenRTB win and billing notices when a buyer's bid wins; the platform fires them, a wrapper does not.
errorThe VAST Error URL with the [ERRORCODE] macro; feeds the error-rate diagnostics.
breakstart, breakendAd-pod boundaries for server-side pods.
stitched_impressionThe impression as seen by a stitching (SSAI) session.
viewable, not_viewableViewability outcomes from the player or a verification vendor.
player_skipThe viewer skipped the ad.
companion_viewA companion ad was displayed (once per companion).

Idempotency and timing

Each event has a stable key derived from the decision and event kind, so duplicate player callbacks count once. The tenant and placement settings determine the delivery window. Events received after that window are recorded but are not billed. Accepted events update delivery reports, live counters, and the decision funnel.

Conversions and user sync

The same service hosts /conversion (attribution from your site or app, also available in bulk through the admin API's conversion ingest) and the user-sync pair /sync and /setuid, gated by the privacy signals the request carried.

Connect delivery notifications

Use webhooks to send recorded delivery events to another application. The measurement guide explains how to compare player events with reports.