VPAID → SIMID migration
VPAID (Video Player Ad-Serving Interface Definition) was the industry standard for interactive video ads from 2012 to approximately 2020. It has been deprecated by the IAB Tech Lab and is blocked on virtually every CTV and mobile environment. If your VAST tags still use VPAID, they are silently failing on a large portion of your inventory.
This guide covers why VPAID must be replaced, what to replace it with, and a step-by-step migration path.
VPAID blocking status by platform
| Platform | VPAID status |
|---|---|
| Google IMA SDK (web desktop) | Deprecated — still works but not recommended |
| Google IMA SDK (mobile web) | Blocked |
| Google IMA SDK (Android / iOS) | Blocked |
| Google IMA SDK (tvOS, CTV) | Blocked |
| Roku RAF | Blocked |
| Amazon Fire TV | Blocked |
| Samsung Tizen / LG webOS | Blocked |
| JW Player (web desktop) | Supported but not recommended |
Why VPAID was deprecated
VPAID had significant security and reliability problems that led to its deprecation:
- Full page access — VPAID runs JavaScript with full DOM access to the publisher page. This created significant malvertising and data exfiltration risks.
- Player takeover — VPAID could pause video, modify the player UI, and intercept user input. Publishers had no way to sandbox VPAID behaviour.
- No CTV runtime — VPAID requires a JavaScript engine with DOM access. CTV devices (Roku, Fire TV, SmartTVs) do not support this execution model.
- Flash dependency — VPAID 1.0 was Flash-based. Browser Flash removal broke a large proportion of VPAID inventory.
- Performance overhead — VPAID JavaScript initialization added 200–500ms to ad load time.
What to migrate to
The migration target depends on what your VPAID was doing:
| VPAID use case | Modern replacement |
|---|---|
| Viewability measurement | OMID (Open Measurement) via <Verification> in VAST 4.1+ |
| Interactive overlay (poll, hotspot, carousel) | SIMID via <InteractiveCreativeFile apiFramework="SIMID"> |
| Custom click-through handling | Native VAST <VideoClicks> with <ClickThrough> and <ClickTracking> |
| Custom tracking pixels | Native VAST <TrackingEvents> with standard event URLs |
| Survey or end-card | SIMID for interactive; companion ads for static end cards |
| No interactivity — VPAID used only for measurement | Native MP4 video with OMID <Verification> |
Step 1: Audit your VPAID usage
Before migrating, identify what your VPAID creative is actually doing. Pull a sample VPAID JavaScript file and search for:
- Calls to viewability measurement vendors (MOAT, IAS, DoubleVerify, OMID) — replace with
<Verification> - Custom click redirect logic — replace with
<ClickThrough> - Custom tracking pixel calls — replace with
<TrackingEvents> - DOM manipulation, overlays, interactive elements — replace with SIMID
Step 2: Replace viewability measurement with OMID
If your VPAID was injecting a viewability measurement script, replace it with the VAST 4.1 <Verification> element. All major measurement vendors (MOAT, IAS, DoubleVerify, Nielsen, Comscore) now support OMID.
<!-- VPAID (old) — don't do this -->
<MediaFile apiFramework="VPAID" type="application/javascript"
width="0" height="0">
<![CDATA[https://measure.vendor.com/vpaid.js?params=...]]>
</MediaFile>
<!-- OMID via Verification (new) — VAST 4.1+ -->
<InLine>
...
<AdVerifications>
<Verification vendor="vendor.com-omid">
<JavaScriptResource apiFramework="omid" browserOptional="true">
<![CDATA[https://measure.vendor.com/omid-session.js]]>
</JavaScriptResource>
<VerificationParameters>
<![CDATA[{"sessionId":"abc123","params":"..."}]]>
</VerificationParameters>
</Verification>
</AdVerifications>
...
</InLine>Step 3: Replace interactive overlays with SIMID
If your VPAID rendered an interactive overlay (poll, hotspot, gamification), rebuild it as a SIMID creative. Your HTML file now communicates with the player viapostMessage instead of the VPAID JavaScript API.
<!-- VPAID interactive (old) -->
<MediaFiles>
<MediaFile apiFramework="VPAID" type="application/javascript"
width="640" height="480">
<![CDATA[https://cdn.example.com/vpaid-interactive.js]]>
</MediaFile>
</MediaFiles>
<!-- SIMID interactive (new) — VAST 4.1+ -->
<MediaFiles>
<!-- Video asset is now required separately -->
<MediaFile delivery="progressive" type="video/mp4"
width="1920" height="1080" bitrate="2500">
<![CDATA[https://cdn.example.com/ad-1080p.mp4]]>
</MediaFile>
<!-- SIMID interactive HTML replaces the VPAID JS -->
<InteractiveCreativeFile apiFramework="SIMID" type="text/html">
<![CDATA[https://cdn.example.com/simid-interactive.html]]>
</InteractiveCreativeFile>
</MediaFiles>See the SIMID interactive guide for full details on building the SIMID HTML file and implementing the postMessage protocol.
Step 4: Move tracking to VAST TrackingEvents
Any tracking pixel calls made from VPAID JavaScript should be moved to native VAST <TrackingEvents> URLs. Players fire these automatically at the correct playback milestones — no custom JavaScript needed.
<TrackingEvents>
<Tracking event="start"><![CDATA[https://track.example.com/start]]></Tracking>
<Tracking event="firstQuartile"><![CDATA[https://track.example.com/q1]]></Tracking>
<Tracking event="midpoint"><![CDATA[https://track.example.com/mid]]></Tracking>
<Tracking event="thirdQuartile"><![CDATA[https://track.example.com/q3]]></Tracking>
<Tracking event="complete"><![CDATA[https://track.example.com/complete]]></Tracking>
</TrackingEvents>Step 5: Provide a native video MediaFile
Many VPAID creatives only contained JavaScript and had no video file at all. After migration, your VAST tag must include at least one valid MP4 MediaFile. This is what every CTV player will use — SIMID is optional and supplemental.
Step 6: Declare the correct VAST version
Migration to SIMID and OMID requires VAST 4.1 or higher. Update the version attribute on your root <VAST> element:
<!-- Old -->
<VAST version="2.0">
<!-- New -->
<VAST version="4.2">Migration checklist
- Audit what your VPAID was doing (measurement, interactivity, tracking, clicks)
- Replace viewability measurement with OMID
<Verification> - Replace interactive overlays with SIMID
<InteractiveCreativeFile> - Move tracking pixels to VAST
<TrackingEvents> - Add native MP4 video
<MediaFile>at multiple bitrates - Update
versionto 4.1 or 4.2 - Remove all
apiFramework="VPAID"MediaFile entries - Validate the migrated tag with the VAST validator
- Test on CTV (Roku, Fire TV) where VPAID was previously blocked