VASTlint

Pause ads in VAST XML

A pause ad renders when the viewer stops playback. It is the most widely deployed of the six CTV Ad Portfolio formats, and the one with the cleanest premise: the viewer chose the moment, nothing is being interrupted, and the screen is otherwise showing a frozen frame.

Structurally a pause ad is a <NonLinear> creative. That element used to carry a static image and nothing else. Since the CTV Ad Portfolio work it carries a <MediaFiles> container, so a pause ad can be an MP4, a still, or an interactive unit with a fallback.

Quick reference

VAST element<NonLinear> inside <NonLinearAds>
Declare version4.2 or 4.3. Not 4.4
plcmt5
playbackmethod8 (sound on) or 9 (sound off)
pos7 fullscreen, 8 partial screen
attr21 static, 22 cinemagraph, 23 full motion

A minimal pause ad

<VAST version="4.2" xmlns="http://www.iab.com/VAST">
  <Ad id="pause-1">
    <InLine>
      <AdSystem version="1.0">My Ad Server</AdSystem>
      <AdTitle>Pause takeover</AdTitle>
      <AdServingId>a7f3-pause-0001</AdServingId>
      <Impression><![CDATA[https://track.example.com/imp]]></Impression>
      <Creatives>
        <Creative id="c1">
          <UniversalAdId idRegistry="Ad-ID">PAUSE1234</UniversalAdId>
          <NonLinearAds>
            <NonLinear width="1920" height="1080">
              <Duration>00:00:15</Duration>
              <MediaFiles>
                <MediaFile delivery="progressive" type="video/mp4" width="1920" height="1080">
                  <![CDATA[https://cdn.example.com/pause.mp4]]>
                </MediaFile>
              </MediaFiles>
              <NonLinearClickThrough><![CDATA[https://brand.example.com/offer]]></NonLinearClickThrough>
              <NonLinearClickTracking><![CDATA[https://track.example.com/click]]></NonLinearClickTracking>
            </NonLinear>
            <TrackingEvents>
              <Tracking event="creativeView"><![CDATA[https://track.example.com/view]]></Tracking>
              <Tracking event="overlayViewDuration"><![CDATA[https://track.example.com/duration]]></Tracking>
            </TrackingEvents>
          </NonLinearAds>
        </Creative>
      </Creatives>
      <Extensions>
        <Extension type="plcmt" ext="adcom"><plcmt>5</plcmt></Extension>
        <Extension type="pos" ext="adcom"><pos>7</pos></Extension>
        <Extension type="playbackmethod" ext="adcom"><playbackmethod>9</playbackmethod></Extension>
        <Extension type="attr" ext="adcom"><attr>23</attr></Extension>
      </Extensions>
    </InLine>
  </Ad>
</VAST>

Duration is not optional in practice

The schema keeps <Duration> optional on <NonLinear>, with a specific carve-out: a static image used for pause may genuinely have no known duration at response time, and the publisher expresses it in the bid request instead.

A video MediaFile has a known duration by definition. Ship one without a Duration and the ad renders while your measurement stack sees nothing, because quartile and overlayViewDuration tracking have no timeline to sit on. VASTlint reports VAST-4.4-nonlinear-video-no-duration for exactly this case.

Sound is a signal, not a default

Pause placements split into sound-on and sound-off environments, and the split is a publisher decision that varies by app and by device. The portfolio gives each its own playback method: 8 for pause with sound on, 9 for pause with sound off.

The creative has to work in the declared mode. A sound-off pause ad whose message depends on a voiceover is a delivered impression and a wasted one, and no validator will tell you that. A validator will tell you when the declared playback method contradicts the format, which VASTlint reports as VAST-4.4-adcom-playbackmethod-format-mismatch.

Static, cinemagraph, or full motion

The three motion attributes are the most commercially loaded part of the whole portfolio. Some pause placements render an MP4 as a frozen frame by design, because motion on a paused screen reads as a glitch. Before the portfolio there was no way to express that: a publisher either accepted video or did not.

attrMeaningTypical use
21Static visual, no perceptible motion even when delivered as a video filePublisher wants a still, DSP delivers MP4
22Limited motion, subtle or localized movement in a static compositionCinemagraph pause creative
23Full-motion video, continuous scene-level motionVideo pause takeover

A publisher blocks what it does not want with battr on the request. The DSP declares what it delivered with attr on the response. Two halves of one check, and a publisher running both can see when they disagree.

Interactive pause units

Pause is the natural home for interactivity, because the viewer is already stopped. The preferred pattern puts the SIMID file inside the NonLinear MediaFiles container alongside a renderable fallback:

<NonLinear width="1920" height="1080">
  <Duration>00:00:15</Duration>
  <MediaFiles>
    <MediaFile delivery="progressive" type="video/mp4" width="1920" height="1080">
      <![CDATA[https://cdn.example.com/pause-fallback.mp4]]>
    </MediaFile>
    <InteractiveCreativeFile type="text/html" apiFramework="SIMID">
      <![CDATA[https://cdn.example.com/pause-simid.html]]>
    </InteractiveCreativeFile>
  </MediaFiles>
</NonLinear>

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.

The older <IFrameResource apiFramework="SIMID"> form still works but is explicitly not recommended for portfolio NonLinear ads, because it conflates the interactive layer with the renderable asset. VASTlint flags it as VAST-4.4-nonlinear-simid-iframe.

Ship the fallback. SIMID support across CTV devices is nowhere near universal, and an interactive-only unit fires the error URI and loses the impression on every device that cannot execute it. That is VAST-4.4-nonlinear-no-renderable-asset, and it is the single most expensive mistake in this format.

Common mistakes checklist

  • Declaring version 4.4. The new NonLinear model is accepted on 4.2 and 4.3, and IAB's own examples ship on 4.2. A strict version gate will reject 4.4.
  • Video MediaFile with no Duration. The ad renders, the measurement does not.
  • Interactive creative with no fallback MediaFile. Silent no-fill across a large share of devices.
  • Signals that describe two formats. A plcmt of 5 with squeezeback geometry in pos is two claims about one ad.
  • Assuming sound. The playback method is a declaration about the environment, not a preference you can override in the creative.
  • Reusing linear tracking assumptions. A NonLinear creative does not fire the linear quartile set by default. Use creativeView and overlayViewDuration, and see the tracking event reference for which events apply where.