Guide Change Log

Current Guide Version

Guide VersionDateAuthorDescription
v1

 

AdminInitial Release

Historic

VersionDateAuthorDescription
v1

  

Admin

Initial Release




Table of Contents




1. Introduction 

This guide outlines the steps to onboard a FW SSP client using a VAST connection to an upstream adserver such as the requisites to onboard and the technical parameters required to make HTTP GET ad requests to the Freewheel system. To set up a VAST connection to Freewheel, there will be a number of pre-requisites to full-fill and your Freewheel account team will need to share several parameters. 


1.1 Integration Diagram

This diagram illustrates the end to end process of a VAST ad request leaving the adserver and Freewheel returning programmatic demand in the VAST ad response to the upstream ad server and end user

Pre-requisites 

Before starting this integration, please ensure you have the following to start: 

  • Expected QPS volumes (daily max and average)
  • Estimated traffic per geo
  • Ensure ads.txt, app ads.txt and sellers.JSON are up to date
  • Freewheel account team to provide:
    • Expected ad request tag which will point to the dedicated client endpoint and include expected parameters (you can find an example in the section below)
    • Network IDs to be integrated for ads.txt and the expected format




2. Endpoint

Clients will be provided with a unique endpoint for which to send ad requests that is exclusive to their networks. Endpoints will have a variable prefix ID which is the Network ID in hexadecimal format that will need to be included at the front of every VAST ad request. The Endpoint Prefix ID will need to be added as a prefix within the URL. As you'll see in the Parameters section below, this endpoint url will be built out to include specific parameters to pass relevant information points on the ad request. 

https://(prefixID).v.fwmrm.net/ad/g/1
  • Format
    • https://prefixID.v.fwmrm.net/ad/g/1
  • Example with custom prefix ID included
    • https://83b96.v.fwmrm.net/ad/g/1

3. Ad Request Parameters


The below repository lists out the different parameters for inclusion on HTTP GET ad requests - note that some are mandatory and are needed to make the ad request work or for successful monetization, whereas others might be recommended depending on the client set up and requirements. Depending on your region, your account team may provide tags with extra parameters but these should be considered as the minimum to get a functional tag. Additionally, the expectation is that there will be 3rd party macros to include on the tag in order to pass datapoints for the end user that depend on the adserver used. Note that the ad requests parameters are broken out into 3 types and it's very important that clients respect the taxonomy of the tags we provide you to ensure correct functionality. 

  • Global parameters - necessary for the correct functioning of the ad request. You sill specifically need to know the client vhost, network ID, profile ID and site section tag. These will be provided by your Freewheel rep.
  • Key value pairs - often recommended/required to pass extra required contextual information such as Standard Attributes so Freewheel can monetize your supply and best align demand.
  • Slot parameters - required to pass information around the slot such as the roll type, duration etc... 

Please note that each parameter section is separated by a semicolon (;) and the tag may not work if this isn't included nor if parameters aren't passed in the correct section of the tag! 

If a client has both live and on demand inventory, separate tags will need to be provided

Scroll to the right to see the full table 

Parameter NameRequired vs Recommended

Description and format

Freewheel Placeholder

SpringServe Macro

(not in hub)

Publica Macro

(not in hub)

Elemental Macros

(not in hub)

GAM Macros

(not in Hub)


https://[CLIENT_VHOST].v.fwmrm.net/ad/g/1?Required

Client specific Vhost. The alphanumeric ID is the client's network ID Hexadecimal encrypted.

For example: 

















Global Parameters

nw=[NETWORK_ID_PLACEHOLDER]RequiredNetwork ID - integer




resp=vast4RequiredResponse format - string




prof=[PROFILE_PLACEHOLDER]RequiredPlayer profile. Specifies which types and formats of ads can be returned in this player environment - string

54321:fw_ssp_VAST_clientname





csid=[SITE_SECTION_PLACEHOLDER]RequiredCustom site section ID. Indicates "where" the video is played. This is an alpha-numeric value and is considered the tag for the site section - string




caid=0Required

Custom video asset ID. Hardcoded to '0' or '1'. - integer 






pvrn=RequiredPage View Random. A random number generated per page view. Used for cache busting - integer [CACHEBUSTER_PLACEHOLDER]{{CACHEBUSTER}}[CACHEBUSTER]${CB}

 %%CACHEBUSTER%%

vprn=RequiredVideo Player Random. A random number generated per video instance (re-randomize on a new video play even on the same page). Used for cache busting - integer[CACHEBUSTER_PLACEHOLDER]{{CACHEBUSTER}}[CACHEBUSTER]${CB}

 %%CACHEBUSTER%%

flag=+fwssp+amcb+nucrRequiredThe flag section turns on or off specific capabilities that are needed to make the integration work. "+" means to turn on and "-" means to turn off. String 




metr=1023RequiredSignals the default metrics supported for all ads returned in the response. It's a bitmap representing whether this integration supports some pre-defined metrics like clickable, pausable, mutable, etc - Integer1023



vip=RequiredEnd user IP address - string[IP_ADDRESS_PLACEHOLDER]{{IP}}[IP]${IP}

%%USER_IP%%

mode=liveRequiredStream type of the video asset, acceptable values are "on-demand" or "live" - stringlive



;

Global Parameter (Above)

Key Values (Below) -  please take note of the separator value 

Global Parameter (Above)

Key Values (Below)


_fw_h_user_agent=RequiredEnd user user agent  - string[USER_AGENT_PLACEHOLDER]{{USER_AGENT}}[%UA%]${UA}

%%USER_AGENT%%






















Key Values





_fw_h_referer=Required for OLVEnd user referrer URL. Not required for non-web environments - string[REFERER_URL_PLACEHOLDER]{{ENCODED_URL}}

 %%REFERRER_URL_ESC%%

_fw_vcid2=RequiredCustom user ID, used for frequency capping and audience lookup - string[DEVICE_ID_PLACEHOLDER]{{DEVICE_ID}}[DID]${DEV_ID}

%%ADVERTISING_IDENTIFIER_PLAIN%%

_fw_did=RequiredEnd user device ID, used for frequency capping and audience lookup - string[IFA_TYPE_PLACEHOLDER]{{IFA_TYPE}}[IFA_TYPE]${IFA_TYPE}

%%ADVERTISING_IDENTIFIER_TYPE%%

_fw_deviceMake=RecommendedDevice make (e.g. Apple) - string[DEVICE_MAKE_PLACEHOLDER]{{DEVICE_MAKE}}[%DEVICE_MAKE%]${DEV_MAKE}

GAM uses the pattern macro where by the key is declared in this format: %%PATTERN:key%%

Please replace the key string with the relevant key that you wish to use for custom targeting

An example might be

%%PATTERN:dev_make%%

_fw_player_width=RecommendedPlayer width - integer[WIDTH_PLACEHOLDER]{{WIDTH}}[WIDTH]${WIDTH}%%WIDTH%%
_fw_player_height=RecommendedPlayer height - integer[HEIGHT_PLACEHOLDER]{{HEIGHT}}[HEIGHT]${HEIGHT}%%HEIGHT%%
_fw_playback_method=1Recommended

Integer with the following possible values: 

1 Initiates on Page Load with Sound On
2 Initiates on Page Load with Sound Off by Default
3 Initiates on Click with Sound On
4 Initiates on Mouse-Over with Sound On
5 Initiates on Entering Viewport with Sound On
6 Initiates on Entering Viewport with Sound Off by Default  






_fw_playback_end=Recommended

Integer - the following table lists the various modes for when playback terminates.

1 On Video Completion or when Terminated by User
2 On Leaving Viewport or when Terminated by User
3 On Leaving Viewport Continues as a Floating/Slider Unit until Video Completion or when
Terminated by User

[PLAYBACK_END_PLACEHOLDER]



_fw_app_name=Required for in appApp Name - string[APP_NAME_PLACEHOLDER]{{APP_NAME}}[%APP_NAME%]${APP_NAME}

GAM uses the pattern macro where by the key is declared in this format: %%PATTERN:key%%

Please replace the key string with the relevant key that you wish to use for custom targeting

An example might be

%%PATTERN:app_name%%

_fw_app_bundle=Required for in appApp Bundle ID - string[APP_BUNDLE_PLACEHOLDER]{{APP_BUNDLE}}[%APP_BUNDLE%]${APP_BUNDLE}

GAM uses the pattern macro where by the key is declared in this format: %%PATTERN:key%%

Please replace the key string with the relevant key that you wish to use for custom targeting

An example might be

%%PATTERN:app_bundle%%

_fw_app_store_url=Required for in appApp store URL - string[APP_STORE_URL_PLACEHOLDER]{{APP_STORE_URL}}[%APP_STORE_URL%]${APP_URL}

GAM uses the pattern macro where by the key is declared in this format: %%PATTERN:url%%

In this case the url will be expanded to that of the app store

An example might be

%%PATTERN:www.myappstoreurl.com%%

_fw_inventorypartnerdomain=RecommendedDeclaration of inventory partner domain for ads.txt - string[INVENTORY_PARTNER_DOMAIN_PLACEHOLDER]{{INV_PARTNER_DOMAIN}}[%PARTNER_DOMAIN%]${INV_PARTNER_DOMAIN}

GAM uses the pattern macro where by the key is declared in this format: %%PATTERN:key%%

Please replace the key string with the relevant key that you wish to use for custom targeting

An example might be

%%PATTERN:inv_partner_domain%%

_fw_is_lat=RecommendedUsed to identify if a user has opted in or out of Limit Ad Tracking. Value should be 1 (user has enabled limit ad tracking) or 0 (user has not enabled limit ad tracking) - integer[LIMITED_AD_TRACKING_PLACEHOLDER]{{LMT}}[LIMITED_AD_TRACKING]${LMT}%%ADVERTISING_IDENTIFIER_IS_LAT%%
_fw_us_privacy=RecommendedIn support of CCPA and future US privacy regulations, FW supports the IAB privacy string https://hub.freewheel.tv/display/Resources/California+Consumer+Privacy+Act+%28CCPA%29+-+Implementation+Guidelines+for+MRM+Clients - string[US_PRIVACY_PLACEHOLDER]{{US_PRIVACY}}[US_PRIVACY]${US_PRIVACY}

%%US_PRIVACY%%

_fw_gdpr=RecommendedGDPR boolean flag - integer[GDPR_PLACEHOLDER]{{GDPR}}[GDPR]

${GDPR}

_fw_gdpr_consent=RecommendedGDPR Consent String - string[GDPR_CONSENT_PLACEHOLDER]{{CONSENT}}[CONSENT]${GDPR}

${GDPR_CONSENT_XXXX}

_fw_coppa=RecommendedCOPPA boolean flag - integer[COPPA_PLACEHOLDER]{{COPPA}}[COPPA]${COPPA}%%TFCD%% 
ltlg=RecommendedLatitude, Longitude *Must be comma separated - string[LATITUDE_PLACEHOLDER],[LONGITUDE_PLACEHOLDER]{{LAT}},{{LON}}[LAT],[LON]${LAT},${LON}
_fw_content_programmer_brand=RequiredProgrammer- Brand Standard Attributes. Programmer is inferred from brand value. _fw_content_programmer_brand=FWNewsUS - string

[PROGRAMMER_BRAND_PLACEHOLDER]


 

_fw_content_genre=Required if IAB content category - _fw_content_category= cannot be passedContent genre - string[CONTENT_GENRE_PLACEHOLDER]{{CONTENT_GENRE}}[%CONTENT_GENRE%]${CONTENT_GENRE}


GAM uses the pattern macro where by the key is declared in this format: %%PATTERN:key%%

Please replace the key string with the relevant key that you wish to use for custom targeting

An example might be

%%PATTERN:genre%%

_fw_content_rating=Strongly recommended for effective monetizationContent rating - string[CONTENT_RATING_PLACEHOLDER]{{RATING}}[%CONTENT_RATING%]${CONTENT_RATING}

GAM uses the pattern macro where by the key is declared in this format: %%PATTERN:key%%

Please replace the key string with the relevant key that you wish to use for custom targeting

An example might be

%%PATTERN:rating%%





_fw_site_category=RecommendedSite category name - string[CONTENT_CATEGORY_PLACEHOLDER]{{IAB_CATEGORY}}[CONTENT_CAT]${CONTENT_CAT}%%IAB_CATEGORIES%%
_fw_content_category=Strongly recommended for effective monetizationContent category - string[CONTENT_CATEGORY_PLACEHOLDER]{{IAB_CATEGORY}}[CONTENT_CAT]${CONTENT_CAT}

%%IAB_CATEGORIES%%

_fw_content_channel=Strongly recommended for effective monetizationContent channel name - string[CONTENT_CHANNEL_PLACEHOLDER]{{CHANNEL_NAME}}[%CONTENT_CHANNEL%]${CHANNEL}

GAM uses the pattern macro where by the key is declared in this format: %%PATTERN:key%%

Please replace the key string with the relevant key that you wish to use for custom targeting

An example might be


%%PATTERN:channel%%

_fw_content_network=RecommendedContent network name - string[CONTENT_NETWORK_PLACEHOLDER]{{NETWORK_NAME}}[%CONTENT_NETWORK%]${NETWORK}

GAM uses the pattern macro where by the key is declared in this format: %%PATTERN:key%%

Please replace the key string with the relevant key that you wish to use for custom targeting

An example might be


%%PATTERN:network%%

_fw_content_title=RecommendedContent title - string[CONTENT_TITLE_PLACEHOLDER]{{CONTENT_TITLE}}[%CONTENT_TITLE%]${CONTENT_TITLE}%%VIDEO_TITLE%%
_fw_content_language=Strongly recommended for effective monetizationContent language - string[CONTENT_LANGUAGE_PLACEHOLDER]{{LANGUAGE}}[CONTENT_LANGUAGE]${CONTENT_LANGUAGE}

GAM uses the pattern macro where by the key is declared in this format: %%PATTERN:key%%

Please replace the key string with the relevant key that you wish to use for custom targeting

An example might be


%%PATTERN:lang%%

_fw_content_length=RecommendedContent length expressed in seconds - integer[CONTENT_LENGTH_PLACEHOLDER]{{DURATION}}[CONTENT_LENGTH]${CONTENT_DUR}%%VIDEO_AD_DURATION%%
_fw_content_producer_name=RecommendedContent producer name - string[CONTENT_PRODUCER_NAME_PLACEHOLDER]{{CONTENT_PRODUCER_NAME}}[%CONTENT_PRODUCER_NAME%]${PRODUCER_NAME}

GAM uses the pattern macro where by the key is declared in this format: %%PATTERN:key%%

Please replace the key string with the relevant key that you wish to use for custom targeting

An example might be

%%PATTERN:producer_name%%


_fw_production_quality=RecommendedContent production quality - string [CONTENT_PRODUCTION_QUALITY_PLACEHOLDER]{{PRODUCTION_QUALITY}}[CONTENT_PROD]${PRODUCTION_QUALITY}

GAM uses the pattern macro where by the key is declared in this format: %%PATTERN:key%%

Please replace the key string with the relevant key that you wish to use for custom targeting

An example might be

%%PATTERN:content_prod%%

_fw_bidfloor=Optional

Dynamically pass programmatic bid floor price in ad request i.e. '12.23'.

This is similar to setting floor price in: 

UI > Admin > Programmatic Management > Network Floor Price. 

-OR-

UI > Network Items (SG, S or SS only) > Programmatic Management.


Value format = float

[NET_BIDFLOOR_PLACEHOLDER]
  
_fw_bidfloorcur=Optional

Currently of floor price set in '_fw_bidfloor', example value 'USD'. If no currency, ADS will use CRO default network currency. Please see MULTI_CURRENCY_SUPPORT for multiple currency support.


Currency specified using 3-character ISO-4217 alpha codes.


Value format = string 

[NET_BIDFLOOR_CURRENCY_PLACEHOLDER]
  
schain=Recommended, but could have downstream revenue consequences if not included

String - this can be passed in the ad request with key schain and value in this format: 

ver,complete!asi,sid,hp,rid,name,domain,ext


Example:

&schain=1.0,1!customer.name,5af190fb073ef4546a085a53,1,,name,yourdomain.com


[SCHAIN_PLACEHOLDER]{{SCHAIN}} [SCHAIN] ${SUPPLY_CHAIN}
;

Key Values (Above)

Slot Parameter (Below) - please take note of the separator value 

Key Values (Above)

Slot Parameter (Below)

tpcl=[AD_UNIT_POSITION]RequiredSupported values: preroll, midroll, postroll - string[PREROLL_OR_MIDROLL_OR_POSTROLL]midroll

[POSITION] *Publica clients can customize Position values i.e. the position macro can return 'midroll', 'mid' or 'm'.


Consult with the Pub AM prior to using the Publica Position macro to confirm expected values. 

midroll






Slot Parameters

ptgt=aRequired

Type of slot. This is a required parameter - string

ptgt=a: temporal slot
ptgt=s: site section non-temporal slot
ptgt=p: video player non-temporal slot

a



mind=[MIN_SLOT_DURATION_PLACEHOLDER]RequiredMinimum slot duration - integer




maxd=[MAX_SLOT_DURATION_PLACEHOLDERRequiredMaximum slot duration ) - integer






4. Sample Ad Request Tag

Please see below an example of an ad request tag in its expected format based on the above parameters:

https://1a2bC.v.fwmrm.net/ad/g/1?nw=54321&resp=vast4&prof=54321:fw_ssp_VAST_clientname&csid=my_site_section&caid=0&pvrn=[CACHEBUSTER_PLACEHOLDER]&vprn=[CACHEBUSTER_PLACEHOLDER]&flag=+fwssp+amcb+nucr&metr=1023&vip=[IP_ADDRESS_PLACEHOLDER]&mode=live;_fw_h_user_agent=[USER_AGENT_PLACEHOLDER]&_fw_h_referer=[REFERER_URL_PLACEHOLDER]&_fw_vcid2=[DEVICE_ID_PLACEHOLDER]&_fw_did=[IFA_TYPE_PLACEHOLDER]:[DEVICE_ID_PLACEHOLDER]&_fw_deviceMake=[DEVICE_MAKE_PLACEHOLDER]&_fw_player_width=[WIDTH_PLACEHOLDER]&_fw_player_height=[HEIGHT_PLACEHOLDER]&_fw_playback_method=1&_fw_playback_end=[PLAYBACK_END_PLACEHOLDER]&_fw_app_name=[APP_NAME_PLACEHOLDER]&_fw_app_bundle=[APP_BUNDLE_PLACEHOLDER]&_fw_app_store_url=[APP_STORE_URL_PLACEHOLDER]&_fw_inventorypartnerdomain=[INVENTORY_PARTNER_DOMAIN_PLACEHOLDER]&_fw_is_lat=[LIMITED_AD_TRACKING_PLACEHOLDER]&_fw_us_privacy=[US_PRIVACY_PLACEHOLDER]&_fw_gdpr=[GDPR_PLACEHOLDER]&_fw_gdpr_consent=[GDPR_CONSENT_PLACEHOLDER]&_fw_coppa=[COPPA_PLACEHOLDER]<lg=[LATITUDE_PLACEHOLDER],[LONGITUDE_PLACEHOLDER]&_fw_content_programmer_brand=[PROGRAMMER_BRAND_PLACEHOLDER]&_fw_content_genre=[CONTENT_GENRE_PLACEHOLDER]&_fw_content_rating=[CONTENT_RATING_PLACEHOLDER]&_fw_site_category=[CONTENT_CATEGORY_PLACEHOLDER]&_fw_content_category=[CONTENT_CATEGORY_PLACEHOLDER]&_fw_content_channel=[CONTENT_CHANNEL_PLACEHOLDER]&_fw_content_network=[CONTENT_NETWORK_PLACEHOLDER]&_fw_content_title=[CONTENT_TITLE_PLACEHOLDER]&_fw_content_language=[CONTENT_LANGUAGE_PLACEHOLDER]&_fw_content_length=[CONTENT_LENGTH_PLACEHOLDER]&_fw_content_producer_name=[CONTENT_PRODUCER_NAME_PLACEHOLDER]&_fw_production_quality=[CONTENT_PRODUCTION_QUALITY_PLACEHOLDER]&_fw_bidfloor=[NET_BIDFLOOR_PLACEHOLDER]&_fw_bidfloorcur=[NET_BIDFLOOR_CURRENCY_PLACEHOLDER];tpcl=[PREROLL_OR_MIDROLL_OR_POSTROLL]&ptgt=a&mind=30&maxd=500


5. Inventory Standardization 

In order for Freewheel to successfully monetize your supply, we have developed "Standard Attributes" which allow clients to classify their inventory and facilitate inventory sharing and targeting for any buyers in the following ways: 

  • Enhance clarity and discoverability: Sellers can standardize inventory by passing Standard Attribute values either dynamically on the ad request (recommended), or declaratively on Network items in order to increase transparency for buyers in the Marketplace Platform. Standard attributes are organized into categories by content, geo, device/environment types and roll types, This makes buyers more likely to discover your inventory and to better understand it.

  • Improve targeting: Buyers can target standard attributes for inventory acquired through the Marketplace Platform on their programmatic and direct sold demand. 

  • Increase the accuracy of reporting and forecasting projections.

The more Standard Attributes that a client can pass, then the more likely we can monetize your supply and we highly recommend a standarization rate of 80%- 100% depending on the Standard Attribute. Please refer to section 3. Ad Request Parameters above for guidance on how to pass these on a VAST ad request as well as indicators as to what is required/recommended. 


6. User Sync

As part of setting up a FW SSP client, Freewheel will automatically set up the user sync on their side for any OLV inventory to fire on the impression tracker in the ad response. For programmatic demand, Freewheel will use the user id passed in the _fw_vcid2 parameter as a basis to user sync with upstream DSP buyer IDs and pass this in the user.buyeruid. In cases where it may not be possible to fire our user sync from the client player, the Freewheel AM may recommend additional set up steps depending on your specific set ups. Additionally if the ad server you use is a net new adserver for Freewheel, there could be additional steps involved to set up user syncing with your system.


7. Ads.txt, AppAds.txt, Sellers.JSON

Your Freewheel account management team with provide the relevant ads.txt lines to implement as well as ensure that your sellers.JSON is up to date for your relevant seller relationships. Please refer to https://hub.freewheel.tv/display/MUG/ads.txt+and+app-ads.txt+setup#ads.txtandappads.txtsetup-FreeWheelSSP for details on the expected set up for a FW SSP customer. 


8. Troubleshooting

In the case where you have issues such as

  • Ad requests not being sent
  • Ad requests being sent but no demand returned 

First steps: 

  • Make sure the tag taxonomy is respected as in the notes above and that no important parameters crucial for functionality are being missed. 
  • Ensure that ads.txt and app.ads.txt are up to date with your expected ads.txt lines provided by the Freewheel AM to ensure that the supply can be correctly monetized by DSP partners who may not bid on this supply in case of inconsistencies
  • We also recommend passing any Standard Attribute values that your Freewheel AM has recommended so we can better align demand to your supply.

In case the issue persists, we recommend that you file a ticket via your Zendesk access (your Freewheel AM will provide this) to our support teams for further investigation.






You are evaluating Refined.
Back to Top