VAST examples / Deprecated features
Use of the deprecated conditionalAd attribute
VAST 4.10 errors2 warningsVAST-4.0-conditionalad
The scenario
An ad server migrated an older line item into a VAST 4.x workflow by re-exporting it, but the export carried forward the conditionalAd attribute from the legacy 3.0-era template without anyone noticing.
The broken tag
<?xml version="1.0" encoding="UTF-8"?>
<!-- WARNING: VAST-4.0-conditionalad — conditionalAd attribute deprecated as of VAST 4.1 -->
<VAST version="4.1">
<Ad id="ad-001" conditionalAd="true">
<InLine>
<AdSystem>Test</AdSystem>
<AdTitle>Test Ad</AdTitle>
<AdServingId>test-serving-id-001</AdServingId>
<Impression><![CDATA[https://track.example.com/impression]]></Impression>
<Creatives>
<Creative>
<UniversalAdId idRegistry="ad-id.org">TEST-001</UniversalAdId>
<Linear>
<Duration>00:00:30</Duration>
<MediaFiles>
<MediaFile delivery="progressive" type="video/mp4" width="1920" height="1080">
<![CDATA[https://cdn.example.com/video.mp4]]>
</MediaFile>
</MediaFiles>
</Linear>
</Creative>
</Creatives>
</InLine>
</Ad>
</VAST>What the validator reports
Running this tag through vastlint produces the following. The primary failure for this example:
VAST-4.0-conditionaladIAB VAST 4.1 §2.2.1line 4conditionalAd attribute is deprecated as of VAST 4.1
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 13<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 15<MediaFiles> has no <Mezzanine> — ad-stitching servers may reject this tag in CTV/SSAI contexts
Why it breaks
The <Ad> still sets conditionalAd. This attribute was deprecated in VAST 4.0; the spec moved away from it and modern players are not expected to honor it. Leaving it in place is a sign the creative was migrated mechanically rather than rebuilt against the 4.x model, and it signals intent the player will not act on.
What it costs
The deprecated attribute does not produce a clean error, so it slips through casual QA, but it means the ad relies on behavior the 4.x ecosystem no longer guarantees. The conditional intent is silently dropped, which can change how the ad participates in a pod or fallback flow versus what the trafficker expected — a subtle delivery drift that is hard to trace back to a leftover legacy attribute.
The fix
Remove conditionalAd from 4.x documents and express the intended behavior using current pod and fallback mechanics. Treat its presence as a migration smell worth re-checking the rest of the tag for.
<!-- remove the deprecated attribute -->
<Ad id="1" sequence="1">
<InLine>...</InLine>
</Ad>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
- A VPAID creative trafficked to CTV — VAST-4.1-vpaid-apiframework
- VPAID used where SIMID belongs in VAST 4.x — VAST-4.1-vpaid-in-interactive-context
- An InLine ad with no <Impression> element — VAST-2.0-inline-impression
- An InLine ad missing the <AdSystem> element — VAST-2.0-inline-adsystem