Category Archives: Ads Developer Blog

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

KeywordOptimizer: Call For Feature Requests

The KeywordOptimizer open-source app demonstrates the exciting possibilities of using the Targeting Idea Service in the AdWords API to identify new keyword suggestions. The app shows how, in combination with estimated traffic volume, to generate new keyword targeting ideas for AdWords using an evolutionary approach. We think that there is a lot more that the tool could do to demonstrate these and other features so we’re asking for your ideas to help shape the future development of the app.

If you’re interested in using KeywordOptimizer or are already using it, we would like to hear your ideas on how we can improve the app. Please submit your suggestions via the GitHub issues page.

Announcing v201710 of the AdWords API

Today we’re announcing the release of AdWords API v201710. Here are some of the highlights for key AdWords features: If you’re using v201702 of the AdWords API, please note that it will be sunset on February 14, 2018. We encourage you to skip v201705 and v201708 and migrate straight to v201710. Please note that v201705 is deprecated. As mentioned in the recent blog post on the sunset and release schedule, both v201705 and v201708 will be sunset on March 28, 2018.

As with every new version of the AdWords API, please carefully review all changes in the release notes and the v201710 migration guide. The updated client libraries and code examples will be published within the next 48 hours.

If you have any questions or need help with migration, please post on the forum or the Ads Developers Plus Page.

AdWords API release and sunset schedule in 2018

In 2016 and 2017 we supported at least three versions of the AdWords API at any given time and four versions for a brief period after each new release. This led to older versions of the API supporting outdated functionality and lacking new features.

To improve your AdWords API experience, we will be updating our release schedule. Starting in March 2018 we will only support two releases concurrently at all times, and three releases for a brief period of four weeks, allowing developers to skip a version. To get us back on schedule, we will concurrently sunset v201705 and v201708 in March 2018. This brings the average lifespan of every API version released in 2018 down to nine months.

Additionally, we will be moving back to a schedule that releases three versions per year. The 2018 releases are scheduled for February, June and September.

As usual, make sure to check our deprecation schedule for more details on sunsets. If you have any questions about the new schedule, please reach out to us on the AdWords API forum or the Ads Developers Plus Page.

Sunset of DFP API v201611


On Thursday, November 30th, 2017, in accordance with the deprecation schedule, v201611 of the DFP API will be sunset. At that time, any requests made to this version will return errors.

If you’re still using this version, now’s the time to upgrade to the latest release and take advantage of new features like support for creating ImageOverlayCreatives, new Ad Exchange reporting dimensions and columns, and the change history table. In order to upgrade, check the release notes to identify any breaking changes, grab the latest version of your client library, and update your code.

Significant changes include:


This is not an exhaustive list, so as always, don't hesitate to reach out to us with any questions. To be notified of future deprecations and sunsets, join the DFP API Sunset Announcements group and adjust your notification settings.

Google Mobile Ads SDK release 7.24.1 supports iOS 11

We're happy to announce that with this week's release of version 7.24.1, the Google Mobile Ads SDK is officially iOS 11 ready. You can get the latest version via CocoaPods or via manual download.

Check the release notes for a full list of updates. One prominent issue that this SDK release resolves is the banner ad views rendering out of bounds in some situations on iOS 11.

Stay tuned for another SDK update ahead of the iPhone X release. Speaking of which...

iPhone X

At this year's launch event, Apple announced a new iPhone, the iPhone X. With this new device comes a new form factor and some additional design considerations for developers, as the rounded corners, notch, and soft home button on the extended screen can obscure content.

With this in mind, we want to highlight some best practices for Google Mobile Ads publishers to ensure that ad placement conforms to Apple's new design guidelines for the iPhone X and iOS 11.

Banner and native ads should be placed inside the safe area, a concept new to iOS 11. This ensures that ad content is not obscured. Additionally, the safe area respects UI elements such as navigation bars, the status bar, and tab bars on all iOS 11 devices.

When using autolayout, ensure any constraints are relative to safe area layout guides. If you're using manual layout, check that banners and native ads fit within the safeAreaInsets.

For interstitials and rewarded video ads, we're working to ensure all controls and important content are also placed within the safe area. Keep an eye out for another Google Mobile Ads SDK release ahead of the iPhone X release date.

If you have any questions about iOS 11 support in the Google Mobile Ads SDK, please drop us a line at the developer forum.

ExoPlayer Releases IMA Extension

Users of ExoPlayer, an extensible, open-source media player for Android, can now easily integrate with the IMA SDK using the new ExoPlayer IMA extension. The IMA extension, released alongside ExoPlayer 2.5, wraps the IMA SDK for Android and provides seamless ad playback.

The extension ensures that ads are integrated into ExoPlayer's video timeline, and UI components are ad-aware. It also reduces buffering by eliminating the need to swap out and rebuffer the video player's source when transitioning between ads and content.

You can find more details on the extension in ExoPlayer's blog post on Medium, and find the extension on GitHub. If you have any questions or issues, please file them on ExoPlayer's issue tracker.

Changes to data feed management in the Content API for Shopping

Starting today, the Datafeeds service will allow you to use the Content API for Shopping to set up data feeds that target multiple countries and/or languages, which a recent update added to the Merchant Center. The update to the Datafeeds service will also allow you more control over the destinations for products in data feeds managed via the Content API.

What's changing?
To handle feeds that target multiple countries and/or languages, a new targets field is being added. This field contains a list of targets, and each target contains the following fields: Note: The above links to the reference documentation for the new fields will go live on the same day that the feature is introduced.

The following now-redundant fields are being deprecated: Currently, code that uses these deprecated fields will continue to work as before for managing feeds with a single target. Any changes made via these deprecated fields will also appear as a single target in the new targets field, and vice versa if the targets field contains a single target. These deprecated fields will not be returned when retrieving feeds with multiple targets. Since these deprecated fields may be removed in the future, we recommend migrating your code to use the new targets field now.

To support feeds that have multiple targets, the Datafeedstatuses.get method now takes two additional parameters: These new parameters must be supplied for feeds that have multiple targets, since the status of a feed may differ depending on the target. These parameters can be omitted when retrieving the status of a feed with a single target.

Similarly, when retrieving all feed statuses using the Datafeedstatuses.list method, you will receive multiple entries for a feed with multiple targets, where each entry corresponds to a particular target.

What do I need to do?
To manage feeds that use any of the following features, you must update your code to use the new targets field:
  • Feeds that target multiple countries and/or languages
  • Feeds that exclude destinations that are included by default
In addition, you must supply the new country and language parameters when retrieving the status of a feed that has multiple targets.

Otherwise, your existing code will continue to work as before. However, since we may remove the old fields in the future, we recommend you update your code for managing data feeds to use the new targets field.

Note: To use the new targets field and the new country and language parameters if you are using one of the Content API client libraries, update to a version published on or after Sep 21, 2017.

If you have any questions or feedback about the changes to data feed management or other questions about the Content API for Shopping, please let us know on the forum.

Upgrade to AdWords Universal App campaigns from mobile app install campaigns before October 16th

What’s changing?
On August 14th, we announced that AdWords users should start migrating their mobile app install campaigns to Universal App campaigns (UACs). Starting on October 16, 2017, all requests to create new mobile app install campaigns will fail, and all requests to add ads and ad groups to these existing campaigns will fail with an ADD_OP_NOT_PERMITTED error. Edits to these existing campaigns will still be allowed. Starting on November 14, 2017, these mobile app install campaigns will be deleted and will stop serving. Reporting stats for these campaigns will still be available. Mobile app engagement campaigns will not be affected.

Why is this happening?
If you want to learn more about these changes, check out our Propel your mobile app growth with Universal App campaigns announcement.

What should I do?
To avoid errors when managing your mobile app campaigns, here’s what you need to do by October 16th:
  • Modify your code to enable the creation of Universal App campaigns. Check out our guide on creating Universal App campaigns, which includes code samples in all client library languages.
  • Disable the creation of mobile app install campaigns and adding ad groups or ads in these campaigns. Edits will still be allowed.
To keep your ads serving beyond November 14th:
  • Search for all campaigns in your accounts that have campaign status ENABLED or PAUSED with advertisingChannelSubType DISPLAY_MOBILE_APP or SEARCH_MOBILE_APP. After November 14th, these campaigns will have a status of REMOVED because they will be deleted automatically by the AdWords system.
  • Create a new Universal App campaign to replace each campaign you find.
  • Once that Universal App campaign is online and serving, remove the mobile app install campaign.
Where can I learn more?
Here are a few resources to get you started: If you have questions while you’re upgrading, please reach out to us on the AdWords API forum.

Changes to sub-account deletion in the Content API for Shopping


What's changing?

Currently, the Accounts.delete method deletes sub-accounts whether or not they contain products. On Sep 28, 2017, we will change the default behavior of Accounts.delete to only delete empty sub-accounts. We are introducing this change to help avoid accidental deletion of sub-accounts that are still serving products.

To override this behavior, we have introduced a force parameter, which currently defaults to true. On Sep 28, 2017, the default value will change to false. After this change, you must set this parameter to true to delete non-empty sub-accounts. Attempts to delete non-empty sub-accounts with force = false will result in a 403 Forbidden error. The error will also explain how to delete the non-empty account.

What do I need to do?

Right now, we suggest you familiarize yourself with the new force parameter. If you regularly delete non-empty accounts, you should adjust your code to set force to true to avoid errors when the default behavior changes. If you want to inspect the error that you will receive after the default behavior changes, you can manually set the force parameter to false and attempt to delete a non-empty account. (Of course, we suggest you create a new sub-account and add some products to it to try out this new behavior, instead of calling it on an existing live account.)

Once this change is live on Sep 28, 2017:
  • To delete an empty sub-account, you do not need to make any changes.
  • To delete a sub-account that contains products, you must set the new force flag to true when calling Accounts.delete.

Note: If you are using one of the Content API client libraries, you will need to update to a version published after Aug 28, 2017 to take advantage of this new parameter.

If you have any questions or feedback about the changes to account deletion or other questions about the Content API for Shopping, please let us know on the forum.

AdWords API v201609 sunset reminder

AdWords API v201609 will be sunset on October 2, 2017. After this date, all v201609 API requests will begin to fail. This AdWords API version was deprecated on May 31st, 2017. If you are still using v201609, we recommend that you skip v201702 and v201705 and migrate directly to v201708. Please migrate prior to October 2, 2017 to ensure your API access is unaffected.

We've prepared various resources to help you with the migration: As always, if you have any questions about this migration, please contact us via the forum.