VASTlint

VAST examples / Wrappers

A <Wrapper> with no <VASTAdTagURI>

VAST 2.01 error0 warningsVAST-2.0-wrapper-vastadtaguri

The scenario

An SSP returned a wrapper to redirect the player to the winning DSP's ad server. A wrapper exists only to point at the next VAST document in the chain via <VASTAdTagURI>; the player resolves that URL to eventually reach an InLine ad.

The broken tag

<VAST version="2.0">
  <Ad id="1">
    <Wrapper>
      <AdSystem>Test</AdSystem>
      <!-- missing VASTAdTagURI -->
      <Impression>https://t.example.com/imp</Impression>
    </Wrapper>
  </Ad>
</VAST>

What the validator reports

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

errorVAST-2.0-wrapper-vastadtaguriIAB VAST 2.0 §2.4line 3

<Wrapper> is missing required <VASTAdTagURI>

Why it breaks

The <Wrapper> includes AdSystem and tracking but is missing <VASTAdTagURI> — the one element that gives the redirect its destination. The spec requires a <VASTAdTagURI> on every Wrapper because without it there is no next document to fetch; the wrapper is a pointer with nothing to point at.

What it costs

The chain dead-ends immediately. The player has nowhere to go, fires the no-ad/error path, and the slot goes unfilled — but all the wrapper-level impression and tracking URLs may still fire, so logs can show 'activity' on an ad that never actually resolved to a creative. That inflates wrapper-level counts while real delivery is zero, masking the failure in reporting.

The fix

Ensure every <Wrapper> contains a <VASTAdTagURI> with the next-hop VAST URL in CDATA. If you are the redirecting system, treat a missing tag URI as a build error before the response leaves your server.

<Wrapper>
  <AdSystem>SSP</AdSystem>
  <VASTAdTagURI><![CDATA[https://dsp.example.com/vast?win=abc]]></VASTAdTagURI>
  <Impression><![CDATA[https://ssp.example.com/imp]]></Impression>
</Wrapper>

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