VASTlint
Back to blog
Open Measurement/8 min read

A pause, menu, or overlay tag can declare OMID and still schedule linear quartiles the CTV SDK never fires.

NonLinear pause, menu, and overlay creatives are measured with creativeView and overlayViewDuration. A tag that also lists firstQuartile, and that omits verificationNotExecuted, still parses. Android TV and tvOS OM SDK builds may skip the JavaScriptResource when browserOptional is set, and the miss stays silent.

Author

Alex Sekowski

Published

November 14, 2026

Reading time

8 min read

OMIDCTVPause adsVASTVerification

The November 10, 2026 OM SDK expansion is already written up as an exchange problem: the player session can measure a creative the gateway rewrote before OM started. That note is OM SDK for pause and overlay CTV. This one is the tag the buyer uploads before any wrapper runs.

Pause, menu, and overlay units in the CTV Ad Portfolio are NonLinear. The events that describe them are creativeView and overlayViewDuration. A document that also lists firstQuartile, midpoint, and complete under NonLinearAds still parses. Those pixels belong on a Linear creative. The portfolio player does not schedule them for the overlay, so the endpoints stay at zero while the Impression bills.

The same tag often adds an OMID JavaScriptResource because the November 10 release named those formats. Declaring the script is not the same as learning that the SDK skipped it. verificationNotExecuted lives on the Verification node, and the tracker should carry the [REASON] macro. Leave it off and a native build that never runs the script looks like a clean session with empty quartile logs.

What the portfolio player actually schedules

The Netflix pause note is the creative shape: NonLinear width and height, creativeView, overlayViewDuration, and Duration when the asset is video rather than a still. Menu and screensaver units use the same split between a linear progress clock and an overlay dwell clock. Copying a mid-roll tracking block into the pause tag does not move the player onto the linear clock.

OMID does not move those events either. The verification script reports the session through OM SDK. Quartile URLs under NonLinearAds are a second contract the overlay path does not fire. A trafficker who pastes the mid-roll Linear events, then adds AdVerifications so the tag matches the release, ships both. Only the overlay events and the verification resource are in the path the SDK runs.

Pause tag that names OMID and still lists linear quartiles
xml
<VAST version="4.2" xmlns="http://www.iab.com/VAST">  <Ad id="pause-441">    <InLine>      <AdSystem version="1.0">Buyer Ad Server</AdSystem>      <AdTitle>Pause with OMID</AdTitle>      <Impression><![CDATA[https://buyer.example/imp?deal=pause-441]]></Impression>      <AdVerifications>        <Verification vendor="measurement.example.com-omid">          <JavaScriptResource apiFramework="omid" browserOptional="true">            <![CDATA[https://cdn.measurement.example.com/omid.js]]>          </JavaScriptResource>        </Verification>      </AdVerifications>      <Creatives>        <Creative id="c1">          <NonLinearAds>            <NonLinear width="1920" height="1080">              <StaticResource creativeType="image/jpeg">                <![CDATA[https://cdn.buyer.example/pause.jpg]]>              </StaticResource>            </NonLinear>            <TrackingEvents>              <Tracking event="creativeView"><![CDATA[https://buyer.example/track?e=view]]></Tracking>              <Tracking event="firstQuartile"><![CDATA[https://buyer.example/track?e=q1]]></Tracking>              <Tracking event="complete"><![CDATA[https://buyer.example/track?e=done]]></Tracking>            </TrackingEvents>          </NonLinearAds>        </Creative>      </Creatives>    </InLine>  </Ad></VAST>

apiFramework on that resource is omid, lowercase. Vendor snippets still ship uppercase OMID, and strict parsers reject it. browserOptional true tells a native player it may skip the JavaScriptResource when an OM SDK integration is already in the app. The November 10 release points Android TV and tvOS at the native SDK builds, and Samsung and LG at the HTML5 and web video SDK. One tag sent to both will execute the script on the web-video set and may skip it on the native set.

The sample has no verificationNotExecuted tracker, so the native skip has nowhere to report a reason. The Impression still fires. firstQuartile and complete stay quiet, which looks like a player bug rather than events that were never on the overlay clock. How to validate AdVerifications is the envelope. OMID in VAST is the resource shape, including browserOptional and the [REASON] macro.

Get VAST spec updates, platform guides, and release notes in your inbox.

Signing up means you agree to receive VAST debugging guides and release updates. Privacy.

What to put on the tag instead

  • Keep the still or the video in NonLinear. Do not add a Linear creative to force quartile pixels.
  • Track creativeView. Track overlayViewDuration when the format has a duration to report, and include Duration on a video NonLinear so that beacon has a timeline.
  • Put one Verification per vendor under AdVerifications, with an HTTPS JavaScriptResource and apiFramework omid.
  • Add verificationNotExecuted with the [REASON] macro on that Verification. Do not hang it under NonLinearAds.
  • Set browserOptional only when a native OM SDK integration is actually on the device. A web-video app that skips the script and has no tracker reports nothing.

Check the file the player will parse

Fetch the live URL in the VAST tag tester. If the response is still a wrapper, walk the hops in the VAST inspector. For the OMID handshake on a sample creative, the IAB-style VAST tester is an independent fork, not an IAB Tech Lab product.

vastlint checks the envelope: verification resources, the verificationNotExecuted tracker, and NonLinear shape. It does not certify an OM SDK build, and it does not execute the script. An agent that emits this tag because the release named pause ads still has to pass that check. The exchange rewrite is a separate failure, already covered in the November 11 note.

Lint the pause tag before the SDK session

Paste the XML or fetch the live tag URL. Quartile events on a NonLinear creative and a missing verificationNotExecuted tracker are visible in the document.

Open the VAST tag tester

Sources

The exchange hop that can drop NonLinear shape or AdVerifications before OM starts.

creativeView and overlayViewDuration on a pause unit, instead of the linear quartile set.

Related stories

All posts

Check a tag while you read.

Open a related example, then replace it with your own tag.