If you’re in the Northern Hemisphere like I am, then you’re probably also experiencing the sweltering heatwave we’re enjoying this summer. You know what’s a great way to beat the heat? Stay inside and upgrade your DFP API version to the other hotness: v201608. If the prospect of air-conditioning isn’t enough to draw you away from the allure of melting outside, consider the following additional enhancements!

Programmatic & Sales Manager

One of the biggest features we’re adding to the DFP API is the support for programmatic guaranteed deals. This allows you to perform the end-to-end work of defining your inventory, negotiating with buyers, and trafficking to DFP all using the same great API you know and love (ours). To see how to create and use programmatic objects, see our API guide.

In addition to programmatic guaranteed, we’ve further enhanced the ProposalLineItem object by now providing information on whether the pricing model is Gross or Net via the ProposalLineItem.rateCardPricingModel field.


On the trafficking front, we’ve added the ability to delineate whether or not a creative isSafeFrameCompatible for applicable creative types such as CustomCreative. We’ve also added viewability tracking event types which can now be found on the ConversionEvent object. And finally, the one you’ve all been waiting for - there’s now support for the popular Html5Creative type.


It’s not December, but it sure feels like the holiday season. If you’ve ever wanted to run a query you had saved in the UI, the ReportService has got your back. We’ve added ReportService.getSavedQueriesByStatement, which allows you to retrieve reports you’ve created in the UI. You can then run these using ReportService.runReportJob.

Of course, since this is an action-packed release, we can’t possibly list out everything we’ve changed in a blog post, so take a peek at the full release notes.

As a reminder, with each new release comes a new deprecation (this one’s special, it’s a double deprecation!). If you're using v201511 or earlier, it's time to look into upgrading to v201608. If you have any questions about upgrading, let us know on the developer forum.

In AdWords you could choose to optimize your automated bidding on "Converted clicks" or "Conversions." AdWords recently announced that we're saying goodbye to "Converted clicks" in favor of “Conversions,” which offers much more flexibility and measurement options. As a result, we’re updating the API.

The conversionOptimizerMode attribute of the Customer.conversionTrackingSetting allowed you to set ONE_PER_CLICK ("Converted clicks") or MANY_PER_CLICK ("Conversions") at the account level.

Starting on September 21, 2016, all AdWords accounts will be automatically migrated to set conversionOptimizerMode to MANY_PER_CLICK, and new mutate operations to change this setting will fail with RequestError.INVALID_INPUT.

Prior to September 21, 2016, ensure your CustomerService mutate requests do not attempt to modify the value of conversionOptimizerMode. You can also migrate your accounts before the migration by setting conversionOptimizerMode to MANY_PER_CLICK.

If you have any questions, please let us know on the forum.

Starting September 26, 2016, we will be removing support for all TrueView in-search video template ads (template ID 231) from Display campaigns, and will no longer accept new ads for that template. Existing Display ads of this template ID will stop serving and be moved to the DISABLED status. This is in line with the upgrade of TrueView campaigns during the integration into AdWords.

Please note that this only affects Display campaigns, and not existing video campaigns. Historical stats for these ads will still be available in reports.

If you have any questions about this change, or other questions about the AdWords API, please contact us via the forum.

Today we’re pleased to announce the new and revamped DFP Playground. Like the previous Playground, you can test PQL statements and examine JSON equivalents of the objects you retrieve from the DFP API. In the new DFP Playground, you can easily switch between services using a tab interface, and you can even view documentation for a particular service with a simple click of a button.

The new DFP Playground's tab-based interface is cleaner and less crowded.

Clicking a result produces a dropdown with the object’s JSON representation.

Checking out the GitHub project

The DFP Playground is available on GitHub. Reading the code should give you a good idea of best practices for interacting with the DFP API via the Google Ads Python client library in a web application environment. The process to set up your own instance of the DFP Playground and deploy it to AppEngine is documented in the README.

Feel free to post any bug reports or feature requests in the issues section. If you have any questions regarding the DFP API, please reach out to us on our forum.

We are making some changes to the way AdWords scripts returns quality score data for keywords.

We will return a null quality score for keywords that don’t have enough impressions and clicks to determine a Quality Score, such as new keywords or old ones that haven't served a long time. This will impact your scripts in two ways:
  • Reports: Starting with version v201607, the Critieria Performance and Keywords Performance reports will return a quality score of “--” for these keywords. Past versions (v201605 and earlier) of these reports will remain unchanged.
  • getQualityScore method: Starting the week of Sep 12, 2016, the getQualityScore method of the Keyword entity will return NULL score for these keywords instead of a numeric value.
If you use use quality score information in your script, please make sure you update it to work with the new changes.

Filtering on quality score

Filtering on quality score will work as follows:
  • If no filtering conditions are specified on the QualityScore field, all matching keywords are returned, including those with NULL quality score.
  • If numerical filtering conditions are specified on the QualityScore field, keywords with NULL quality score information are excluded automatically. For example, QualityScore <= 6 will include keywords with quality score from 1 to 6 but exclude keywords with NULL quality score.
  • To retrieve keywords with NULL quality score, filter using the condition HasQualityScore = FALSE.
  • To retrieve keywords with NULL quality score along with keywords with specific quality scores, you need to run two separate reports and combine the results locally.
If you have any questions about these changes or AdWords scripts in general, you can post them on our developer forum.

Today we're releasing v2.6 of the DCM/DFA Reporting and Trafficking API. This release includes a number of highly anticipated features, such as: We've also improved click-through URL management for Display creatives, expanded custom floodlight variable support, and much more. See our release notes for full details.

Retiring legacy creative types

Beginning with this release, the DCM API no longer supports creating legacy HTML5 Banner and Image creatives. As previously announced, these legacy types have been replaced by the new streamlined Display creative.

Additionally, the ability to upload Flash assets into DCM was disabled back in June. Accordingly, this functionality is also being removed from the API beginning with this release. Previous API versions will continue to support uploading Flash assets until their respective sunset dates, but users are strongly encouraged to begin transitioning to HTML5 now.

Deprecation and sunset reminder

In accordance with our deprecation schedule, this release marks the beginning of the deprecation period for v2.5, which will sunset on February 28th, 2017. After this date, any requests made against v2.5 will begin returning errors.

As a reminder, API v2.3 will be sunset on August 31st, 2016. To avoid an interruption in service, all users are required to migrate off of this version by the sunset date.

Learn More

As with every new version of the DCM/DFA Reporting and Trafficking API, we encourage you to carefully review all changes in the release notes. For those of you looking to get going right away, updated client libraries are now available. If you're just starting out, the Get Started guide is a great reference to help you get up and running quickly.

Give it a try and let us know if you have any questions!


The transformation of Firebase into a unified mobile platform brought with it new Gradle artifacts and CocoaPods that mobile developers can use to import the Mobile Ads SDK. With these additions, there are now several alternatives for each platform. Thanks to your feedback, we wanted to share a little more information about which ones we recommend and what libraries they include, so here's a quick run-down.

Android & Gradle

firebase-ads (recommended)

This is the best way to get the Mobile Ads SDK into your project. With the firebase-ads artifact, you get everything you need to load and display ads from AdMob, DFP, or AdX, plus Firebase Analytics built in. You'll also be ready to add the client components for any other Firebase services you want to use, like firebase-crash or firebase-config. Unless you have a specific need to use the SDK without Firebase, this is your jam.

If you'd like to see a screencast of how to get up and running with AdMob using firebase-ads, check out this episode of the Firecasts series:


For those not using Firebase, this Gradle artifact contains the Mobile Ads SDK on its own. You'll get the client code for AdMob, DFP, and AdX, but no Firebase services.


This is the full Google Play services client, also without Firebase. This gives you not only the Mobile Ads SDK, but all the other Google Play services SDKs as well: Maps, Drive, Fit, and so on. Since you're probably not using every API that Play services offers, it's better to import them individually. If you need mobile ads and Play games, for example, just include play-services-ads and play-services-games.


The SDK team developed this new Gradle artifact for a very specific use-case. It contains a slimmed-down version of the Mobile Ads SDK designed to work only on devices that have Google Play services installed. If reducing app size is extremely important for you, this can help lessen the impact of the Mobile Ads SDK, but it won't be able to load and display ads on devices that don't have Play services. Make sure you're intimately familiar with your app's install base before considering this tradeoff, and see the Lite SDK guide for more details.

iOS & CocoaPods

Firebase/AdMob (recommended)

This is the Firebase CocoaPod for AdMob and the Mobile Ads SDK. While it's labelled as "AdMob," this pod gives you the iOS client code for DFP and AdX as well. You'll get everything you need to load and display ads from all three sources, plus Firebase Analytics built in. This CocoaPod is also easy to combine with any other Firebase pods your app needs, like Firebase/Crash and Firebase/Database. For most developers, this is the one you want.

The Firecasts series has an episode that shows how to import AdMob and Firebase into an app using Firebase/AdMob, so check that out for a detailed screencast:


For developers not yet using Firebase, this pod contains just the Mobile Ads SDK. You get everything necessary to show ads from AdMob, DFP, and AdX, but no Firebase services.


This is an older, alternate CocoaPod for the Mobile Ads SDK that should no longer be used. Google-Mobile-Ads-SDK is the better choice if you aren't using Firebase.

More Info

If you've got questions about Firebase and the best ways to get started, the Firebase support page also has a bunch of options that can help. If you've got technical questions about the Mobile Ads SDK itself, you're welcome to stop by the SDK support forum.