Integrating Connected TV Inventory with VAST Tags
Last updated on August 10, 2020
If you want to monetize your connected TV (CTV) inventory on the OpenX Ad Exchange, you can create OpenX VAST ad tags for the following ad servers:
- FreeWheel
- LKQD
- SpotX
- SpringServe
Generating CTV VAST Tags
Go to your account in OpenX user interface (UI) and take the following steps:
Create a site with the following attributes:
- Default Delivery Medium: Mobile
- Platform: Other
- Audience: General
Site URL:
NOTE
Use a complete URL, including the protocol and www. Example: http://www.example.com.
Leave the default settings or values for other site fields.
In your new site, create an ad unit with the following attributes:
- Ad Unit Type: Linear Video
- Ad Server: Select one of the following:
- FreeWheel
- LKQD
- SpotX
- SpringServe
- Video Player: Other
- Presentation Format: In-stream
- Video Dimensions: Select one of the following dimensions:
- 1920x1080
- 320x480
- 1280x720
- Mime types: Select all except for JavaScript
- API Framework: Leave blank
- Playback Method: Leave blank
- Protocols: Select all
- Allowable Delivery Methods: HTTP-based
- Test Mode: Leave unchecked
Select or enter all other settings as desired.
Save the ad unit. The OpenX platform generates the VAST tag.
To view the tag, click the name of the new ad unit in the Ad Units tab. You will see the VAST URI for your tag:
Ad Server Example FreeWheel LKQD SpotX SpringServe
Working with CTV-related Macros
Macros are fields or placeholders for information that you specify about your inventory and the types of creative you want to appear in it. Your ad sever populates these fields with specific values. When your ad server sends an ad request to OpenX Ad Exchange, these macro values are translated into parameters that help demand partners make bidding decisions about your inventory.
When you generate a VAST tag, based on the attributes of an ad unit, the tag includes some dynamically appended macros, as you can see in the preceding screen shot examples. You can insert additional macros in ad tags to automatically capture other user-specific parameters. However, if you want to define additional inventory-specific parameters, you must do so manually with URL-encoded values.
The following table maps your ad server’s macros to OpenX parameters for CTV-related ad requests. Consider the following:
- Certain parameters are labeled Required because DSPs use those values to determine whether to bid on requests.
INSERT_MACRO
indicates that a macro is supported by your ad server, but OpenX does not have information about it. You can replaceINSERT_MACRO
strings with actual macros, according to your ad server documentation.
To learn more about these parameters, see Ad request parameters.
To learn more about the macros that your ad server supports, see your ad server documentation.
Parameter | Information that is passed | FreeWheel macro | LKQD macro | SpotX macro | SpringServe macro |
---|---|---|---|---|---|
app.bundle | Required The app’s bundle ID. | {http:appBundle} | $$bundleid$$ | $BUNDLE | INSERT_MACRO |
app.name | Required The app’s display name. | {http:appName} | $$appname$$ | $APP_NAME | INSERT_MACRO |
cb | Required A random integer to avoid browser caching. | {cb} | $$cachebuster$$ | $CACHE_BUSTER | { {CACHEBUSTER} } |
crr | Mobile carrier, which is defined by the Mobile Country Code (MCC) and Mobile Network Code (MNC), using the format: <MCC>-<MNC> . | INSERT_MACRO | INSERT_MACRO | INSERT_MACRO | INSERT_MACRO |
gdpr | Whether the request is subject to the General Data Protection Regulation (GDPR). | INSERT_MACRO | $$gdpr$$ | $REGS_GDPR | { {GDPR} } |
gdpr_consent | A declaration that that the user has consented to having his or her data collected by the publisher’s site, as mandated by the GDPR. | INSERT_MACRO | $$gdprcs$$ | $USER_CONSENT | { {CONSENT} } |
ifa | Required The Google Advertiser Device Identifier or Apple IDFA or from the user’s device. | {http:deviceIfa} | $$deviceid$$ | $DEVICE_IFA | { {UUID} } |
ip | The IP address from the user’s device. | {ip} | $$ip$$ | $IP_ADX | { {IP} } |
lat | The GPS latitude location, in decimal form, of the device. You should send the lt parameter with lat /lon . This is passed to buyers as OpenRTB device.geo data (not user.geo ). For example: lat=37.530676 | INSERT_MACRO | $$loclat$$ | $GEO_LAT | { {LAT} } |
lmt | Required The setting from the user’s device that indicates if private browsing is enabled (if the user has requested not to be tracked). | INSERT_MACRO | INSERT_MACRO | $DEVICE_DNT | { {DNT} } |
lon | The GPS longitude location, in decimal form, of the device. You should send the lt parameter with lat /lon . This is passed to buyers as OpenRTB device.geo data (not user.geo ). For example: lon=-122.262447 | INSERT_MACRO | $$loclong$$ | $GEO_LON | { {LON} } |
net | The user’s network connection type. For a wireless network, use net=wifi . | INSERT_MACRO | INSERT_MACRO | INSERT_MACRO | INSERT_MACRO |
ua | Required The device user agent, which typically indicates the app or browser making the request. | {useragent} | $$useragent$$ | $USER_AGENT_ENCODED | INSERT_MACRO |
url | Required The mobile app store URL or the mobile website URL. The URL for mobile apps can be HTTP or HTTPS. Non-app store mobile websites should use HTTPS URLs for secure sites. • For iOS, it is the App Store URL. For example: url=https://itunes.apple.com/us/app/talking-tom-cat/id377194688?mt=8 • For Android, it is the Google Play URL. For example: url=https://play.google.com/store/apps/details?id=com.outfit7.talkingtom&hl=en | {http:appStoreUrl} | $$appstoreurl$$ | $APP_STOREURL | { {URL} } |
vht | Required The desired ad height. | height} | $$height$$ | $PLAYER_HEIGHT | { {HEIGHT} } |
vwd | Required The desired ad width. | width} | $$width$$ | $PLAYER_WIDTH | { {WIDTH} } |
Next Steps
- Copy your new tag from ad unit page and paste it into the appropriate location, according to your ad server documentation.
- Set up OpenX selling rules.