VASTlint

VAST tracking events / Linear

skip VAST tracking event

Short answer: Fires when the user skips a linear ad. Requires skipoffset on Linear. Introduced in VAST 3.0.

When it fires

The skip control was used. Introduced in VAST 3.0. If the tag tracks skip but Linear has no skipoffset, the button never appears and the event never fires. That looks identical in reporting to a tracker that failed.

skip fires only if the player showed a skip control

skip fires when the viewer uses the skip control on a linear ad. VAST 3.0 added the event. VAST 2.0 has no skip event, so a 2.0 player will not call it. From 3.0 on, the control itself comes from the skipoffset attribute on Linear. A Tracking element with no skipoffset is a URL for a button the player never draws.

skipoffset is a timestamp, 00:00:05, or a percentage. A bare 5 is not a legal offset, in the same way a bare 30 is not a legal Duration. The button then does not appear, and skip looks identical in a report to a tracker that 404s. The tester shows whether the control was even offered.

How skip sits next to complete

A skipped view does not also complete. start can be followed by skip and an empty complete, and the quartile that contains the skipoffset may be empty too. On a 30-second ad with skipoffset 00:00:05, firstQuartile is at 7.5 seconds, so many skips happen before it. That pattern is the offset doing what it says.

closeLinear is the linear ad being closed by a close control, which is a different UI from skip. Shipping both is reasonable. Adding their counts and calling the sum skips will overstate the skip control.

The tag that cannot skip

A linear creative with a skip tracker and no skipoffset gives the player nothing to schedule. vastlint flags that combination. The event name can still be spelled correctly.

No skipoffset, so the player has no skip control, and this URL is never requested.

<Linear>
  <Duration>00:00:30</Duration>
  <TrackingEvents>
    <Tracking event="skip"><![CDATA[https://track.example.com/skip]]></Tracking>
  </TrackingEvents>
  <MediaFiles>...</MediaFiles>
</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.

When the column stays empty

skip is absent from VAST 2.0. A player that only implements those versions will not request it. The version table on this page is the set that includes it.

Each wrapper hop may include its own skip 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.03.04.04.1+
NoYesYesYes

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="skip">
      <![CDATA[https://track.example.com/skip]]>
    </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

Related events

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.

Further reading