VASTlint

VAST tracking events / Linear

midpoint VAST tracking event

Short answer: Fires when linear playback reaches 50 percent of Duration.

When it fires

The playhead has reached half of the declared Duration. Ship it with the rest of the quartile set even when nobody reads the middle value, so reporting can split stall from skip from completion.

What the middle beacon is for

midpoint fires at half of Duration. On its own it is rarely a KPI. Next to firstQuartile and thirdQuartile it locates where playback stopped. start plus midpoint and no thirdQuartile is a drop in the third quarter. start plus skip and no midpoint means the skip control, or an exit, won before half the declared length.

The beacon has been valid on Linear since VAST 2.0. It is not valid on NonLinear or Companion. A pause ad that carries midpoint is measuring a playhead the overlay does not have.

Duration mismatches move the beacon

Half of a wrong Duration is a wrong clock. A mezzanine that is 20 seconds inside a tag that declares 00:00:30 reaches midpoint only if the player uses the element, and it never reaches it if the player ends at the file and the element said 30. Check Duration against the media before you debug the URL.

A silent midpoint with healthy neighbors

If start and complete both fire and midpoint does not, the URL is the problem: the element is missing, misspelled, on the wrong container, or the endpoint is dropping that one path. The playhead did cross half of Duration, because complete is past that point. Do not resize the media file for that pattern.

If start fires and everything after midpoint is empty, including complete and skip, the viewer or the stream stopped in the second half. The midpoint URL can be healthy and simply be the last beacon. Confirm with one impression in the tester event log before you add duplicate midpoint elements.

When the column stays empty

midpoint 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 midpoint 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+
YesYesYesYes

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