VAST tracking events / Linear
complete VAST tracking event
Short answer: Fires when linear playback reaches the end of Duration.
When it fires
The creative played through. This is not the same as Impression, start, or creativeView. Completion rate is complete divided by start, not complete divided by impression.
The denominator is start
complete fires when the playhead reaches the end of Duration. Completion rate is that count divided by start. Dividing by impressions treats every fetched or displayed ad as a play that could have finished, and the rate falls for reasons that have nothing to do with the last frame.
skip is a different ending. The skip control ends the ad before Duration, and complete does not also fire for that view. closeLinear is the linear creative being closed. A report that adds complete and skip and closeLinear will pass 100 percent of starts if each view takes exactly one of those exits, and it will not if some views stall with none of them.
When the file ends and the beacon does not
If Duration is longer than the media, the playhead reaches the end of the file first. Players that schedule complete from the element wait for a timestamp the file never hits, and the beacon stays silent on a creative the viewer watched to the end of the asset. Match Duration to the file.
complete under NonLinear does not run. Overlay completion is overlayViewDuration plus the creative Duration, from VAST 4.0, or creativeView alone on older documents.
When the column stays empty
complete is in the VAST 2.0 set, and the current version still includes it. An empty column on a current player is not a version mismatch.
Each wrapper hop may include its own complete URL. The player requests every one of them when the event happens, so a chain of four hops produces four calls for one playback. An http URL on an https page is dropped by the browser before the ad server sees a miss. The event name can be right and the scheme can still zero the column.
Where it is valid
| 2.0 | 3.0 | 4.0 | 4.1+ |
|---|---|---|---|
| Yes | Yes | Yes | Yes |
Legal containers: Linear. An event in the wrong container is not a player error. It is a URL nobody calls.
Using it in a tag
Put it in a Linear TrackingEvents block. It is not valid on the other creative types, and a player does not fire a tracker in the wrong container.
<Linear>
<TrackingEvents>
<Tracking event="complete">
<![CDATA[https://track.example.com/complete]]>
</Tracking>
</TrackingEvents>
</Linear>VAST XML fragment only. This excerpt belongs inside a complete VAST document, so standalone validation will fail until it is wrapped in a full <VAST>response.
Related vastlint rules
- VAST-2.0-linear-tracking-quartiles: <Linear> has no standard quartile tracking events — measurement system receives no signal
- VAST-4.1-tracking-event-value: Tracking event attribute not in the valid set for this VAST version
Related events
- start: Fires when linear playback actually begins, first frame rendered.
- thirdQuartile: Fires when linear playback reaches 75 percent of Duration.
- skip: Fires when the user skips a linear ad. Requires skipoffset on Linear.
Check the XML, then confirm the beacons fire
Validate the event names and containers on the document. Test a live URL when the XML is clean and reporting is still empty.