VASTlint

VAST examples / SIMID

A SIMID variableDuration with an invalid value

VAST 4.10 errors2 warningsSIMID-1.0-simid-variable-duration-value

The scenario

A brand ran a SIMID unit that could extend its runtime if the viewer engaged with it — a variable-duration interactive ad. The variableDuration flag tells the player and the pod scheduler that the ad may run longer than its base Duration.

The broken tag

<?xml version="1.0" encoding="UTF-8"?>
<!-- Fixture: SIMID InteractiveCreativeFile with invalid variableDuration value
     Expected rule: SIMID-1.0-simid-variable-duration-value (Warning)
     Per SIMID §5, the only valid value is "true". -->
<VAST version="4.1">
  <Ad id="1">
    <InLine>
      <AdSystem>Test AdServer</AdSystem>
      <AdServingId>simid-vardur-test-01</AdServingId>
      <AdTitle>SIMID Variable Duration Test</AdTitle>
      <Impression><![CDATA[https://track.example.com/imp]]></Impression>
      <Creatives>
        <Creative id="1">
          <UniversalAdId idRegistry="ad-id.org">simid-vardur-01</UniversalAdId>
          <Linear>
            <Duration>00:00:30</Duration>
            <MediaFiles>
              <MediaFile delivery="progressive" type="video/mp4" width="1920" height="1080">
                <![CDATA[https://cdn.example.com/ad.mp4]]>
              </MediaFile>
              <!-- variableDuration="yes" is not a valid value (only "true" is allowed) -->
              <InteractiveCreativeFile apiFramework="SIMID" type="text/html" variableDuration="yes">
                <![CDATA[https://creative.example.com/simid.html]]>
              </InteractiveCreativeFile>
            </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:

warningSIMID-1.0-simid-variable-duration-valueIAB SIMID 1.0 §5line 22

<InteractiveCreativeFile apiFramework="SIMID"> variableDuration must be "true" when present per SIMID §5

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 15

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

<MediaFiles> has no <Mezzanine> — ad-stitching servers may reject this tag in CTV/SSAI contexts

Why it breaks

The InteractiveCreativeFile sets variableDuration to a value that is not a valid boolean (true/false). SIMID uses variableDuration as a true/false signal so the player and SSAI scheduler know whether to allow the ad to extend. A non-boolean value leaves that decision undefined; strict consumers reject it and lenient ones guess.

What it costs

Pod scheduling breaks at the edges: if the scheduler cannot tell whether the ad may extend, it either refuses to let an engaging viewer keep interacting (cutting the ad short and losing the engagement the unit was built for) or over-reserves time and leaves dead air in the break. Either way the variable-duration feature — the reason for the SIMID build — does not work as intended.

The fix

Set variableDuration to a valid boolean (true when the ad may extend on engagement, false otherwise), and make sure the base <Duration> reflects the minimum runtime.

<!-- boolean: true | false -->
<InteractiveCreativeFile type="text/html" apiFramework="SIMID" variableDuration="true">
  <![CDATA[https://cdn.example.com/simid/unit.html]]>
</InteractiveCreativeFile>

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