VASTlint

VAST examples / Pricing & metadata

A <BlockedAdCategories> with no authority attribute

VAST 4.10 errors1 warningVAST-4.1-blockedadcategories-no-authority

The scenario

A premium publisher used a wrapper to forward an ad opportunity to an SSP, while signalling that certain ad categories were blocked on this placement — for example excluding a competing advertiser's category next to sponsored content. The block travels in <BlockedAdCategories>.

The broken tag

<?xml version="1.0" encoding="UTF-8"?>
<!-- WARNING: VAST-4.1-blockedadcategories-no-authority — <BlockedAdCategories> missing authority attribute -->
<VAST version="4.1">
  <Ad id="ad-001">
    <Wrapper>
      <AdSystem>Test</AdSystem>
      <Impression><![CDATA[https://track.example.com/impression]]></Impression>
      <VASTAdTagURI><![CDATA[https://ad.example.com/vast.xml]]></VASTAdTagURI>
      <!-- BlockedAdCategories present but missing the authority attribute -->
      <BlockedAdCategories>IAB25 IAB26</BlockedAdCategories>
    </Wrapper>
  </Ad>
</VAST>

What the validator reports

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

warningVAST-4.1-blockedadcategories-no-authorityIAB VAST 4.1 §2.3.2line 10

<BlockedAdCategories> should have an authority attribute to identify the taxonomy

Why it breaks

The <BlockedAdCategories> element carries category codes but no authority attribute. As with <Category>, the authority names the taxonomy those codes belong to, and VAST 4.x requires it because a bare code cannot be interpreted without knowing its classification system. A downstream SSP or DSP receiving an unscoped block list cannot map the codes to real categories to enforce.

What it costs

The block silently fails to apply. The publisher believes it has excluded a category, but the demand side cannot resolve the codes, so a blocked advertiser can still win the impression and render next to content the publisher meant to protect. That is a direct brand-safety and competitive-separation breach — exactly the outcome the block was supposed to prevent.

The fix

Add the authority attribute pointing at the taxonomy the codes belong to, and use codes that exist in it. Keep the authority consistent with what your supply partners enforce against.

<BlockedAdCategories authority="iabtechlab.com">
  <![CDATA[IAB7,IAB14]]>
</BlockedAdCategories>

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