Category Archives: Ads Developer Blog

The official blog for information about the AdWords, AdSense, DoubleClick and AdMob APIs and SDKs

Sunset of the Ad Manager API v201902

On Friday, February 28, 2020, in accordance with the deprecation schedule, v201902 of the Ad Manager API will be sunset. At that time, any requests made to this version will return errors.

If you’re still using this version, now is the time to upgrade to the latest release and take advantage of new functionality like CmsMetadata reporting, the TargetingPresetService, and deal IDs on programmatic LineItems.

When you’re ready to upgrade, check the release notes to identify any breaking changes, such as the removal of the deprecated field ImageCreative.lockedOrientation.

Then, grab the latest version of your client library and update your code. As always, don't hesitate to reach out to us on the developer forum with any questions.

Upcoming sunset of message extensions in in AdWords and Google Ads APIs and Google Ads scripts

On January 27, 2020, message extensions will be sunset in AdWords and Google Ads APIs and Google Ads scripts. After the sunset date:
  • All existing message extensions will no longer serve.
  • You will not be able to create new message extensions or update existing extensions.
  • You will still be able to retrieve data for existing message extensions until the end of 2020.
  • You will also be able to remove the existing message extensions until the end of 2020.
What will happen when you try to create or update message extensions after the sunset date?
If you try to create or update a message extension, you will see the following errors:

Google Ads API
  • Trying to create or update a TextMessageFeedItem will result in the ExtensionSettingError.INVALID_FEED_TYPE error.
  • Trying to create or update a message extension via FeedMapping with placeholder_type set to MESSAGE will result in the FeedMappingError.INVALID_PLACEHOLDER_TYPE error.

AdWords API
  • Trying to create or update a MessageFeedItem will result in the ExtensionSettingError.INVALID_FEED_TYPE error.
  • Trying to create or update a message extension via FeedMapping using placeholder type ID 31 will result in the FeedMappingError.INVALID_PLACEHOLDER_TYPE error.

Google Ads scripts
Trying to execute the following operations will result in the error, “Cannot operate on deprecated placeholder type” (translated to the language based on your locale):
What do you need to do?
  • Retrieve all the data from your existing message extensions that you need. All message extension data will be deleted at the end of 2020.
  • Ensure that your programs don’t contain any code trying to create or update message extensions after the sunset date.
As always, if you have any questions, feel free to reach out to us on the Google Ads API forum.

The Interactive Media Ads (IMA) SDK for Android moves to Google’s Maven repository

With the release of version 3.16.0 of the Interactive Media Ads SDK (IMA SDK) for Android, the location where we host the SDK has changed to Google's Maven Repository.

As a result of this change, your Android project should include a reference to the google() repository (Google's Maven Repository) as a dependency. Previously, the SDK was hosted on JCenter. You can now remove the jcenter() reference from your Android project’s build.gradle file, as long as none of your other dependencies are hosted there.

The google() repository should be referenced in the project-level build.gradle file of your project. You should then import the IMA SDK in the app/build.gradle file. See an example in the following code snippet from the Adding the IMA Android SDK to the player app section of the Android IMA SDK getting started guide.

repositories {
google()
}

dependencies {
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.16.0'
}

Another change that comes from this update is that the com.google.android.gms:play-services-ads-identifier target is now included as a dependency of the IMA SDK and is no longer required to be explicitly included in the app/build.gradle file.

If you have questions about the IMA SDK for Android, please see the SDK documentation, or reach out to us on the IMA SDK forum.

Smart Display Campaigns Change in AdWords API and Google Ads API Starting January 31, 2020

On January 31, 2020, the AdWords API and Google Ads API will no longer allow positive user list criteria in Smart Display campaigns.

What happens to my existing Smart Display Campaigns?
Existing Smart Display campaigns with positive user list targeting:
  • Will continue to serve without interruption.
  • Will no longer allow adding a positive CampaignCriterion or AdGroupCriterion with a user list criterion.
  • Will no longer serve if the ad group is paused and then restarted.
What code do I need to change?
Please update your code that manages Smart Display campaigns per the following updated validation rules:
AdWords API Google Ads API
Positive CampaignCriterion.criterion set to CriterionUserList can no longer be added. Positive CampaignCriterion.user_list can no longer be added.
Positive AdGroupCriterion.criterion set to CriterionUserList can no longer be added. Positive AdGroupCriterion.user_list can no longer be added.

You will receive a CANNOT_TARGET_CRITERION error if you try to add one of these criteria.

Why is this changing?
Adding these criteria for Smart Display campaigns was never formally supported as outlined in our Smart Display campaigns guide. Additional validation is being put in place now to make sure that these values are not being set. Please see the guide for supporting criteria.

If you have any questions while updating your code, please reach out to us on our Google Ads API and AdWords API forum.

AdFormat Change in AdWords API and Google Ads scripts Starting January 31, 2020

On January 31, 2020, the AdWords API and Google Ads scripts will start returning UNKNOWN for AdFormat in the Geo Performance Report. All other reports with AdFormat will not be affected. The Google Ads API is not affected as the field does not exist.

Please update your code where it uses these fields:
AdWords API Google Ads API Google Ads scripts
AdFormat in GEO_PERFORMANCE_REPORT NOT AFFECTED AdFormat in GEO_PERFORMANCE_REPORT

If you have any questions while updating your code, please reach out to us on our Google Ads API and AdWords API forum or our Google Ads scripts forum.

Conversion reporting issues for November 11 through November 20

Update: We have edited this post to add more details about the reporting bug and list affected fields in the AdWords API and Google Ads API beta.

On Nov 20 at approximately 9pm PST, a bug caused Google Ads Search and Shopping conversions occurring between Nov 11 12:01 AM PST and Nov 20 11:59 PM PST to be overreported for advertisers using non-last click attribution models. This bug impacts reports in all Google Ads interfaces, including any report data downloaded via the AdWords API, Google Ads API and Google Ads Scripts. Google Ads bid strategies are not impacted by this issue.

The following reporting fields are affected in the AdWords API and Google Ads API beta. Google Ads scripts that reference the AdWords API fields below and any derivative custom columns based upon these metrics may also be affected.

AdWords API Google Ads API beta
Conversions
ConversionValue
ConversionRate
ValuePerConversion
CostPerConversion
AllConversions
AllConversionValue
AllConversionRate
ValuePerAllConversion
CostPerAllConversion
CurrentModelAttributedConversions
CurrentModelAttributedConversionValue
ValuePerCurrentModelAttributedConversion
CostPerCurrentModelAttributedConversion
metrics.all_conversions
metrics.all_conversions_from_click_to_call
metrics.all_conversions_from_interactions_rate
metrics.all_conversions_from_interactions_value_per_interaction
metrics.all_conversions_value
metrics.all_conversions_value_per_cost
metrics.conversions
metrics.conversions_from_interactions_rate
metrics.conversions_from_interactions_value_per_interaction
metrics.conversions_value
metrics.conversions_value_per_cost
metrics.cost_per_all_conversions
metrics.cost_per_conversion
metrics.cost_per_current_model_attributed_conversion
metrics.cross_device_conversions
metrics.current_model_attributed_conversions
metrics.current_model_attributed_conversions_from_interactions_rate
metrics.current_model_attributed_conversions_from_interactions_value_per_interaction
metrics.current_model_attributed_conversions_value
metrics.current_model_attributed_conversions_value_per_cost
metrics.value_per_all_conversions
metrics.value_per_conversion
metrics.value_per_current_model_attributed_conversion

We are actively working on fixing the bug and correcting the conversion data.

We appreciate your patience as we work to resolve this issue as quickly as possible.

Announcing v1.1 of the DoubleClick Bid Manager API

We are pleased to announce the release of version 1.1 of the DoubleClick Bid Manager API. The full v1.1 API documentation can be found here.

Major changes

This release contains two major changes that affect the API methods queries.createquery, queries.getquery, queries.listqueries, and reports.listreports. All other API methods remain unchanged.

One-to-one API filters to report column mappings

In v1, some report columns were not mapped to any API filters and could only be included indirectly by adding related API filters in createquery. For example, in v1, report column “Advertiser Integration Code” could only be accessed by including API filter FILTER_ADVERTISER in calls to createquery

Starting with v1.1, a new API filter FILTER_ADVERTISER_INTEGRATION_CODE maps to report column “Advertiser Integration Code”, and it is no longer automatically included when using FILTER_ADVERTISER. Instead, this new filter needs to be added to the report explicitly.
Refer to the v1.1 API filter documentation for a full list of the new API filters.

Pagination support 


In v1, listqueries and listreports attempted to retrieve all Queries and Reports and would time out if there were too many resources to return. Starting with v1.1, responses from these two methods are paginated, making all resources retrievable.

Refer to the v1.1 API release notes for more details.


- DBM API Team

September 2019 Ad Manager Developer Workshop Materials

Thanks to everyone who was able to make it to the September 2019 Ad Manager Developer Workshop in London!

If you are interested in the content we covered, you can now access the presentation materials from the workshop talks. We have also posted videos of the talks on our Ads Developers YouTube channel.

As always, if you have general API questions or comments, please reach out to us on the Ad Manager API forums.

Introducing adaptive anchor banners

In today’s mobile-first world, app publishers who use banner ads must serve them across a greater variety of screen sizes and layouts than ever before. Existing responsive banner ad formats often produce ads that are too small and not optimally tailored to the specifications of each device.

To address this, we’ve created a new banner type called adaptive anchor banners. These banners dynamically adjust creative size to deliver an ad that is ideally sized across all of your user’s devices, without the need to write any custom code.

These banners are designed to replace standard 320x50 and leaderboard banner sizes, as well as smart banners. Here is a comparison of the 3 formats on a standard mobile device:

Standard banner vs. smart banner vs. AdMob’s adaptive anchor banner


Migrating your banner implementation to adaptive

Here are a few simple steps to update your banner implementation to use adaptive banners:

  1. Ensure your UI supports a variable height banner. Depending on what constraints or layout mechanism you are using to position your banner, you may need to remove height constraints such that the layout accepts variable content size.
    • For Android this can be done using WRAP_CONTENT.
    • For iOS constrain your banner in terms of X and Y positions, you may also give it a width constraint, but ensure any height constraint or content size is placeholder only.

    Note that the max height is 15% of the device height or 90px, whichever is smaller.

  2. Use the adaptive banner ad size APIs to get an adaptive ad size. The adaptive ad size APIs are available for different orientations.

    Android:
    AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(context, width)
    AdSize.getPortraitAnchoredAdaptiveBannerAdSize(context, width)
    AdSize.getLandscapeAnchoredAdaptiveBannerAdSize(context, width)

    iOS:
    GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(width)
    GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth(width)
    GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth(width)

    Unity:
    AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(width)
    AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth(width)
    AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth(width)

    Which one you use depends on your use case. If you want to preload ads for a given orientation, use the API for that orientation. If you only need a banner for the current orientation of the device, use the current orientation API.

    Once you have an ad size, set that on your banner view as usual before loading an ad. The banner will resize to the adaptive ad size as long as you have laid it out without any conflicting constraints.

  3. Update your mediation adapters. If you use mediation, update your mediation adapters to the latest version. All open source mediation adapters that support banners have been updated to support the adaptive banner ad size requests. Note that adapters will still only return ad sizes supported by their corresponding ad network SDK, and those ads will be centered in your adaptive banner view.

Review our developer resources

For further information including detailed implementation guidance, review our developer resources:

As always, please reach out on our developer forum if you have any questions.

Announcing v201911 of the Google Ad Manager API

We're happy to announce that v201911 of the Google Ad Manager API is available starting today. This version brings new reporting and video features, unlocking new possibilities for automation in your Ad Manager network.

Reporting
  • We’re improving our reporting error messages so that you can better understand what went wrong in a number of situations, including when a report has an invalid date range.
  • You can now break down reports by CMS Metadata, which was added as a targeting option in v201902 of the Ad Manager API.
Video
  • On video line items, you can now read and write customVastExtension, which provides access to XML extensions that are part of the VAST specification (both v3 and v4).
  • For further configurability of Dynamic Ad Insertion, you can now set the mediaPlaylistOriginForwardingType and mediaPlaylistOriginPathPrefix fields on CdnConfigurations.

If you’re on an older version of the Ad Manager API, now is a great time to upgrade to take advantage of these and other recent features like the TargetingPresetService, which was added in v201905. The release notes contain the full list of API changes for v201911 and all other active API versions.

Feel free to reach out to us on the Ad Manager API forum with any API-related questions.