VAST examples / OMID / verification
An OMID <Verification> with no resource to load
VAST 4.10 errors2 warningsVAST-4.1-verification-no-resource
The scenario
An advertiser added Open Measurement to an existing CTV creative by inserting an <AdVerifications> block, but the trafficking step that should inject the vendor's script URL was misconfigured, leaving the verification node empty.
The broken tag
<VAST version="4.1">
<Ad id="1">
<InLine>
<AdSystem>Test</AdSystem>
<AdTitle>Test</AdTitle>
<AdServingId>srv-001</AdServingId>
<Impression>https://t.example.com/imp</Impression>
<Creatives>
<Creative>
<UniversalAdId idRegistry="ad-id.org">ABCD1234567</UniversalAdId>
<Linear>
<Duration>00:00:30</Duration>
<MediaFiles>
<MediaFile delivery="progressive" type="video/mp4" width="640" height="360">
https://cdn.example.com/ad.mp4
</MediaFile>
</MediaFiles>
</Linear>
</Creative>
</Creatives>
<AdVerifications>
<Verification vendor="company.com-omid">
<!-- no JavaScriptResource or ExecutableResource -->
</Verification>
</AdVerifications>
</InLine>
</Ad>
</VAST>What the validator reports
Running this tag through vastlint produces the following. The primary failure for this example:
VAST-4.1-verification-no-resourceIAB VAST 4.1 §2.4line 22<Verification> should contain at least one JavaScriptResource or ExecutableResource
The same tag also surfaces these secondary findings — real tags rarely fail in isolation:
VAST-2.0-linear-tracking-quartilesIAB VAST 4.1 §3.14.2line 11<Linear> has no standard quartile tracking events (start/firstQuartile/midpoint/thirdQuartile/complete) — ad will serve but measurement system receives no signal
VAST-4.1-mezzanine-recommendedIAB VAST 4.1 §3.9.2line 13<MediaFiles> has no <Mezzanine> — ad-stitching servers may reject this tag in CTV/SSAI contexts
Why it breaks
The <Verification> node names a vendor but contains no JavaScriptResource (or ExecutableResource). A verification node exists precisely to tell the player what measurement code to load; with no resource there is nothing to execute. The OM SDK has no script to run in its sandbox, so the verification is a no-op even though the structure looks present.
What it costs
This is a subtle failure: the creative passes a superficial check because <AdVerifications> and <Verification> exist, yet zero measurement actually happens. Viewability and IVT reporting come back empty or absent, and the discrepancy is often blamed on the publisher or player before anyone notices the verification node never carried a resource. Make-good and billing disputes follow.
The fix
Ensure every <Verification> contains the vendor's resource — a JavaScriptResource for OMID web/CTV — plus the appropriate verification tracking events. Validate after trafficking, not just after creative build, since this is where injection fails.
<Verification vendor="measureco.com-omid">
<JavaScriptResource apiFramework="omid" browserOptional="true">
<![CDATA[https://verify.example.com/omid.js]]></JavaScriptResource>
</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
- An OMID <Verification> with no vendor attribute — VAST-4.1-verification-vendor
- An OMID <JavaScriptResource> with no apiFramework — VAST-4.1-js-resource-apiframework
- An InLine ad with no <Impression> element — VAST-2.0-inline-impression
- An InLine ad missing the <AdSystem> element — VAST-2.0-inline-adsystem