VASTlint

VAST examples / Companions

A companion <ClickTracking> with no id

VAST 4.21 error1 warningVAST-4.0-companion-clicktracking-id

The scenario

A publisher ran a video-plus-companion package where the companion banner is independently clickable, and both the advertiser and the publisher wanted to track companion clicks separately from the video's clicks for reporting.

The broken tag

<?xml version="1.0" encoding="UTF-8"?>
<!-- ERROR: VAST-4.0-companion-clicktracking-id — <CompanionClickTracking> missing id attribute -->
<VAST version="4.2">
  <Ad id="ad-001">
    <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>
          <CompanionAds>
            <Companion width="300" height="250">
              <StaticResource creativeType="image/png">
                <![CDATA[https://cdn.example.com/companion.png]]>
              </StaticResource>
              <CompanionClickTracking>
                <![CDATA[https://track.example.com/companion-click]]>
              </CompanionClickTracking>
            </Companion>
          </CompanionAds>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>

What the validator reports

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

errorVAST-4.0-companion-clicktracking-idIAB VAST 4.0 §2.3.8line 18

<CompanionClickTracking> is missing required id attribute

The same tag also surfaces these secondary findings — real tags rarely fail in isolation:

warningVAST-2.0-version-mismatchIAB VAST 2.0 §2.1

VAST version attribute does not match structural signals in the document

Why it breaks

The companion's <ClickTracking> element has a URL but no id attribute. VAST 4.x requires an id on companion ClickTracking so each tracking entry is individually identifiable — important when a companion carries several trackers from different parties. Without ids, the entries cannot be reliably distinguished or de-duplicated by consumers.

What it costs

Click attribution for the companion becomes ambiguous: systems that key on the tracker id cannot tell whose tracker fired or collapse duplicates, so companion-click reporting is unreliable and parties dispute the numbers. Because the video ad still tracks normally, the gap shows up only in companion-level analysis, where it quietly corrupts the data.

The fix

Add a unique id to every companion <ClickTracking> (and to companion tracking events generally). Keep ids stable so reporting can attribute each tracker to its owner.

<CompanionClickTracking id="pub-1">
  <![CDATA[https://pub.example.com/companion-click]]>
</CompanionClickTracking>

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