VASTlint

VAST examples / OMID / verification

An OMID <Verification> with no vendor attribute

VAST 4.11 error1 warningVAST-4.1-verification-vendor

The scenario

A brand bought CTV inventory with third-party viewability and IVT (invalid-traffic) measurement via Open Measurement (OMID). The verification vendor's script is delivered inside <AdVerifications> so the player can load it in a measurement sandbox alongside the ad.

The broken tag

<?xml version="1.0" encoding="UTF-8"?>
<VAST version="4.1">
  <Ad id="1">
    <InLine>
      <AdSystem>Test AdServer</AdSystem>
      <AdTitle>Test Ad</AdTitle>
      <AdServingId>TEST-SERVING-ID-001</AdServingId>
      <Impression><![CDATA[https://example.com/impression]]></Impression>
      <Creatives>
        <Creative>
          <UniversalAdId idRegistry="ad-id.org">TEST-1234</UniversalAdId>
          <Linear>
            <Duration>00:00:30</Duration>
            <MediaFiles>
              <MediaFile delivery="progressive" type="video/mp4" width="1920" height="1080">
                <![CDATA[https://example.com/video.mp4]]>
              </MediaFile>
            </MediaFiles>
          </Linear>
        </Creative>
      </Creatives>
      <AdVerifications>
        <!-- Verification missing required vendor attribute -->
        <Verification>
          <JavaScriptResource apiFramework="omid" browserOptional="false">
            <![CDATA[https://verificationvendor.com/omid.js]]>
          </JavaScriptResource>
        </Verification>
      </AdVerifications>
    </InLine>
  </Ad>
</VAST>

What the validator reports

Running this tag through vastlint produces the following. The primary failure for this example:

errorVAST-4.1-verification-vendorIAB VAST 4.1 §3.17line 24

<Verification> is missing required vendor attribute

The same tag also surfaces these secondary findings — real tags rarely fail in isolation:

warningVAST-2.0-linear-tracking-quartilesIAB VAST 4.1 §3.14.2line 12

<Linear> has no standard quartile tracking events (start/firstQuartile/midpoint/thirdQuartile/complete) — ad will serve but measurement system receives no signal

infoVAST-4.1-mezzanine-recommendedIAB VAST 4.1 §3.9.2line 14

<MediaFiles> has no <Mezzanine> — ad-stitching servers may reject this tag in CTV/SSAI contexts

Why it breaks

The <Verification> element provides a JavaScriptResource but no vendor attribute. In VAST 4.1+ the vendor attribute identifies which measurement provider the verification resource belongs to, and it is required. Players and OM SDK implementations key sessions and reporting on the vendor; an unattributed verification node cannot be routed to the right measurement provider.

What it costs

The verification script may load but its data cannot be attributed, or strict players drop the node entirely — either way the third-party viewability and IVT numbers the buyer is paying for do not arrive. The campaign appears to deliver, but the independent measurement that underpins billing guarantees and brand-safety reporting is missing, which can void make-good terms.

The fix

Add the vendor attribute to every <Verification>, set to the measurement provider's registered vendor key. Include the required resource (JavaScriptResource for OMID) and verification tracking events.

<Verification vendor="measureco.com-omid">
  <JavaScriptResource apiFramework="omid" browserOptional="true">
    <![CDATA[https://verify.example.com/omid.js]]></JavaScriptResource>
  <TrackingEvents>
    <Tracking event="verificationNotExecuted"><![CDATA[https://verify.example.com/ne]]></Tracking>
  </TrackingEvents>
</Verification>

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.

Check your own version of this tag

Paste the resolved XML to run the same spec check, test a live tag URL, or inspect the wrapper chain hop by hop.

Related examples

Related reading