VASTlint

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:

warningVAST-4.0-conditionaladIAB VAST 4.1 §2.2.1line 4

conditionalAd attribute is deprecated as of VAST 4.1

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 13

<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 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

Related reading