Reach Extension VAST Tag Cheat Sheet

Prev Next

As an inventory owner, you must customize the VAST response from the Triton Digital ad server. You do this by replacing the macros in the VAST tag template that your reseller has provided to you.

Example VAST Tag Template

Here is an example of a VAST tag template that your reseller provides. The contract-id, contract-secret, and placement-id parameters are only examples. The actual values from your reseller will be different.

https://resell-ad-server.example.com/resell/vast?contract-id=10001&contract-secret=1382169h-02ns-6a83-04gl-zeu158201ivq&placement-id=123456&lsid=${listenerId}&position=${position}&ip=${ip}&deviceid=${deviceId}&timestamp=${timestamp}&ua=${ua}&gdpr=${gdpr}&gpp_string=${gpp_string}&gpp_sid=${gpp_sid}&us_privacy=${us_privacy}&coppa=${coppa}&bundle-id=${bundle-id}&store-url=${store-url}&iab-v2-cat=${iab-v2-cat}&feed-type=${feed-type}&content-language=${content-language}&store-id=${store-id}&site-url=${site-url}

Example of a VAST Tag Template for a Podcast

In this example for a podcast episode, an inventory owner has further customized the URL by appending extra parameters about the podcast to the end of the template. For details, see Other Supported Parameters.

https://resell-ad-server.example.com/resell/vast?contract-id=10001&contract-secret=1382169h-02ns-6a83-04gl-zeu158201ivq&placement-id=123456&lsid=${listenerId}&position=${position}&ip=${ip}&deviceid=${deviceId}&timestamp=${timestamp}&ua=${ua}&gdpr=${gdpr}&gpp_string=${gpp_string}&gpp_sid=${gpp_sid}&us_privacy=${us_privacy}&coppa=${coppa}&bundle-id=${bundle-id}&store-url=${store-url}&iab-v2-cat=${iab-v2-cat}&feed-type=${feed-type}&content-language=${content-language}&store-id=${store-id}&site-url=${site-url}&series-title=My Series Title&episode-season=3&episode-number=4&episode-title=My Episode Title&episode-url=https%3A%2F%2Fwww.example.com%2Fpodcasts%2FPodcastName%3Fepisode%3D1&episode-duration=1800&guid=6B29FC40-CA47-1067-B31D-00DD010662DA

These extra parameters:

  • &series-title=My%20Series%20Title

  • &episode-season=3

  • &episode-number=4

  • &episode-title=My%20Episode%20Title

  • &episode-url=https%3A%2F%2Fwww.example.com%2Fpodcasts%2FPodcastName%3Fepisode%3D1

  • &episode-duration=1800

  • &guid=6B29FC40-CA47-1067-B31D-00DD010662DA

Customize a VAST Tag Template

  1. Do not modify contract-id, contract-secret, and placement-id. These parameters are required and pre-populated by Triton Digital.

  2. Replace the required position macro with preroll, midroll, or postroll. For example, to specify a pre-roll ad insertion, you replace ${position} with preroll. The position parameter in your VAST request would then be position=preroll.

  3. Replace the macros of other parameters as needed. If you do not know a parameter’s value, or it’s not applicable, leave the macro unchanged. Example: If you do not know the language, then use content-language=${content-language}.

  4. Append other parameters, as needed. See Other Supported Parameters.

VAST Tag Parameters

Parameter

Macro

Description

Format

placement-id

n/a

Required.

ID of the placement, historically known as the “station ID”. It is the numerical ID of the station as assigned by Triton Digital.

Its value is pre-populated in the VAST template and must not be altered.

contract-id

n/a

Required.

Its value is pre-populated in the VAST template and must not be altered.

contract-secret

n/a

Required.

Its value is pre-populated in the VAST template and must not be altered.

position

${position}

Required.

The ad position.

String.

Valid values: 

  • preroll

  • midroll

  • postroll

lsid

${listenerId}

Recommended. 

Important for TAP Programmatic to enrich the profile. 

Listener ID is the main user identifier for Triton Digital to use as the basis for measurements and frequency capping. For details, see Listener ID Management.

String.

Alpha-numeric characters, including the following list of special characters: 

_=*+.[]{}()~- 

ip

HTTP Header: X-Device-IP

${ip}

Required for server-to-server integrations.

IP address of the player/listener device.

For IPv4: Dotted decimal format. Example: 192.0.2.254 

For IPv6: Colon-separated hexadecimal characters conforming to IPv6 format. Example: 2001:db8:0000:1111:2222:3333:4444:5555 

deviceId

${deviceId} 

Identifies the device. 

String that starts with app: followed by 10 to 40 alphanumeric characters.

Example: app:EBE52E703EE455AB3

timestamp

${timestamp}

Unix timestamp in seconds. 

ua 

HTTP Header: X-Device-ua 

${ua}

User-Agent full. Corresponds to the listener ID attribute.  

String.

Example: Mozilla/5.0 android-user-agent 

gdpr

${gdpr}

Flag indicating if General Data Protection Regulation (GDPR) regulations apply.

See GDPR

Integer.

Value values:

  • 0: GDPR does not apply 

  • 1: GDPR applies

gpp

HTTP Header: X-gpp 

${gpp_string}

GPP string allowing the transmission of privacy, consent, and consumer choice signals. The string must comply with the IAB Tech Lab Global Privacy Platform specification.

String.

URL-safe base64-encoded GPP string. 

gpp_sid

HTTP Header: X-gpp-sid 

${gpp_sid}

Section ID to indicate which legislation is considered “in force”. 

Integer.

us_privacy 

${us_privacy}

U.S. Privacy String that signals whether the U.S. Privacy Regulations apply to the consumer, if an “explicit notice” legal disclosure has been established with a consumer, and if the consumer has chosen to opt out of the sale of their personal data. Version 1 only supports signals pertaining to the California Consumer Privacy Act (CCPA). The string must comply with the U.S. Privacy String format

String.

coppa 

${coppa} 

Flag indicating if Children's Online Privacy Protection Act (COPPA) regulations apply. COPPA was established by the U.S. Federal Trade Commission. 

0 = COPPA restrictions do not apply 

1 = COPPA restrictions apply 

bundle-id

${bundle-id}

Important for Programmatic. 

Only used for mobile app inventory, where it is required. 

Application identifier intended to be unique to the app and independent of the app store where it was distributed. 

String.

On Android and iOS, this should be a package name. Example: com.tritondigital.tritonradio

store-url

${store-url}

Important for Programmatic. 

Only for mobile app inventory. 

App store URL for an installed app making the ad request/stream connection. 

Required by programmatic buyers to verify Triton Digital is allowed to sell your inventory using the app-ads.txt framework.  

URL encoded string of a URL. 

Example: 

https%3A%2F%2Fexample.com%2Fstore%2Fapps%2Fdetails%3F1d%3Dcom.tritondigital.tritonradio 

iab-v2-cat

${iab-v2-cat}

Recommended for personalized audio content (e.g., music services) where genre is dynamic and based on listener's choice.

Category of the content as defined by the IAB Tech Lab Content Taxonomy. The first category in the list will be considered as the main category. 

Triton RefData API

Requires JWT Bearer token.

Comma-separated list of integer values, each in the 1-698 range.  See IAB Category Usage Notes.

feed-type

${feed-type}

Required for the specific use-case where the inventory is offered to programmatic and ads requested through on-demand are stitched into a podcast. Can also be used for live stream.

See also delivery-method

String.

Valid values: 

  • podcast 

  • music 

  • radio 

  • game 

  • pureplay 

  • Replay 

  • txt2speech 

content-language

${content-language}

The language of the content where ads will be played. This can be used in campaign targeting or to define a specific rule on the ad exchange. 

String.

Two-letter code that corresponds to ISO 639-1 language codes.

store-id

${store-id}

Important for Programmatic.

Required by programmatic buyers to verify Triton Digital is allowed to sell your inventory using the app-ads.txt framework.

Only for mobile app inventory.

App store identifier for an installed app, used to locate the app within the specific store.

String.

Example for iTunes: 726533955 

Example for Google Play: com.tritondigital.tritonradio 

site-url

${site-url}

URL of the website where the ad will be heard. Programmatic buyers use this to identify the inventory they bid on. It is also used to verify if Triton Digital is allowed to sell your inventory using the ads.txt framework. 

If you do not replace this macro with a value, Triton Digital uses the value configured for this placement. For more information, see Authorized Digital Sellers (ads.txt)

URL encoded string of a URL, which must include the protocol such as http or https. 

Example: 

https%3A%2F%2Fwww.blork. example%2Fradio%2Fhits%2F

Other Supported Parameters

Triton Digital encourages you to inform the Inventory Owner that they can personalize the generated VAST that you share with them upon the contract creation. This ensures that the ad servers and DSP (demand side provider) can better process the ad selection and bid request on the given inventory. 

To add another parameter from this table, use this format: &parametername=value

For example to pass the maxAds parameter with a value of 5, you would append this to the VAST tag:

&maxAds=5 

Category

Parameter

Description

Format

Content 

maxAds

Maximum number of ads.

Value between 1 and 10 inclusively.

Listener 

device-language 

HTTP Header: X-Device-Accept-Language or accept-language 

Recommended for server-to-server integrations.

HTTP header of the player/listener device. 

This indicates which languages the client is configured for, and which locale variant is preferred. We do support both: query string and/or HTTP Header. 

String.

Two-letter code that corresponds to ISO-639-1 language codes. 

Content 

iab-categories-to-exclude 

List of ad categories NOT allowed for the requested ad. The categories are defined in the IAB DAAST specification and listed with codes in OpenRTB.

Although the DAAST specification is obsolete, its ad categories are still in regular use. Triton will update to the IAB Ad Product Taxonomy once it has reached an acceptable level of use.

Blocking a tier-1 category does not block tier-2 under it (e.g., blocking IAB1 does not block IAB1-1 to IAB1-7). To block a category's tier-2, each tier-2 category should be blocked individually. 

Comma-separated list of codes (strings).

Content

delivery-method

Required if the content in which the ad will appear is downloaded, and ad inventory is offered to programmatic buyers.

How the audio content will be delivered to the listener. See Delivery Method Notes.

String.

Valid values: 

  • streaming

  • progressive

  • download  

 

Content, podcast 

series-title

Important for Programmatic, only if it is for podcast. 

Series title (podcast content). 

String.

Content, podcast 

episode-season

Important for Programmatic, only if it is for podcast. 

Season number (podcast content). 

String.

Content, podcast 

episode-number

Important for Programmatic, only if it is for podcast. 

Episode number (podcast content). 

String. Content, podcast 

Content, podcast 

episode-title

Important for Programmatic, only if it is for podcast. 

Episode title (podcast content). 

String. 

 

Content, podcast 

episode-url

Important for Programmatic, only if it is for podcast. 

Episode origin URL (podcast content). 

URL-encoded if sent as a query string. 

Content, podcast 

episode-duration 

Important for Programmatic, only if it is for podcast. 

Episode duration, in seconds. 

Integer.

Content, podcast 

guid

Important for Programmatic, only if it is for podcast. 

Episode ID. 

String in the format of a UUID (universally unique identifier).

See RFC 9562.

Listener 

age

Age of the listener, based on information obtained through listener registration. 

Integer.

From 1 to 125.

Listener

gender

Gender of the listener, based on information obtained through listener registration. 

String.

Case-sensitive.

Valid values: 

  • m: male

  • f: female

  • o: other

Regulatory 

gdpr_consent

HTTP Header: X-gdpr-consent

GDPR transparency and consent string encapsulating relevant details about how transparency and consent was established. The string must comply with the IAB Transparency and Consent Framework specifications.

URL-safe base64-encoded GDPR consent string of the form

GDPR_CONSENT_XXXXX 

where XXXXX is the tracking vendor’s numeric ID where the macro is being used.

Delivery Method Notes

Below are the definitions of the delivery-method values.

  • streaming: Endless flow of content, such as live radio. The user session ends only when the device closes the connection. The content is retrieved as it is consumed. This also applies to on-demand music services. For "live" on-demand performances, where new content is constantly added to the playlist as current content is consumed, the value of delivery-method should be empty.

  • download: Pre-recorded or finite single content, such as a podcast. The user session ends once the content is downloaded or before, if the user disconnects midway. Typically, content retrieval and consumption are independent, such as when a listener downloads a podcast then listens to it later, possibly even when the device is offline. Thus, the impressions are triggered by the download, not the consumption.

  • progressive: Also called progressive download, is for the same type of pre-recorded or finite content as the download delivery method but the content is retrieved as it is consumed. This must be enforced by the player on the user device. It is a client implementation, so server-side implementations that throttle the download rate do not qualify a session as progressive download.

GDPR

Triton Digital conforms to the General Data Protection Regulation (GDPR). GDPR was established by the European Parliament and the Council of the European Union.

Triton Digital is a registered and approved vendor under the Global Vendor List (GVL) TCF v2.0. maintained by the Interactive Advertising Bureau Europe (IAB Europe). Triton Digital’s GVL vendor ID is 239.