vastlint

What changed between VAST 3.0 and VAST 4.0

VAST 4.0 was released by the IAB in 2016 and is the most significant VAST release since 2.0. It introduced mandatory new elements, renamed existing tracking events, restricted wrapper behavior, and laid the groundwork for server-side ad insertion (SSAI) and CTV delivery. It is not fully backwards-compatible with VAST 3.0 — some changes are breaking.

Breaking changes summary

ChangeVAST 3.0VAST 4.0
fullscreen tracking event renamedfullscreenplayerExpand
exitFullscreen tracking event renamedexitFullscreenplayerCollapse
<ClickThrough> in WrapperAllowedRemoved from Wrapper
<UniversalAdId>Did not existRequired in every <Creative>

<UniversalAdId> — new required element

Every <Creative> inside an <InLine> must include at least one <UniversalAdId>. This provides a stable, cross-system identifier for deduplication and frequency capping. It carries the registry name as an attribute and the ID value as text content.

<!-- VAST 4.0 syntax -->
<Creative id="1" sequence="1">
  <UniversalAdId idRegistry="ad-id.org" idValue="ADID-12345678" />
  <Linear>...</Linear>
</Creative>

Note: in VAST 4.1 the idValue attribute was moved to text content. See the VAST 4.0 to 4.1 guide for the corrected syntax.

→ Rule reference: VAST-4.0-universal-ad-id

<ViewableImpression> — viewability tracking

A new element for MRC-compliant viewability tracking. It accepts up to three child URLs fired at different viewability states.

<ViewableImpression id="viewable1">
  <Viewable><![CDATA[https://track.example.com/viewable]]></Viewable>
  <NotViewable><![CDATA[https://track.example.com/not-viewable]]></NotViewable>
  <ViewUndetermined><![CDATA[https://track.example.com/undetermined]]></ViewUndetermined>
</ViewableImpression>

<AdVerifications> — third-party measurement

Enables OMID-compliant third-party verification scripts to be included in the ad tag. Each <Verification> element contains a JavaScript or executable resource.

<AdVerifications>
  <Verification vendor="doubleverify.com-omid">
    <JavaScriptResource apiFramework="omid" browserOptional="false">
      <![CDATA[https://cdn.doubleverify.com/dvtp_src.js]]>
    </JavaScriptResource>
    <VerificationParameters>
      <![CDATA[{"ctx":"12345"}]]>
    </VerificationParameters>
  </Verification>
</AdVerifications>

<InteractiveCreativeFile>

Replaces VPAID as the mechanism for interactive creatives. Used alongside <MediaFile> elements, not as a replacement for them. The player loads the media file normally and passes control to the interactive creative at the appropriate time.

<MediaFiles>
  <MediaFile delivery="progressive" type="video/mp4" width="1280" height="720">
    <![CDATA[https://example.com/video.mp4]]>
  </MediaFile>
  <InteractiveCreativeFile type="text/html" apiFramework="SIMID">
    <![CDATA[https://example.com/interactive.html]]>
  </InteractiveCreativeFile>
</MediaFiles>

<Category>

Allows ad servers to declare the IAB content category of the ad for competitive separation and brand safety.

<Category authority="iabtechlab.com">IAB1</Category>

<Mezzanine>

High-quality source video for server-side transcoding. SSAI providers transcode from the mezzanine to delivery-optimised files rather than re-encoding from a compressed delivery file.

<Mezzanine delivery="progressive" type="video/mp4" width="1920" height="1080"
           codec="H.264" fileSize="52428800">
  <![CDATA[https://example.com/mezzanine.mp4]]>
</Mezzanine>

Renamed tracking events

Two 3.0 tracking events were renamed in 4.0. Using the old names in a 4.0 document is an error.

VAST 3.0 nameVAST 4.0 nameWhen it fires
fullscreenplayerExpandPlayer enters fullscreen or expands
exitFullscreenplayerCollapsePlayer leaves fullscreen or collapses

→ Rule reference: VAST-4.0-tracking-event-fullscreen, VAST-4.0-tracking-event-exit-fullscreen

<ClickThrough> removed from Wrapper

In VAST 4.0 and 4.1, <ClickThrough> was removed from Wrapper <VideoClicks>. Click-through must be defined in the final <InLine>. This was reversed in VAST 4.2.

→ Rule reference: VAST-4.0-wrapper-clickthrough

conditionalAd attribute

A new boolean attribute on <Ad> that signals the ad is a fallback or conditional ad. Players may skip it if another ad in the break was already shown.

<Ad id="fallback1" conditionalAd="true">
  <InLine>...</InLine>
</Ad>

Migration checklist: VAST 3.0 → 4.0

  • Update version attribute on <VAST> to "4.0"
  • Add <UniversalAdId> to every <Creative> in <InLine> (required)
  • Replace fullscreen tracking event with playerExpand
  • Replace exitFullscreen tracking event with playerCollapse
  • Remove <ClickThrough> from Wrapper <VideoClicks>
  • Add <ViewableImpression> for viewability tracking
  • Add <AdVerifications> for OMID measurement vendors
  • Add <Mezzanine> if supporting SSAI transcode workflows
  • Replace VPAID <MediaFile> with <InteractiveCreativeFile> for interactive creatives

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