Video advertising represents one of the most technically complex segments of digital advertising. Unlike static display ads, video ads require precise synchronization between the video player, the ad creative, tracking pixels, and interactive elements. The IAB Tech Lab's VAST (Video Ad Serving Template) specification has been the backbone of this ecosystem for over a decade, while the newer SIMID (Secure Interactive Media Interface Definition) addresses the growing need for secure, standardized player-ad communication.

VAST Version History

VersionYearKey Additions
VAST 2.02012Standardized XML ad response format. Linear and nonlinear ad types. Basic tracking events (impression, start, midpoint, complete).
VAST 3.02012Ad pods and ad breaks. VPAID 2.0 integration for interactive ads. Companion ads. Error handling and verification support.
VAST 4.02016Universal ad ID (Ad-ID). Ad verification via OpenRTB and OM SDK. Conditional ad requests. Improved ad category support.
VAST 4.12018Interactive creative files. Mezzanine file support. Icon viewability requirements. Enhanced error reporting.
VAST 4.22021Native support for SIMID. Updated media file delivery requirements. Enhanced CTV/streaming support. Improved closed caption and subtitle handling.

VAST Tag Structure

A VAST tag is an XML document that describes one or more video ads. The top-level element is <VAST>, which contains one or more <Ad> elements. Each ad can be either inline (containing the full creative details) or a wrapper (pointing to another VAST tag for further resolution).

<VAST version="4.2">
  <Ad id="ad-12345">
    <InLine>
      <AdSystem version="2.0">NexBids Ad Server</AdSystem>
      <AdTitle>Summer Sale Campaign</AdTitle>
      <Category authority="IAB">IAB-11</Category>
      <Impression id="imp-1">
        <![CDATA[https://tracker.example.com/impression?id=12345]]>
      </Impression>
      <Creatives>
        <Creative id="creative-1" adId="ad-12345">
          <UniversalAdId idRegistry="Ad-ID">
            ABCD1234
          </UniversalAdId>
          <Linear>
            <Duration>00:00:30</Duration>
            <TrackingEvents>
              <Tracking event="start">
                <![CDATA[https://tracker.example.com/start?id=12345]]>
              </Tracking>
              <Tracking event="firstQuartile">
                <![CDATA[https://tracker.example.com/q1?id=12345]]>
              </Tracking>
              <Tracking event="midpoint">
                <![CDATA[https://tracker.example.com/mid?id=12345]]>
              </Tracking>
              <Tracking event="thirdQuartile">
                <![CDATA[https://tracker.example.com/q3?id=12345]]>
              </Tracking>
              <Tracking event="complete">
                <![CDATA[https://tracker.example.com/complete?id=12345]]>
              </Tracking>
            </TrackingEvents>
            <MediaFiles>
              <MediaFile delivery="progressive"
                type="video/mp4"
                width="1920" height="1080"
                bitrate="5000">
                <![CDATA[https://cdn.example.com/ad-1080p.mp4]]>
              </MediaFile>
              <MediaFile delivery="streaming"
                type="application/x-mpegURL">
                <![CDATA[https://cdn.example.com/ad-hls.m3u8]]>
              </MediaFile>
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>

Wrapper Tags and Ad Chains

VAST supports chained ad resolution through wrapper tags. A wrapper contains a <VASTAdTagURI> element that points to another VAST server, which in turn returns another wrapper or an inline response. This mechanism enables ad mediation and waterfall resolution:

VAST 4.2 recommends limiting wrapper chains to three levels to prevent excessive latency. Each additional wrapper adds network round-trips that delay ad playback.

Tracking Events

VAST defines a comprehensive set of tracking events that fire at specific moments during ad playback. These events enable advertisers to measure viewability, engagement, and completion rates.

EventWhen It FiresCommon Use
impressionWhen the ad begins rendering (video) or becomes visible (display companion)Impression counting, billing
startFirst frame of video is playedVideo start measurement
firstQuartile25% of video duration has playedEngagement measurement
midpoint50% of video duration has playedEngagement measurement
thirdQuartile75% of video duration has playedEngagement measurement
completeVideo plays to endCompletion rate
mute / unmuteUser toggles audioEngagement signals
pause / resumeUser pauses or resumes playbackInteraction tracking
fullscreenUser enters fullscreen modeEngagement signal
skipUser skips the ad (if allowed)Skip rate measurement
creativeViewNon-linear companion ad is renderedCompanion impression

Offset-Based Tracking

In addition to predefined events, VAST 4.x supports offset-based tracking, which fires at specific time offsets or percentage points in the video:

<Tracking event="progress" offset="00:00:05">
  <![CDATA[https://tracker.example.com/5sec?id=12345]]>
</Tracking>
<Tracking event="progress" offset="50%">
  <![CDATA[https://tracker.example.com/halfway?id=12345]]>
</Tracking>

SIMID: Secure Interactive Media Interface Definition

SIMID is the modern replacement for VPAID (Video Player-Ad Interface Definition). While VPAID enabled interactive video ads, it had significant security and performance problems: VPAID creatives ran with full access to the publisher's page, creating security vulnerabilities and allowing ads to interfere with the player or content.

SIMID vs. VPAID

AspectVPAIDSIMID
CommunicationDirect function calls (tight coupling)Message-based postMessage API (loose coupling)
SecurityAd runs in same context as pageAd runs in sandboxed iframe
Player controlAd can take over the playerAd requests player actions via messages
Creative formatJavaScript (SWF deprecated)HTML5 with JavaScript
Timeout handlingNo standard timeout mechanismBuilt-in timeout and error recovery
PerformanceCan degrade page performanceSandboxed, limited impact
StandardIAB (deprecated)IAB Tech Lab (active, recommended)

SIMID Protocol Flow

SIMID uses a bidirectional message-passing protocol between the player and the ad creative, both running in separate contexts:

  1. Player loads ad iframe: The player creates a sandboxed iframe and loads the SIMID creative.
  2. Creative initializes: The creative sends a simid:init message to the player, declaring its capabilities and requirements.
  3. Player acknowledges: The player responds with simid:ack, confirming initialization.
  4. Playback begins: The player sends simid:play to start the ad. The creative renders its media file.
  5. Interactive events: The creative sends messages like simid:resize, simid:requestFullScreen, or simid:navigate to request player actions.
  6. Player events: The player sends messages like simid:pause, simid:resume, or simid:stop to control ad state.
  7. Completion: When the ad finishes, the creative sends simid:complete and the player transitions to content.
// SIMID message example: Ad requesting fullscreen
// From ad creative (iframe) to player (parent window)
const message = {
  type: 'simid:requestFullScreen',
  args: ,
  messageId: 'msg-001'
};
window.parent.postMessage(
  JSON.stringify(message),
  'https://publisher.com'
);

// Player responds
window.addEventListener('message', (event) => {
  const msg = JSON.parse(event.data);
  if (msg.type === 'simid:requestFullScreen') {
    // Handle fullscreen request
    player.requestFullscreen();
    event.source.postMessage(JSON.stringify({
      type: 'simid:response',
      messageId: msg.messageId,
      success: true
    }), event.origin);
  }
});

Verification and OM SDK Integration

VAST 4.x supports integration with the Open Measurement SDK (OM SDK) for standardized viewability and verification tracking. The <AdVerifications> element in the VAST response declares which verification vendors should be loaded:

<AdVerifications>
  <Verification vendor="moat.com">
    <JavaScriptResource apiFramework="omid">
      <![CDATA[https://moat.com/verify.js]]>
    </JavaScriptResource>
    <TrackingEvents>
      <Tracking event="verificationNotExecuted">
        <![CDATA[https://moat.com/notexec?id=12345]]>
      </Tracking>
    </TrackingEvents>
  </Verification>
</AdVerifications>

When the player loads a VAST response with AdVerifications, it initializes the OM SDK and passes the verification scripts the context they need to measure viewability, brand safety, and other metrics without requiring proprietary vendor SDKs.

Implementation Best Practices

For Ad Servers

For Video Players

For Creative Developers

The Future of Video Ad Standards

The IAB Tech Lab continues to evolve video ad standards in response to industry shifts toward CTV (Connected TV), streaming, and interactive formats. Key areas of development include enhanced server-side ad insertion (SSAI) support, standardized ad pod management for live streaming, and integration with privacy frameworks like TCF 2.2 for consent-aware ad serving in video environments.