Use Google Ad Manager (formerly known as DoubleClick for Publishers) to integrate ads into your content.
Ad Requests
Google Ad Manager has specific URL requirements for ad requests that meet the following criteria:
-
Initial and wrapper requests that start with the following base URL:
http://pubads.g.doubleclick.net/gampad/live/ads
http://pubads.g.doubleclick.net/gampad/ads
-
Wrapper requests that start with the following base URL:
http://ad.doubleclick.net/
Our service performs the following modifications to ad requests that meet the above requirements:
- Scheme Substitution: Our service substitutes
http://
withhttps://
. - Domain Substitution: Our service substitutes the domain with
serverside.doubleclick.net
. - Query String Parameter: Our service adds the impression pinging entity query string parameter (
ipe=ssb
) when thesssb=1
query string parameter is missing from the initial ad request.
Initial Ad Request Examples
Wrapper Request Examples
Ad Parameters
This section describes Google Ad Manager parameters.
Required parameters are bolded.
Parameter | Description | Behavior |
---|---|---|
ad.adUnit | Identifies the directory path to an ad unit. Example: ad.adUnit=/dfp_ads | |
ad.networkID | Identifies the network ID for the Google account. Example: ad.networkID=12345 | |
ad.output | Indicates the response format. Valid values are: xml_vast3 | xml_vast2 | xml_vmap1 VOD Only Selecting a VAST format (i.e., xml__vast3 or xml_vast2 ) for a VOD playback session causes our service to create a VMAP template. This allows our service to manage all of the ad requests within that VOD asset across all ad breaks.Example: ad.output=xml_vmap1 | Passes unaltered to the ad server. |
ad.serverUrl | Identifies the URL to the Google ad decision server. Example: ad.serverUrl=http://pubads.g. doubleclick.net/gampad/ads? | |
ad.sz | Indicates the size of the master video ad slot. Example: ad.sz=640x480 | Passes unaltered to the ad server. |
ad.ad_rule | Determines whether video ad requests will be an ad rule request. Valid values are: 0: VAST Template 1: Ad rules playlist Example: ad.ad_rule=0 | Passes unaltered to the ad server. |
ad.addtl_consent | Global Data Privacy Parameter. A string that contains a list of consented and/or disclosed Google ad technology providers (ATPs) that are not registered with IAB. Example: 2~1.35.41.101~dv.9.21.81 means that the user has consented to ATPs with IDs 1, 35, 41 and 101, ATPs with IDs 9, 21, and 81 have been disclosed to the user and the string is created using the format defined in the v2 specification. | Passes unaltered to the ad server. |
ad.an | Passes unaltered to the ad server. | |
ad.attmas | Passes unaltered to the ad server. | |
ad.ciu_szs | Identifies one or more companion sizes as a comma-separated list. Example: ad.ciu_szs=728x90,300x250 | Passes unaltered to the ad server. |
ad.cmsid | Identifies the CMS source ID for the system hosting video content for your network. Google automatically assigns one ID per content source. | Passes through a cmsid parameter value. If the cmsid value starts with $ then we will look for a key in the asset’s meta data and pull in its value. If the cmsid value starts with @ then we will look for a key in the asset itself and pull its value. Otherwise use the external_id on the asset if it exists, or the beam id. |
ad.correlator | Passes through as same_scor , default to timestamp. | |
ad.cust_params | Defines custom targeting parameters. Example: ad.cust_params=adrule=premidoptimizedpod | Passes unaltered to the ad server. |
ad.output | Indicates the response format. Valid values are:xml_vast3 | xml_vast2 | xml_vmap1 VOD Only Selecting a VAST format (i.e., xml__vast3 or xml_vast2 ) for a VOD playback session causes our service to create a VMAP template. This allows our service to manage all of the ad requests within that VOD asset across all ad breaks.Example: ad.output=xml_vmap1 | Passes unaltered to the ad server. |
ad.serverUrl | Identifies the URL to the Google ad decision server. Example: ad.serverUrl= http://pubads.g.doubleclick.net /gampad/ads? | |
ad.sz | Indicates the size of the master video ad slot. Example: ad.sz=640x480 | Passes unaltered to the ad server. |
ad.ad_rule | Determines whether video ad requests will be an ad rule request. Valid values are: 0: VAST Template 1: Ad rules playlist Example: ad.ad_rule=0 | Passes unaltered to the ad server. |
ad.addtl_consent | Global Data Privacy Parameter. A string that contains a list of consented and/or disclosed Google ad technology providers (ATPs) that are not registered with IAB. Example: 2~1.35.41.101~dv.9.21.81 means that the user has consented to ATPs with IDs 1, 35, 41 and 101, ATPs with IDs 9, 21, and 81 have been disclosed to the user and the string is created using the format defined in the v2 specification. | Passes unaltered to the ad server. |
ad.an | Passes unaltered to the ad server. | |
ad.attmas | Passes unaltered to the ad server. | |
ad.ciu_szs | Identifies one or more companion sizes as a comma-separated list. Example: ad.ciu_szs=728x90,300x250 | Passes unaltered to the ad server. |
ad.cmsid | Identifies the CMS source ID for the system hosting video content for your network. Google automatically assigns one ID per content source. | Passes through a cmsid parameter value. If the cmsid value starts with $ then we will look for a key in the asset’s meta data and pull in its value. If the cmsid value starts with @ then we will look for a key in the asset itself and pull its value. Otherwise use the external_id on the asset if it exists, or the beam id. |
ad.correlator | Passes through as same_scor , default to timestamp. | |
ad.cust_params | Defines custom targeting parameters. Example: ad.cust_params= adrule=premidoptimizedpod | Passes unaltered to the ad server. |
ad.dc_lat | Passes unaltered to the ad server. | |
add.dc_rdid | Passes unaltered to the ad server. | |
ad.description_url | Identifies the URL of the page that contains the player that submitted the request. This URL should be specific to the video as opposed to the domain for all ad requests. | |
ad.env | Forced to vp. This is a static parameter that cannot be overwritten. | |
ad.excl_cat | Ad exclusion category. Blocks any line items containing the exclusion label from being eligible for a given ad request. Use this parameter in conjunction with the scp and cust_params parameters.Example: &ad.scp=excl_cat% 3Dairline_exclusion_label%7C | |
ad.extcalls | Set it to liveconnect to instruct Google Ad Manager to enable integration with LiveConnect. Example: ad.extcalls=liveconnect | Passes unaltered to the ad server. |
ad.gdfp_req | Forced to 1. This is a static parameter that cannot be overwritten. | |
ad.gdpr | Global Data Privacy Parameter. Possible values: 0 / 1 0=GDPR does not apply. 1=GDPR applies. Example: ad.gdpr=1 | Passes unaltered to the ad server. |
ad.gdpr_consent | Global Data Privacy Parameter. URL-safe, base 64-encoded Transparency and Consent string. Only meaningful if gdpr=1. Example: ad.gdpr_consent=1 | Passes unaltered to the ad server. |
ad.gpp | Global Privacy Platform Parameter. This specifics the US-National Consent String and its value. Example: &ad.gpp=<GPP_Consent_String_Value> &ad.gpp_sid=<String_Type> | Passes unaltered to the ad server. |
ad.gpp_sid | Global Privacy Platform Parameter. This specifies the GPP consent string type. Example: &ad.gpp=<GPP_Consent_String_Value> &ad.gpp_sid=<String_Type> | Passes unaltered to the ad server. |
ad.hl | Identifies the language code used to request the ads. Example: ad.hl=it Default value: en | Passes unaltered to the ad server. |
ad.idtype | Identifies the type of device. Key information:
ad.idtype=adid | Passes unaltered to the ad server. |
ad.impl | Forced s. This is a static parameter that cannot be overwritten. | |
ad.is_lat | Determines whether the Limit Ad Tracking (LAT) will be enabled. LAT allows users to opt-out from user behavior-based ad targeting. Key information: This parameter is required for frequency capping. This parameter requires the ad.rdid and ad.idtype parameters.Valid values are: 0: Disables LAT. 1: Enables LAT. Example: ad.is_lat=1 | Passes unaltered to the ad server. |
ad.ipe | Forced to ssb when using a cert. | |
ad.iu | Combines two other passed in parameters, networkid and adunit. “/networkidadunit”. | |
ad.lip | Required for a request from the last position in a standardized ad pod. Example: ad.lip=true | Passes unaltered to the ad server. |
ad.ltd | The limited ads parameter accepts a constant value that indicates whether to serve ads in a limited way in the absence of consent for the use of cookies or other local identifiers. Unlike other URL parameters, setting ltd=1 changes the behavior of the IMA SDK to treat the request as ID-less and to disallow storage. Example: ltd=1 | Passes unaltered to the ad server. |
ad.max_ad_duration | Required for min_ad_duration. Determines the ad’s maximum duration in milliseconds. Use this parameter when requesting a single ad. Example: ad.max_ad_duration=60000 | Passes unaltered to the ad server. |
ad.min_ad_duration | Required for max_ad_duration .Determines the ad’s minimum duration in milliseconds. Use this parameter when requesting a single ad. Example: ad.min_ad_duration=15000 | Passes unaltered to the ad server. |
ad.mridx | Determines whether the request to the ad server will identify the current mid-roll ad break by its position within the current playback session. Include this information by setting this parameter to: enabled Example: ad.mridx=enabled #View deprecated behavior. You may also pass the current mid-roll ad break’s position within the current program by enabling the ad.pod parameter. | Gets the midroll ad break number for this session. |
ad.msid | Passes unaltered to the ad server. | |
ad.nofb | Passes unaltered to the ad server. | |
ad.npa | Determines whether non-personalized ads will be requested. This parameter is required for compliance with the EU General Data Protection Regulation (GDPR). Valid values are: 0: Indicates that the ad request is eligible for personalized ads. 1: Indicates that the ad request should only serve non-personalized ads. Example: ad.npa=1 | Passes unaltered to the ad server. |
ad.omid_p | Passes unaltered to the ad server. | |
ad.paln | Pass client data to Google Ad Manager. | Passes unaltered to the ad server. |
ad.pmad | Determines the maximum number of ads in a pod. Example: ad.pmad=4 | Passes unaltered to the ad server. |
ad.pmnd | Passes unaltered to the ad server. | |
ad.pmxd | If live, this value will be the ad break duration sent to the slicer, or will default to 4 minutes. For vod, this passes unaltered to the ad server.. | |
ad.pod | Determines whether the request to the ad server will identify the current mid-roll ad break by its position within the current program. Use this parameter for competitive exclusions, frequency capping, and related features. Include this information by setting this parameter to: enabled By default, the position of the current mid-roll ad break is calculated based off of the ad breaks detected within the asset corresponding to the current program. However, you may manually indicate this information within a live event by setting the breakSeq metadata field to a 1-based index value that identifies the current mid-roll ad break’s position within the current program (e.g., 1 = first pod, 2 = second pod, and 3 = third pod). Use the breakSeq metadata field to ensure data consistency when restarting or switching between Live Slicers. Pass metadata (e.g., breakSeq) via the add_meta endpoint in the Live Slicer API. Example: ad.pod=enabled #View deprecated behavior. You may also pass the current mid-roll ad break’s position within the current playback session by enabling the ad.mridx parameter. | Set by Uplynk system based on the slicer’s count of the ad breaks. |
ad.postroll | Determines whether playback will include a post-roll. Valid values are: 1: True 0: False Example: ad.postroll=1 | |
ad.pp | Identifies a video creative profile that determines which creatives are eligible to be served. Example: ad.pp=video_creative_profile | Passes unaltered to the ad server. |
ad.ppid | Indicates a Publisher Provided Identifier (PPID). Google Ad Manager uses this ID for frequency capping, audience segmentation and targeting, sequential ad rotation, and other audience-based ad delivery controls across devices. | Passes unaltered to the ad server. |
ad.ppos | Represents the position within a pod. This value is a 1-based index (e.g., 1 = first position, 2 = second position, and 3 = third position). This parameter is required for companion autofill. Use this parameter for competitive exclusions, frequency capping, and related features. Example: ad.ppos=2 | Passes unaltered to the ad server. |
ad.preroll | Determines whether playback will include a pre-roll. Valid values are: 1: True 0: False Example: ad.preroll=1 | |
ad.rdid | Identifies a device by its identifier (e.g., Google AdID, Apple IDFA, Roku RIDA, or Xbox MSAI). Key information: This parameter is required for frequency capping. This parameter requires the ad.is_lat and ad.idtype parameters. This ID may be updated by the user at any time. Example: ad.rdid=123e4567-e89b-12d3- a456-426%20655440000 | Passes unaltered to the ad server. |
ad.scor | An integer generated for each video stream; the number needs to be the same within a stream and unique within a pageview. Use this parameter for competitive exclusions, frequency capping, and related features when a user is watching multiple videos on the same page. Example: &scor=17 | Passes through as ‘same_scor’, default to timestamp. |
ad.scp | Identifies slot-specific custom parameters. Example: ad.scp=excl_cat%3 Dairline_exclusion_label%7C | Passes unaltered to the ad server. |
ad.sdk_apis | Passes unaltered to the ad server. | |
ad.sdkv | Passes unaltered to the ad server. | |
ad.session_id | Identifies the playback session using a universally unique identifier (UUID). You may use this parameter to preserve the viewer’s privacy when setting frequency caps for ad creatives. Example: ad.session_id=123e4567-e89b- 12d3-a456-426614174000 | |
ad.sid | Passes unaltered to the ad server. | |
ad.ss_req | Passes through as ‘same_scor’, default to timestamp; defaults to 1; excluded on SSL Cert requests to GAM. | |
ad.ssss | Indicates the stitching partner. Example: ad.ssss=vdms | Forced to vdms. |
ad.tag_for_child_directed_treatment tfcd | Passes unaltered to the ad server. | |
ad.tfcd | Determines whether an ad request requires child-directed treatment. This parameter is required for compliance with the Children’s Online Privacy Protection Act (COPPA). Valid values are: 0: Disables child-directed treatment. 1: Enables child-directed treatment. Example: ad.tfcd=1 | |
ad.unviewed_position_start | ||
ad.u_paln | Passes unaltered to the ad server. | |
ad.url | Passes through as ‘same_scor’, default to timestamp; defaults to request referer. | |
ad.us_privacy | Identifies the viewer’s privacy preference. This parameter is required for compliance with the California Consumer Privacy Act (CCPA). Syntax: ad.us_privacy=Privacy Preference Example: ad.us_privacy=1YNN | Passes unaltered to the ad server. |
ad.vad_type | Determines whether a linear or non-linear ad should be returned for the request. Valid values are: linear | nonlinear Example: ad.vad_type=linear | Passes unaltered to the ad server. |
ad.vid | Identifies the video content ID for the content currently being shown to the user. This ID is assigned by the CMS that hosts your content. In most cases, the video player will add this value to the ad tag dynamically, based on the editorial content. | Passes through a ‘vid’ parameter value. If the ‘vid’ value starts with ’$’ then we will look for a key in the asset’s meta data and pull in its value. If the ‘vid’ value starts with @ then we will look for a key in the asset itself and pull its value. Otherwise use the external_id on the asset if it exists, or the beam id. |
ad.video_duration | Indicates the duration of the content in seconds. Example: ad.video_duration=9000 | |
ad.vid_d | Passes unaltered to the ad server. | |
ad.vip | Sets the viewer’s IP address (IPv4) in the ad request. Example: ad.vip=101.55.55.22 Default value: The request’s remote IP address. | Passes through as ‘same_scor’, default to timestamp; defaults to request remoteIP. |
ad.vpi | Converts an ad rule request into an inline VMAP request. Example: ad.vpi=1 | Passes unaltered to the ad server. |
ad.vpos | Indicates whether the ad request is being sent from pre-roll,mid-roll or post-roll. Default value: By default, this parameter is set to the asset’s external ID. If an external ID has not been defined, then it is set to the asset ID. Example: ad.vpos=preroll, midroll, postroll | Passes through as ‘same_scor’, default to timestamp; defaults to whether Uplynk is triggering it as a preroll or midroll. |
skippreroll | If the ad.preroll=1 URL parameter is specified in the Uplynk playback URL, the URL parameter skippreroll=1 forces Uplynk to look ahead in the stream and skip the pre-roll ad if the mid-roll is within 60 seconds of the stream start.skippreroll=1 | This URL parameter skips the pre-roll if the mid-roll ad is within 60 seconds of the stream start. |
On-Demand Streaming: Customizing Ad Content for Ad Slots
Ad requests for pre-roll, mid-roll, and post-roll ad slots can be customized by setting slot-specific values for any parameter. Mid-roll slots are identified by a zero-based index. Any of the available parameters can be overridden in the playback URL using this technique. Sample implementations for the
vpos
(ad request position) and adUnit
(the adUnit for a Google Ad Manager order) parameters are provided below.Parameter | Description |
---|---|
ad.adUnit | Determines the custom adUnit values for each ad slot. Example: ad.pre.adUnit=yourAdUnit1&ad.0.adUnit=yourAdUnit2 |
ad.vpos | Determines the custom vpos values for each ad slot. Example: ad.pre.vpos=preroll&ad.0.vpos=midroll |
Ad Pod Duration
The duration of an ad pod can be customized by setting slot-specific values for the pmad and pmxd parameters.
Parameter | Description |
---|---|
ad.pmnd | Required for pmxd. Determines the ad pod’s minimum duration in milliseconds. Use this parameter when requesting multiple ads (i.e., an ad pod). Example: ad.pmnd=0 |
ad.pmxd | Required for pmnd. Determines the ad pod’s maximum duration in milliseconds. Use this parameter when requesting multiple ads (i.e., an ad pod). Example: ad.pmxd=60000 |
Macro Definitions
The system replaces the following macro definitions in the request URL with session-specific values.
Macro | Value |
---|---|
CORRELATOR | timestamp |
SCOR | timestamp |
URL | referrer url |