VAST Tag Integration
Learn how to set up a VAST integration
To establish a VAST tag integration with Audiohook, please follow the steps below.
1. Complete and Sign the Audiohook IO
Before a VAST integration can be approved or activated, a signed Audiohook Insertion Order (IO) must be in place. The IO will be provided by the Audiohook team during the onboarding process.
2. Generate the VAST Tag URL
Once the IO is signed and your unique publisher/supplier ID is assigned, generate your VAST Tag URL using the provided base_url below and parameter guidelines outlined in this document.
This VAST tag should be implemented in your ad server or playback environment according to your standard insertion logic.
3. Go-Live & Activation
After the VAST tag has been implemented, begin sending traffic so Audiohook can verify that impressions and tracking events are being received correctly.
When the VAST tag is live, notify Audiohook by emailing:
No additional details are required beyond confirmation that the VAST tag is now live. Audiohook will validate incoming data and confirm once the integration has been approved and billing is enabled.
4. Measurement, Billing & Initial Monitoring
Once approved, impressions generated during the initial live period will be monitored for validity and are billable based on Audiohook’s measurement standards.
Billable impressions are derived from valid impressions received within the defined attribution window. Monthly reporting will be provided, after which suppliers may submit invoices in accordance with the IO.
5. Recommended Discrepancy Monitoring Setup
Audiohook offers optional discrepancy monitoring to help identify and resolve reporting differences.
If you would like Audiohook to monitor discrepancies, please confirm this with the team. You will be asked to set up an automated report from your system that includes:
- Impressions
- Revenue amount
Report delivery details:
- Delivery email: publisher@audiohook.com
- Preferred frequency: Daily
- Alternate frequency: Weekly
Audiohook will compare supplier-reported data against internal reporting and flag any discrepancies for investigation.
Generating the VAST Tag URL
base_url = directvast.audiohook.com/{{publisher-id}}/vast?{{params}}Example VAST:
https://directvast.audiohook.com/testPub/vast?feed-url=%%feed_url%%&episode-url=%%episode_url%%&ip=%%ip%%&ua=%%ua%%&vspec=4
Update macros and traffic in your ad server.
Here is a list of hosting platform support articles:
Recommended VAST tags:
- For Megaphone users
https://directvast.audiohook.com/{{publisher-id CHANGE ME}}/vast?feed-url=%%rssurl%%&episode-url=%%mediaurl%%&placement-type=%%position%%&ip=%%ip%%&ua=%%ua%%&ord=%%cachebuster%%&vspec=4- For Omny/Triton users
Podcast inventory:
https://directvast.audiohook.com/{{publisher-id CHANGE ME}}/vast?feed-url= PLEASE REQUEST FROM TRITON &episode-url=@C.EPISODE-URL@&placement-type=@TIMESTAMP@&ip=@IP@&ua=@USERAGENT@&ord=@CACHEBUSTER@&vspec=4&genre=@C.ITUNES-CAT@&publisher=@PUB_NAME@&inventory-type=podcast&feed-type=3
Streaming inventory:
https://directvast.audiohook.com/{{publisher-id CHANGE ME}}/vast?feed-url= PLEASE REQUEST FROM TRITON &episode-url=@C.EPISODE-URL@&placement-type=@TIMESTAMP@&ip=@IP@&ua=@USERAGENT@&ord=@CACHEBUSTER@&vspec=4&publisher=@PUB_NAME@&inventory-type=streaming&feed-type=1
Digital radio inventory:
https://directvast.audiohook.com/{{publisher-id CHANGE ME}}/vast?feed-url= PLEASE REQUEST FROM TRITON &episode-url=@C.EPISODE-URL@&placement-type=@TIMESTAMP@&ip=@IP@&ua=@USERAGENT@&ord=@CACHEBUSTER@&vspec=4&publisher=@PUB_NAME@&station=@STATION_NAME&inventory-type=radio&feed-type=2
Other inventory:
https://directvast.audiohook.com/{{publisher-id CHANGE ME}}/vast?feed-url= PLEASE REQUEST FROM TRITON &episode-url=@C.EPISODE-URL@&placement-type=@TIMESTAMP@&ip=@IP@&ua=@USERAGENT@&ord=@CACHEBUSTER@&vspec=4&publisher=@PUB_NAME@&inventory-type=emerging&feed-type=6- For Art19 users
(different VASTs needed for pre, mid and post rolls)
https://directvast.audiohook.com/{{publisher-id CHANGE ME}}/vast?feed-url={{ primaryFeed }}&episode-url=https://rss.art19.com/episodes/{{ episodeID }}.mp3&ip=header-x-device-ip&ua={{ deviceUserAgent }}&vast-type=inline&placement-type=pre&vspec=4
https://directvast.audiohook.com/{{publisher-id CHANGE ME}}/vast?feed-url={{ primaryFeed }}&episode-url=https://rss.art19.com/episodes/{{ episodeID }}.mp3&ip=header-x-device-ip&ua={{ deviceUserAgent }}&vast-type=inline&placement-type=mid&vspec=4
https://directvast.audiohook.com/{{publisher-id CHANGE ME}}/vast?feed-url={{ primaryFeed }}&episode-url=https://rss.art19.com/episodes/{{ episodeID }}.mp3&ip=header-x-device-ip&ua={{ deviceUserAgent }}&vast-type=inline&placement-type=post&vspec=4We require ip, ua, vspec=4, feed-url, and episode-url parameters. Additional parameters depend on your hosting platform’s requirements and your desired parameters.
We require inventory-type if you have 2 or more of podcasts, streaming, radio or emerging inventory. For podcasts we recommend placement-type. For streaming and radio, placement-type=mid recommended.
Parameter | Required Field | Requires Macro | Default Value | Permitted Values | Example | Comment |
ip | yes | yes | header-ip | %%IP%% | The IP Address of the User (only provided to attribution partners). If the IP address is passed in the header, please insert "header-{{key}}" where the key is the key that is used in the header (example: header-ip). | |
ua | yes | yes | %%USER_AGENT%% | The User Agent String of the User. | ||
vspec | yes | no | 4 | 4 | This is the version of the VAST specification. We previously support VAST 2 however we have since stopped supporting that version. | |
feed-type | yes | no | [1-7] | This follows the IAB specification https://github.com/InteractiveAdvertisingBureau/AdCOM/blob/main/AdCOM v1.0 FINAL.md#list--feed-types- | ||
inventory-type | no | no | podcast | [podcast,streaming,radio,emerging] | This field has been deprecated and feed-type should be used. | |
lang | yes | no | Two digit ISO 639-1 language code | |||
publisher | no | no | [all values] | bonneville | This field allows partners to pass the name of the publisher that is producing the content. Note that this field will be reported on for analytics and billing purposes. | |
station | no | no | [all values] | FM100 | This field allows for partners to pass the name of the station. This field can be used for both streaming inventory and digital radio inventory. Note that this field will be reported on for analytics and billing purposes. | |
feed-url | yes (if content is podcast) | yes | [all values] | This allows Audiohook to support brand safety integrations. Feed URLs should be URL encoded. Note that for some hosting platforms the series and episode id can be provided instead if the RSS feed is consistent | ||
episode-url | yes (if content is podcast) | yes | [all values] | %%FEED_URL%%
or a URL with episode ID macro such as
https://rss.art19.com/episodes/{{ episodeID }}.mp3 | This allows Audiohook to support brand safety integrations. Episode URLs should be URL encoded. Note that for some hosting platforms the series and episode id can be provided instead if the RSS feed is consistent. | |
series-id | no | yes | [all values] | Use feed-url parameter. In case hosting platform doesn’t have url macro instead use feed-url param with a URL with series-id macro inserted. T | ||
episode-id | no | yes | [all values] | Use episode-url parameter. In case hosting platform doesn’t have url macro instead use episode-url param with a URL with episode-id macro inserted. | ||
floor | no | no | 1.25 | This is the floor in USD that will be honored. Note that this may result in lower bid responses and volume. | ||
cpm | no | no | 1.00 | |||
hosting | no | no | [all values] | art19 | This parameter is required when using either the series-id or episode-id parameters. | |
player-domain | no | no | [all values] | domain.com | This parameter should be passed if the content is being played through a web player. It should be the domain of the website that the player is located. | |
vast-type | no | no | wrapper | [wrapper, inline] | Currently, by default, we serve VAST tags with wrappers. This replaces the historical inline parameter. REPLACE INLINE=1 WITH VAST-TYPE=INLINE | |
placement-type | no | no | post | [pre,mid,post] | If this is left blank, we will assign the inventory as post-roll. | |
genre | no | yes | %%SPORTS%% | Currently we support only one genre to be provided at a time. | ||
bcat | no | no | None | [IAB1,IAB2,IAB3,IAB4,IAB5,IAB6,IAB7,IAB8,IAB9,IAB10,IAB11,IAB12,IAB13,IAB14,IAB15,IAB16,IAB17,IAB18,IAB19,IAB20,IAB21,IAB22,IAB23,IAB24,IAB25] | IAB3-2 | This allows the publisher to block specific IAB advertiser categories. We support both parent categories and sub-categories. This field is not case sensitive. |
badv | no | no | None | [all values] | example.com | This allows the publisher to block specific advertiser domains. Note that domains should not include http/https. |
ord | no | yes | %%cachebuster%% | serves as a cachebuster, which is a unique value appended to the VAST tag URL to create a new and distinct ad request each time the VAST tag is called |