VAST XML for Google Ad Manager
Google Ad Manager (GAM) is the dominant ad server for premium publishers globally. It serves VAST tags to players via the Google IMA SDK and handles VAST trafficking, wrapper resolution, and creative approval. This guide covers what your VAST tag must look like to traffic and deliver successfully in GAM — including the complete reference for VAST tag URL parameters.
Quick reference
| VAST versions served | 2.0, 3.0, 4.0, 4.1, 4.2, 4.3 |
| VPAID | Deprecated since 2022. Avoid for new campaigns. |
| Wrapper chain limit | 4 hops total; your tag gets 3 (GAM uses 1) |
| Creative asset URLs | HTTPS required |
| UniversalAdId | Required for frequency capping across screens |
GAM adds a wrapper layer
When you traffic a third-party VAST tag in GAM, GAM wraps it in its own VAST wrapper. This means that by the time a player (running IMA SDK) receives the tag, there is already one wrapper hop consumed. The IMA SDK limit is 4 hops total, so your third-party tag must resolve within 3 additional hops.
If you are trafficking a redirect that itself points to a programmatic SSP which adds more wrappers, you may be at or over the limit before the inline ad is reached.
VPAID deprecation
Google officially deprecated VPAID in GAM in 2022. While VPAID creatives can still be trafficked in some GAM configurations, Google's ad serving infrastructure and IMA SDK actively block VPAID on mobile, CTV, and a growing share of web inventory. New campaigns should use native video creatives with OMID <Verification> blocks for third-party measurement.
<!-- Modern approach: native video + OMID verification -->
<InLine>
<AdVerifications>
<Verification vendor="doubleverify.com-omid">
<JavaScriptResource apiFramework="omid" browserOptional="true">
<![CDATA[https://cdn.doubleverify.com/dvtp_src.js]]>
</JavaScriptResource>
</Verification>
</AdVerifications>
<Creatives>
<Creative>
<Linear>
<MediaFiles>
<MediaFile type="video/mp4" width="1920" height="1080"
bitrate="4500" delivery="progressive">
<![CDATA[https://cdn.example.com/ad.mp4]]>
</MediaFile>
</MediaFiles>
</Linear>
</Creative>
</Creatives>
</InLine>VAST tag URL parameters
GAM VAST tags are URLs with query parameters sent to pubads.g.doubleclick.net/gampad/ads. Getting these parameters right is critical for ad serving, programmatic fill, brand safety signals, and privacy compliance.
When using the IMA SDK, it populates most required parameters automatically. In environments without the SDK (direct VAST calls, PAL, PAI), all required parameters must be set manually.
Note: For boolean parameters use 0/1 not false/true (e.g. vpmute=1).
Required parameters
| Parameter | Description | Example |
|---|---|---|
correlator | Random positive integer shared by all ad requests in the same page view. Enables competitive exclusions. IMA SDK sets this automatically. | correlator=4345645667 |
description_url | URL-encoded page URL describing the video content (not the homepage). Required for web and mobile apps. | description_url=https%3A%2F%2Fwww.example.com%2Fvideo.html |
env | Request type. instream for video and audio; vp for video only. | env=instream |
gdfp_req | Schema indicator. Always set to 1. | gdfp_req=1 |
iu | Ad unit path in the format /network_code/.../ad_unit. | iu=/6062/videodemo |
output | Output format. xml_vast4 forces VAST 4; vast uses the network default; xml_vmap1 for VMAP / ad rules responses. | output=xml_vast4 |
sz | Size of the master video ad slot. Multiple sizes separated by |. | sz=640x480 |
unviewed_position_start | Set to 1 to enable delayed impressions. | unviewed_position_start=1 |
Programmatic parameters
Required or recommended when monetising with programmatic demand. These parameters significantly affect bid prices and fill rates.
| Parameter | Description | Example |
|---|---|---|
plcmt | Placement type per IAB spec. 1 = in-stream, 2 = accompanying content. | plcmt=1 |
vpa | Video play automatic. auto = autoplay, click = user initiated. | vpa=auto |
vpmute | 1 = playback starts muted, 0 = unmuted. | vpmute=0 |
url | URL from which the request is sent (URL-encoded). IMA SDK sets this automatically; a manually provided value takes precedence. | url=https%3A%2F%2Fwww.example.com%2Fvideo.html |
ott_placement | OTT placement type. 1 pause · 2 homescreen · 3 PiP · 4 L-banner · 5 overlay · 99 custom. | ott_placement=1 |
givn | Video nonce from the Programmatic Access Library (PAL). URL-safe, no encoding needed. Replaces the deprecated paln parameter. | givn=<nonce> |
hl | Language for ad selection (ISO 639-1 or 639-2). | hl=en |
CTV / OTT parameters
Incorrect or missing CTV parameters lead to device misclassification, lower CPMs, and reduced programmatic fill.
| Parameter | Description | Values / Example |
|---|---|---|
dth | Device type hint. Prevents device misclassification. Recommended for all CTV/OTT. | 1 feature phone · 2 smartphone · 3 desktop · 4 tablet · 5 connected TV · 6 game console · 7 set-top box |
devt | Device type for set-top box inventory. Use stb with dth=7. | devt=stb |
msid | App ID. Required for programmatic on mobile and CTV. IMA SDK auto-populates except on iOS/tvOS. | msid=com.example.publisher |
an | Human-readable app name paired with msid. Required for brand safety and buyer transparency. | an=My%20App |
rdid | Resettable device ID (IDFA on iOS, GAID on Android, RIDA on Roku). Required for frequency capping and user-level targeting. | rdid=<device-id> |
idtype | Type of rdid. | adid Android · idfa iOS/tvOS · rida Roku · afai Fire TV |
is_lat | Limit Ad Tracking. 1 = user opted out. | is_lat=0 |
Content targeting parameters
Pass video programming signals to buyers on CTV for improved contextual targeting.
| Parameter | Description | Example |
|---|---|---|
ct_ch | Content channel — the entity that curates the content library. | ct_ch=ESPN2 |
ct_ne | Content network — the broadcasting organization. | ct_ne=WarnerMedia |
ct_se | Content series. | ct_se=game_of_thrones |
ct_ti | Content title (episode / match level). | ct_ti=game_of_thrones_s1e2 |
vid_d | Video content duration in seconds. | vid_d=1800 |
cmsid + vid | Content source ID and video ID for dynamic ad insertion and content-aware targeting. | cmsid=496&vid=short_onecue |
Privacy parameters
| Parameter | Description | Example |
|---|---|---|
gdpr | 1 = GDPR applies, 0 = does not apply. | gdpr=1 |
gdpr_consent | TC string from IAB TCF v2. | gdpr_consent=<tc-string> |
npa | Non-personalised ads. 1 = serve non-personalised (COPPA, no consent). | npa=1 |
rdp | Restricted data processing (CCPA). 1 = enabled. | rdp=1 |
tfcd | Tag for child-directed content. 1 for COPPA-compliant requests. | tfcd=1 |
Complete CTV tag example
A well-formed GAM VAST tag for a connected TV app:
https://pubads.g.doubleclick.net/gampad/ads
?iu=/6062/my-network/my-ctv-app
&env=instream
&gdfp_req=1
&output=xml_vast4
&sz=640x480
&correlator=[CORRELATOR]
&description_url=https%3A%2F%2Fwww.example.com%2Fshow%2Fepisode1
&url=https%3A%2F%2Fwww.example.com%2Fshow%2Fepisode1
&plcmt=1
&vpa=auto
&vpmute=0
&dth=5
&msid=com.example.myapp
&an=My%20CTV%20App
&rdid=[RDID]
&idtype=rida
&is_lat=0
&ct_ch=My%20Channel
&ct_ne=My%20Network
&unviewed_position_start=1Replace bracketed values with dynamic macros from your ad server or device SDK.
UniversalAdId for frequency capping
GAM uses <UniversalAdId> (VAST 4.0+) for cross-environment frequency capping and deduplication. Include a <UniversalAdId> with a consistent registry and ID value to enable cross-screen frequency management.
<UniversalAdId idRegistry="ad-id.org">8465903</UniversalAdId>Creative approval and HTTPS
GAM requires HTTPS for all creative asset URLs. HTTP URLs may be rejected at upload time or fail silently at delivery on HTTPS pages. This applies to media file URLs, click-through URLs, and companion assets.
vastlint rules: VAST-2.0-duration-format, VAST-2.0-mediafile-url
Pre-flight checklist for Google Ad Manager
- No VPAID for new campaigns — use native video + OMID
- All creative asset URLs use HTTPS
- Wrapper chain depth ≤ 3 hops (GAM adds the 4th)
- MP4 H.264
<MediaFile>present <Duration>inHH:MM:SSformat<Impression>with HTTPS URL presentversionattribute on root<VAST>element<UniversalAdId>for cross-screen campaigns (VAST 4.0+)- Tag URL includes
env,gdfp_req,iu,output,sz,correlator - CTV tags include
dth=5,msid,an,plcmt,vpa,vpmute