vastlint

What changed between VAST 2.0 and VAST 3.0

VAST 3.0 was released by the IAB in 2012. It added meaningful new capabilities — skippable ads, industry icons, Ad Pods — while keeping full backwards compatibility with VAST 2.0. A valid 2.0 document is also a valid 3.0 document.

AreaChange
New elementsskipoffset, <Icons>, <Pricing>, <Advertiser>, <CreativeExtensions>
New tracking eventsprogress, skip, exitFullscreen, acceptInvitation, adExpand, adCollapse
Ad sequencingAd Pods via sequence attribute on <Ad>
Companion adsrequired attribute on <CompanionAds>
Media filesminBitrate / maxBitrate on <MediaFile>
VPAIDapiFramework="VPAID" on <MediaFile> (VPAID 1.0 / 2.0)

Skippable linear ads

The most visible 3.0 addition. The skipoffset attribute on <Linear> tells the player when to show the skip button. The value is either a time code (HH:MM:SS) or a percentage of duration.

<Linear skipoffset="00:00:05">
  <Duration>00:00:30</Duration>
  <TrackingEvents>
    <Tracking event="skip"><![CDATA[https://track.example.com/skip]]></Tracking>
  </TrackingEvents>
  ...
</Linear>

→ Rule reference: VAST-3.0-skipoffset-format

progress tracking event

VAST 3.0 added the progress tracking event, which fires at an arbitrary playback position rather than only at the standard quartile milestones. The position is set with the offset attribute.

<Tracking event="progress" offset="00:00:10">
  <![CDATA[https://track.example.com/10s]]>
</Tracking>

Industry icons

The <Icons> element allows ad servers to include clickable overlay icons — most commonly the AdChoices triangle — that players must render for the specified duration.

<Icons>
  <Icon program="AdChoices" width="20" height="20" xPosition="right" yPosition="top"
        duration="00:00:30" offset="00:00:00">
    <StaticResource creativeType="image/png">
      <![CDATA[https://example.com/adchoices.png]]>
    </StaticResource>
    <IconClicks>
      <IconClickThrough>
        <![CDATA[https://optout.aboutads.info/?c=2&lang=EN]]>
      </IconClickThrough>
    </IconClicks>
  </Icon>
</Icons>

Ad Pods

Multiple ads can now be sequenced into a single ad break using the sequence attribute on <Ad>. Players must play them in order.

<VAST version="3.0">
  <Ad id="ad1" sequence="1">
    <InLine>...</InLine>
  </Ad>
  <Ad id="ad2" sequence="2">
    <InLine>...</InLine>
  </Ad>
</VAST>

<Pricing> element

Allows the ad server to communicate the price of the ad in the VAST tag itself. Useful for header bidding and auction-based buying.

<Pricing model="CPM" currency="USD">
  <![CDATA[2.50]]>
</Pricing>

<Advertiser> element

A new optional element inside <InLine> to identify the advertiser by name. Useful for competitive separation logic.

<InLine>
  <AdTitle>Brand Campaign</AdTitle>
  <Advertiser>Brand Name Inc.</Advertiser>
  ...
</InLine>

required attribute on <CompanionAds>

The required attribute tells the player whether companion ads are optional or mandatory for display.

<!-- all: player must show all companions -->
<CompanionAds required="all">...</CompanionAds>

<!-- any: player must show at least one companion -->
<CompanionAds required="any">...</CompanionAds>

<!-- none: companions are optional -->
<CompanionAds required="none">...</CompanionAds>

<CreativeExtensions>

A vendor-extension point at the creative level, complementing the existing <Extensions> element at the ad level. Allows custom data to be attached to individual creatives.

New tracking events

EventWhen it fires
skipWhen the user clicks the skip button
progressAt the time offset specified by the offset attribute
exitFullscreenWhen the player leaves fullscreen mode
acceptInvitationWhen the user accepts an invitation to expand the ad
adExpandWhen the ad expands
adCollapseWhen the ad collapses

Migration checklist: VAST 2.0 → 3.0

  • Update version attribute on <VAST> to "3.0"
  • Add skipoffset to skippable <Linear> elements and include a skip tracking event
  • Add <Icons> with AdChoices icon to all linear ads (check your DSP requirements)
  • Set required attribute on <CompanionAds> if companions are mandatory
  • Add sequence attribute to <Ad> elements in ad break positions
  • Replace hardcoded price signals with <Pricing> if used

Validate your VAST 3.0 documents at vastlint.org/validate. Continue to the VAST 3.0 to 4.0 migration guide →