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:
VAST-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:
VAST-2.0-version-mismatchIAB VAST 2.0 §2.1VAST 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
- A <Companion> banner with no width or height — VAST-2.0-companion-dimensions
- A <Companion> with an invalid renderingMode — VAST-4.1-companion-renderingmode-value
- An InLine ad with no <Impression> element — VAST-2.0-inline-impression
- An InLine ad missing the <AdSystem> element — VAST-2.0-inline-adsystem