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
| Change | VAST 3.0 | VAST 4.0 |
|---|---|---|
fullscreen tracking event renamed | fullscreen | playerExpand |
exitFullscreen tracking event renamed | exitFullscreen | playerCollapse |
<ClickThrough> in Wrapper | Allowed | Removed from Wrapper |
<UniversalAdId> | Did not exist | Required 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 name | VAST 4.0 name | When it fires |
|---|---|---|
fullscreen | playerExpand | Player enters fullscreen or expands |
exitFullscreen | playerCollapse | Player 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
versionattribute on<VAST>to"4.0" - Add
<UniversalAdId>to every<Creative>in<InLine>(required) - Replace
fullscreentracking event withplayerExpand - Replace
exitFullscreentracking event withplayerCollapse - 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 →