VASTlint

VAST tracking events / Linear

firstQuartile VAST tracking event

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

When it fires

The playhead has reached one quarter of the declared Duration. A gap from start to firstQuartile usually means the media file stalled. A tag with an impression and no quartiles cannot tell a played ad from a fetched one.

The clock is Duration, not the file

firstQuartile fires when the playhead reaches 25 percent of the Duration element. A 30-second Duration means the beacon is due at 7.5 seconds of playback. If Duration says 00:00:15 and the file is 30 seconds, the beacon fires at the declared quarter, halfway through the file. If Duration is missing, players that schedule quartiles from the XML have nothing to schedule against, and the media can still play.

A gap from start to firstQuartile, with complete also missing, is a stall or an exit in the first quarter. A skipoffset of 5 seconds on a 15-second ad sits before this beacon, so a skip-heavy placement shows start and skip and an empty firstQuartile. That is the control being used, not a broken quartile URL.

The quartile set is one instrument

firstQuartile, midpoint, thirdQuartile, and complete are one set. Shipping the impression and start without them leaves a report that cannot separate a stall in the first quarter from a skip at the end. The names have been in the linear set since VAST 2.0.

progress with offset="25%" fires at the same moment and is a separate event, added in VAST 3.0. A tag can carry both. They are two URLs, and a vendor that only listens for one of them will show a hole the player did fill.

When the column stays empty

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