Added navBar
interstitial trigger, which can display a GPT-managed interstitial ad when
a user interacts with the browser navigation bar. This feature is desktop
only.
See Display a web interstitial ad for an example.
]]>Added support for configuring publisher provided signals (PPS).
Fixed a bug where
SlotRenderEndedEvent.slotContentChanged
was always true
. Going forward, this property will only be true
if the
content of the slot changed, and false
otherwise (for example, if an ad did not fill).
Network failures for ad requests will mimic a no fill by firing a
googletag.events.SlotRenderEndedEvent
with
isEmpty
set to true
. See
Ad event listeners
for example of how to listen to this event. Change includes automatically
collapsing the slot when using
collapseEmptyDivs
.
Added support for configuring ad expansion on desktop/tablet and mobile web (partial screen).
Added support for side rail anchor ads.
New in GPT | |
---|---|
Enum |
OutOfPageFormat.LEFT_SIDE_RAIL OutOfPageFormat.RIGHT_SIDE_RAIL
|
Added support for configuring publisher privacy treatments.
Added support for Chrome prerendering. When GPT detects the page is in a prerender state, the ad request will be delayed until the page becomes visible to the user.
]]>Added support for optional web interstitial triggers.
New in GPT | |
---|---|
Object |
googletag.config.InterstitialConfig
|
Property |
googletag.config.SlotSettingsConfig.interstitial
|
Type |
googletag.config.InterstitialTrigger
|
The Protected Audience API (formerly known as FLEDGE) is transitioning to general availability with the July release of Chrome. With this, component auction-related functionality in GPT is now considered stable.
Moved from experimental to stable | |
---|---|
Object |
googletag.config.ComponentAuctionConfig
|
Property |
googletag.config.SlotSettingsConfig.componentAuction
|
Update: Beginning on or after July 5, 2023, GPT will no longer serve
outdated versions of its Javascript library, nor serve ads to those
versions. See the previous announcement
for details.
Publishers serving from www.googletagservices.com/tag/js/gpt.js may continue
to do so. However, switching to the preferred domain is recommended, as it
may improve performance and serving of gpt.js on www.googletagservices.com
may be discontinued in the future.
Beginning on or after July 5, 2023, GPT will no longer serve outdated versions of its JavaScript library. There is no impact to publishers loading GPT from an official URL. Publishers who are serving a cached version of gpt.js, pubads_impl.js, or any libraries they load must update their pages to use the official URLs. For more information, see the Get started guide.
]]>
Negative and zero size values provided to googletag.defineSlot()
and SizeMappingBuilder.addSize()
are now automatically removed, as they are invalid. As a result, existing integrations that provide such invalid values may see an
increase in publisher console messages.
However, this will have no effect on existing, valid ad requests.
Installation of Secure Signals bidder scripts by GPT will now be done earlier in GPT's execution. This may result in improved signal coverage across ad requests.
]]>Fixed a bug where creative could appear truncated when refreshing multi-size anchor slots.
]]>GPT no longer supports viewability based features on browsers that do not natively support the Intersection Observer API. Note that all supported browsers natively support this API.
Method or Event | |
---|---|
googletag.events.ImpressionViewableEvent
|
|
googletag.events.SlotVisibilityChangedEvent
|
|
googletag.pubads().enableLazyLoad()
|
Added support for sharing secure signals.
New in GPT | |
---|---|
Object |
BidderSignalProvider PublisherSignalProvider SecureSignalProvidersArray
|
Type |
SecureSignalProvider
|
Variable |
googletag.secureSignalProviders
|
The behavior of Service.addEventListener() has been changed so that when an event occurs all of the associated listeners execute before processing a later event. Prior to this change, slot render start and end event listeners for the same slot could execute out of order.
]]>Return type of
Service.removeEventListener() has been changed from boolean
to void
.
Added experimental support for FLEDGE component auctions, to enable early testing of FLEDGE with multiple sellers.
New in GPT | |
---|---|
Method |
Slot.setConfig()
|
Object |
ComponentAuctionConfig SlotSettingsConfig
|
The ContentService
API has been sunset. Calling googletag.content().setContent
now has no effect besides logging a warning. The googletag.content
property will soon be removed entirely; after that, attempting to call it will throw an exception. Use the browser's built-in DOM APIs to directly add content to div elements instead.
Added support for configuring ad request traffic source.
GPT support for traffic source | |
---|---|
Enum |
TrafficSource.ORGANIC TrafficSource.PURCHASED
|
Property | PrivacySettingsConfig.trafficSource |
Rewarded ads for web have launched. Visit the Ad Manager help center for details.
GPT support for rewarded ads for web | |
---|---|
Enum | OutOfPageFormat.REWARDED |
Event | RewardedSlotClosedEvent |
Event | RewardedSlotGrantedEvent |
Event | RewardedSlotReadyEvent |
Object | RewardedPayload |
CommandArray.push now
explicitly binds provided functions to globalThis
instead of its own
arguments
object.
Enums now also expose a reverse mapping of values to keys in order to match behavior of TypeScript enums. APIs that take enum values remain unchanged, and these new reverse mappings should not be used.
]]>Added the removeEventListener method.
Calling addEventListener multiple times with the same eventType and callback function instance is now a no-op. In other words if a single callback function instance is registered n times for the same event type, it will only execute once when the event occurs, rather than n times.
]]>
GPT's viewability events: ImpressionViewableEvent
and SlotVisibilityChangedEvent
will now continue to fire on long page sessions. Previously, they had shut
down after one hour from page load.
GPT no longer sets space for slots before fetching ads. This change reduces Cumulative Layout Shift (CLS) on sites that have not reserved space using CSS. To further reduce CLS on your site, we recommend reserving nonzero area for the ad using CSS. Learn more
]]>
Updated the behavior of enableLazyLoad()
to also delay rendering of below-the-fold slots on background tabs.
The googletag.pubads().set
and Slot.set
methods may now be called at any time before display
or refresh
. Previously set
only applied when called before googletag.enableServices
.
The googletag.pubads().setPublisherProvidedId
API may now be called at any time. Previously it only worked if called before googletag.enableServices
.
The googletag.pubads().collapseEmptyDivs
API may be called repeatedly now to change settings. Previously repeated calls would be ignored.
Launched web interstitial open beta, see help center.
]]>
Deprecated definePassback()
and defineOutOfPagePassback()
. See passback docs for how to correctly create a passback.
Updated the behavior of enableLazyLoad()
to be compatible with collapseEmptyDivs(true)
.
GPT will no longer support precise GPS location set by publishers. Specifically, googletag.pubads().setLocation()
will no longer support latitude, longitude, or radius parameters, but will instead take a freeform address.
GPT rendering logic is no longer modularized into separate files. This means that GPT will fetch fewer files in its execution, and thus slightly reduces latency, but has no net impact on user bandwidth.
When a request is triggered in GPT (by calling googletag.display()
or googletag.pubads().refresh()
), we will now internally freeze all publisher provided state so that it cannot be mutated before the request is sent. Therefore, when a request triggers, only the state added up until that point will be used for that request. Any state which is modified after that will only apply to the following requests.
There is now a new recommended snippet for creating GPT passbacks. Use of definePassback()
and defineOutOfPagePassback()
is discouraged, since these functions behave synchronously and may be blocked by certain browsers. Learn more.
Added Slot.updateTargetingFromMap()
method.
Added PubAdsService.setPrivacySettings()
as a new method of enabling privacy settings. Additional settings will be available here in the future.
Pubads service is now fully operational immediately after calling googletag.enableServices()
instead of being initialized asynchronously. This means that googletag.pubadsReady
is now guaranteed to be true right after calling googletag.enableServices()
. Polling to check the value of googletag.pubadsReady
should no longer be necessary.
Updated the behavior of enableLazyLoad()
to allow changes to lazy loading config after calling enableServices()
, with lazy loading config frozen for each slot when that slot is displayed.
Added a new supported event, SlotResponseReceived
, which fires when an ad response is received for a slot.
Added a new field, creativeTemplateId
to googleTag.ResponseInformation
.
Added a new supported event, SlotRequestedEvent
, which fires when an ad request is made for a slot.
Modified googletag.display()
to accept a googletag.Slot
as an argument.
Adds googletag.PubAdsService.enableLazyLoad()
for lazy loading ads in GPT.
Fixed a bug which caused the googletag.events.SlotOnloadEvent
to not trigger.
Adds googletag.PubAdsService.setTagForUnderAgeOfConsent()
for controlling ads for users under the age of consent, and googletag.PassbackSlot.setTagForUnderAgeOfConsent()
for marking the passback slot as coming from a user under the age of consent.
Adds googletag.PubAdsService.setRequestNonPersonalizedAds()
for controlling ads personalization.
Rolled back change which stopped removing existing content inside of slots prior to refreshing, if that content was not placed there by GPT. Contents will now be cleared.
]]>
When asynchronous rendering mode is used: Request ads using XMLHttpRequest with the HTTP GET
method where possible for all ad requests, up to the 8,192 character limit. Previously, the HTTP POST
method would have been used for ad requests exceeding 4,096 characters, up to the 8,192 character limit.
Stopped removing existing content inside of slots prior to refreshing, if that content was not placed there by GPT. This note is incorrect; see entry for Week of March 12, 2018
]]>
Support alternate syntax of [..., ['fluid'], ...]
as a NamedSized
within a multi-size array. Previously only [..., 'fluid', ...]
was considered valid.
Removed labelIds field from googleTag.ResponseInformation.
]]>
Modified googletag.display()
and googletag.pubads().display
to accept a div element as well as a div ID. This allows rendering slots inside divs which are in a shadow DOM.
Added sourceAgnosticCreativeId
and sourceAgnosticLineItemId
to SlotRenderEndedEvent
.
Released getSlots()
API on Service for retrieving the list of slots associated with a service.
Modified both Slot.clearTargeting()
and PubAdsService.clearTargeting()
to take an optional key parameter.
Errors caught in googletag.cmd.push()
are no longer invisible, and will be printed to the console.
Released SlotOnloadEvent
API to allow listening for a creative to finish loading.
Released getTargeting()
and getTargetingKeys()
APIs on PubAdsService for retrieving custom service-level targeting parameters.
Released openConsole()
API to open the Google Publisher Console without the need for a page refresh.
Released getTargeting()
and getTargetingKeys()
APIs for retrieving custom targeting parameters.
Adding configuration option where Safeframe should allow expand by pushing content: allowPushExpansion
.
Support fluid size in multi-size ad requests.
]]>
Released getResponseInformation
API which returns ad response information for the ad slot.
Released setAdIframeTitle
API which sets the input as the title of any ad container iframes that are created after.
Increased HTTP GET
ad request max length to 4,096 characters.
Adding configuration option where Safeframe should allow expand by overlaying content: allowOverlayExpansion
.
Adding configuration option where SafeFrame should use the HTML5 sandbox attribute to prevent top level navigation: sandbox
.
Adding ability to set titles for ad container iframes: setAdIframeTitle()
.
Adding an API to configure SafeFrame properties on page and slot level: setSafeFrameConfig()
.
Adding ability to destroy a slot and re-use the div: destroySlots()
.
Adding an API to force the use of safeframe on ad slots with granular controls: setForceSafeFrame()
.
Adding slot visibility events (SlotVisibilityChangedEvent
).
Adding impression viewability (ImpressionViewableEvent
).
Update passback targeting from a JSON map (Passback.updateTargetingFromMap()
).
Support of set()
and get()
AdSense attribute page_url
for passback slots.
Support for out-of-page passback.
]]>