Posted:
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.

Posted:
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.

Posted:

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.

Posted:

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.

Posted:

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.

Posted:
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.

Posted:
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.

Posted:

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.

Posted:
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.

Posted:
Since the early days of the AdWords API, we've continually evolved the platform to help you more efficiently and creatively manage large or complex AdWords accounts and campaigns.

To learn more about what's working well and what could be improved, we're running our first AdWords API feedback survey. Your answers will be completely anonymous, so we hope you'll take the opportunity to let us know about any changes you'd like to see to help make managing campaigns even easier.

SHARE YOUR FEEDBACK

The survey will close on August 30, 2017, and should take about 15 minutes to complete. Thanks in advance for sharing your thoughts to help us improve the AdWords API Developer experience for everyone.

Posted:
Today we’re pleased to announce several additions and improvements to the DFP API with the release of v201708.

CreativeService: The API now supports the skippableAdType attribute on VideoCreatives and the mezzanineFile asset on VideoRedirectCreatives.

CreativeWrapperService: The HTML header and footer fields have been renamed to htmlHeader and htmlFooter, and they are now strings instead of CreativeWrapperHtmlSnippets.

ProposalService: Proposals are now automatically synced with marketplace. Therefore, the proposal action SyncProposalsWithMarketplace has been removed (sending this action with performProposalAction is now a no-op in previous API versions).

PublisherQueryLanguageService: In v201702 the Change_History table was introduced. Now, new entities for Sales Management have been added to the EntityType column. The new entities are BASE_RATE, PREMIUM_RATE, PRODUCT, PRODUCT_PACKAGE, PRODUCT_PACKAGE_ITEM, PRODUCT_TEMPLATE, PROPOSAL, PROPOSAL_LINK, PROPOSAL_LINE_ITEM, PACKAGE, RATE_CARD, and WORKFLOW.

ReportService: DateRangeType now supports a new LAST_3_MONTHS option. Also, several deprecated reporting metrics have been removed. They can be replaced with their corresponding partner management metrics, so you will need to update any code using those fields. For more information, check out the support entry for partner management reporting metrics.

For a full list of API changes in v201708, see the release notes.

With each new release comes a new deprecation. If you're using v201611 or earlier, it's time to look into upgrading. Also, remember that v201608 will be sunset at the end of August 2017.

As always, if you have any questions, feel free to reach out to us on the DFP API forums or the Ads Developer Google+ page.

Posted:
Today we’re announcing the release of AdWords API v201708. Here are some of the highlights for key AdWords features: If you’re using v201609 of the AdWords API, please note that it will be sunset on October 2, 2017. We encourage you to skip v201702 and v201705 and migrate straight to v201708. Please note that v201702 is deprecated and will be sunset on February 14, 2018.

As with every new version of the AdWords API, please carefully review all changes in the release notes and the v201708 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.

Posted:
Starting today, calls to the Accountstatuses service return not only product-level issues, but also account-level issues. This means all account-level issues present in the Diagnostics tab of the Merchant Center can now be retrieved using the Content API. Account-level issues are located in a new accountLevelIssues field, so existing code should be unaffected by this change. For more details, see the accountStatus resource representation in the reference documentation.

Note: Some account-level issues, like unclaimed websites, were already returned as product-level issues. Currently, these issues still show up at the product level as well as at the account level, but this may change in the future.

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

Posted:
Beginning in August 2017, DoubleClick Campaign Manager (DCM) will no longer export standard tags for placements larger than 1x1. This is the next step in a phased rollout of changes aimed at aligning DCM's impression counting methodology with the latest Interactive Advertising Bureau and Media Rating Council guidelines. A full overview of these changes can be found in the DCM partner help center.

How will this affect DCM/DFA Reporting and Trafficking API users?

On August 22, 2017, the API's placements.generatetags endpoint will stop returning standard tags (PLACEMENT_TAG_STANDARD) for non-1x1 placements. Users will still be allowed to include this tag format in all generatetag requests without error, however responses will only contain standard tag data for 1x1 placements. This will be a retroactive change affecting all API versions.

What can API users do to prepare?

Users should begin updating their API workflows to request alternative tag formats, such as PLACEMENT_TAG_JAVASCRIPT or PLACEMENT_TAG_IFRAME_JAVASCRIPT, for all non-1x1 placements. Although standard tags will still be returned for 1x1 placements after August 2017, users leveraging pixels for impression tracking are encouraged to use tracking ads for this purpose, instead.

Existing non-1x1 placements trafficked using standard tags will continue to serve until October 2017. Any such placements which are part of a campaign ending later than this must be re-trafficked using an alternative tag format. Instructions for identifying these placements can be found in the DCM partner help center.

Questions about this or anything else DCM API related? Contact us via our support forum.

Posted:
Today we’re excited to announce that the Google Slides API has been added as an Advanced API to AdWords scripts. Our Advanced APIs allow you to work with other Google services within the scripts you write. The Google Slides API allows you to create and write presentations programmatically, and with AdWords scripts it can be used to publish your campaign data in a ready-to-be-shown format.

To learn more about using the Google Slides API in your scripts, please refer to our guide to working with Advanced APIs and code snippets. We encourage you to try Slides and our other Advanced APIs and let us know of other APIs you would like to see added.

As always, please leave feedback on our forum so that we may handle bugs and improve usability.

Posted:
Following the validation rule changes in May 2017, we’re updating ad groups that contain only Dynamic Search Ad features.

Specifically, we’re updating the adGroupType to SEARCH_DYNAMIC_ADS for any ad group that has all of the following properties: After the above-mentioned ad groups have the SEARCH_DYNAMIC_ADS type, you’ll be able to add only DynamicSearchAd and ExpandedDynamicSearchAd objects, and not Keyword objects as BiddableAdGroupCriterion.

As always, if you have any questions, please post on the forum.

Posted:
Back in March, we launched the new Report Builder in DoubleClick Bid Manager (DBM). Over the coming months, we'll be migrating all reports from the legacy reporting platform (v1) to Report Builder (v2). This migration will complete on September 25, 2017, at which point access to v1 reporting will be removed. We'll also be disabling access to the Google Cloud Storage buckets used by v1 reporting on that date.

Once the migration to v2 reporting is complete, the only way to access reports programmatically will be via the DBM API. Users who currently access reports through Google Cloud Storage must migrate to using the API before September 25, 2017 to avoid an interruption in service. To learn more and quickly get started with the API, visit our getting started guide.

If you have questions regarding these changes, please reach out to your DoubleClick account team.

Posted:
Starting today, we are deprecating the use of the Products.get and Products.list methods for retrieving all product attributes. These methods still work as expected today, but they may change in the future to return only partial information about products. If you want to retrieve all product attributes, you should use the Productstatuses.get and Productstatuses.list methods instead, which now optionally provide product attributes in addition to product issues and approval statuses.

Note that the Productstatuses.get and Productstatuses.list methods still do not return product attributes by default. To request product attributes be included, we have added an optional includeAttributes argument to these methods. When set, the resources returned by Productstatuses.get and Productstatuses.list will contain an additional product field that contains the attribute information.

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

Posted:

Over the past few months, a couple new projects designed to streamline AdMob and DFP mediation have launched: mediation groups, open source adapters, and network-specific guides.

Open Source Mediation Adapters on GitHub

In partnership with some of our mediation partners, we've open-sourced many of the most popular adapters used with DFP and AdMob mediation. You can see for yourself at our GitHub repos for iOS and Android:

In addition to adapter source, there's also a project containing example adapter and custom event implementations, plus a test app.

Import Mediation Adapters with CocoaPods and Gradle

In addition to open-sourcing the adapters, we've also made importing compiled adapters into your projects simpler by uploading them to Bintray and making them available via jCenter and CocoaPods. Rather than downloading and manually including libraries, publishers can get the correct adapter simply by updating their Podfile with a line like this:

    pod 'GoogleMobileAdsMediationMoPub'

...or their build.gradle file with a line like this:

    compile 'com.google.ads.mediation:mopub:11.10.1.0'

With many ad networks choosing to distribute their SDKs in the same manner, it's frequently possible to bring a new mediation network into an app with nothing more that a Podfile or build.gradle tweak. For instructions on which gradle artifacts and CocoaPods to use, check the AdMob Mediation Overview (iOS, Android) and look for networks in the "Open source and versioned" section.

Network-specific guides

Each mediated network is a little bit different. They have their own front-end, their own reporting systems, and their own vocabulary including things like "placement," "location," or "zone." Once you start trying to add a second or third network to your mediation waterfall, things can get confusing in a hurry.

To help publishers navigate through these details, we've created network-specific guides for the mediation partners who have joined our open source repositories. Each one includes step-by-step instructions (with screenshots) that guide a publisher all the way from configuring their account in the mediated network's web site to setting up their mediation stack and importing the right adapter.

For more details, there's no better place to go than the guides themselves. You can find them in the AdMob Mediation Overview (iOS, Android).

Questions?

If you've got questions about our open source adapters or the best ways to get up and running with mediation, stop by our support forum.

Posted:
We’re pleased to announce a new set of workshops for AdWords scripts in 2017. The workshops will be held at the following locations:
  • Hamburg, Germany: 10 August 2017
  • London, UK: 15 August 2017
  • Singapore: 15 August 2017
  • Sydney, Australia: 18 August 2017
  • São Paulo, Brazil: 20 September 2017
  • Buenos Aires, Argentina: 22 September 2017
This round of workshops will cater to both novice and experienced scripters. We'll have code labs where you’ll build your own scripts from scratch with help from the scripts team. Bring your laptop and some scripting ideas, and we’ll turn them into reality!

Whether you’re an advertiser who wants to learn how to use scripts to automate your account management tasks, a developer who wants to polish your skills, or you'd just like to bounce around some ideas, you can find it all in these workshops.

Availability is limited, so be sure to visit our website early to check out the full agenda and sign up.

If you have any questions about the workshops, you can post them on our forum.

Posted:

On Thursday, August 31st, 2017, in accordance with the deprecation schedule, v201608 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, Partner companies, new team actions, and the change history table. To do so, 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.

Posted:
Over the years, many developers have let us know they'd like to see more real-world AdWords API examples to help them drive their own success. To deliver on this, we've worked closely with our partners to share their innovative strategies for using the AdWords API to boost their business.

You can now find these case studies on the developer website. We plan to post more in the future, so check back for fresh insights from digital marketers on making the most of the AdWords API.

If you have any questions or feedback regarding these partner stories, please let us know on the forum.

Posted:

Starting with iOS 10, Safari on iPhone and iPod supports inline video playback. This opens up some new rendering options for your video player and the IMA SDK, but also introduces some caveats.

So what changed?

Previously, Safari on iPhone played all video in a fullscreen player. With iOS 10, Safari now supports the playsinline parameter on a video element to play that content inline.

Fullscreen playback on iPhone Mobile Safari. The default with iOS 10+ and the only option for iOS <= 10

Inline playback on iPhone Mobile Safari. A new option in iOS 10+

How will the IMA SDK work with inline video playback on mobile Safari?

On iPhone Safari, the IMA SDK re-uses your content player to play ads. We call this "custom playback." So if you add the playsinline parameter to your content video tag, IMA ads will also play inline - it's as easy as that.

Inline video playback also opens the door for the IMA SDK to play skippable ads on iPhone Mobile Safari. Previously these ads were dropped by the SDK because we could not render a skip button on top of the fullscreen player. If your player is inline, however, we can render that skip button, but there's a catch.

So what's the catch?

IMA SDK skippable ads are not supported with the "custom playback" method. To use skippable ads, you'll need to use our new API, ImaSdkSettings.setDisableCustomPlaybackForIOS10Plus(). This will cause the IMA SDK to render the ad in its own inline player on top of your content player. That player does support skippable ads. Disabling "custom playback", however, will break your fullscreen implementation for iPhone web.

Why do I need custom playback on iOS?

The need for "custom playback" on iOS boils down to one thing - fullscreen support. Mobile Safari only supports fullscreen via videoPlayer.webkitEnterFullscreen(). In this mode, the SDK cannot render anything on top of your content player. Therefore, to support fullscreen ad playback we must use "custom playback".

What if I want skippable ads and fullscreen support?

Unfortunately, this is not possible on mobile Safari today - you must choose between support for skippable ads and support for fullscreen.

What's the deal with iOS <10?

Prior versions of iOS (<10) do not have support for playsinline, so pages in those environments will always use "custom playback" mode, with support for fullscreen but no support for skippable ads.

I'm still confused.

That's OK! This is a complicated change with a lot of moving parts. Below is a support matrix outlining what is and is not supported based on your content player's playsinline mode and the "custom playback" mode you've set for the IMA SDK. Remember, this matrix only applies to iOS 10 and above - anything running version iOS 9 or below falls into the top left quadrant of the matrix, as this is the only option.

Posted:

To help developers integrate with the IMA SDK, we're always looking for ways to provide both basic and advanced examples of features supported by the SDK. Toward this end, we're pleased to release a sample JavaScript VPAID creative and sample ad tag to aid in troubleshooting JavaScript VPAID 2.0 creatives. You can check out the new sample on GitHub, and find the new ad tag in our list of IMA sample tags as 'Sample VPAID 2.0 Linear'.

The VPAID sample plays a linear video ad and demonstrates the use of the video player proxy element required to run a VPAID ad in a secure iframe.

If you have any questions, feel free to contact us via the IMA SDK developer forum.

Posted:

We've recently released some improvements to the DFP Python Library alongside support for v201705. Our goal was to reduce the boilerplate required to construct entities and DFP statements—keep reading to see what's new.

Improved statement creation utility

Previously you had to construct filtering statements manually out of strings, and write a lot of code to bind variables into statements. Here's what the code commonly looked like:

values = [{
    'key': 'startDateTime',
    'value': {
        'xsi_type': 'DateTimeValue',
        'value': {
            'date': {
                'year': start_date.year,
                'month': start_date.month,
                'day': start_date.day
            }
        }
    }
},{
    'key': 'orderName',
    'value': {
        'xsi_type': 'TextValue',
        'value': 'My Order%'
    }
}]
statement = dfp.FilterStatement('WHERE startDateTime > :startDateTime AND '
                                'orderName LIKE :orderName', values)

Dealing directly with strings opens up many potential errors, and we decided that the above was way too much typing just to bind variables. To make things easier, we've introduced a new utility called StatementBuilder. Now you can write code as simple as:

statement = (dfp.StatementBuilder()
             .Where('startDateTime > :startDateTime AND orderName LIKE :orderName')
             .WithBindVariable('startDateTime', start_date)
             .WithBindVariable('orderName', 'My Order%'))

StatementBuilder will automatically infer your variable types and construct the values object. You can then pass this to an API request in the same way that you did with FilterStatement:

response = creative_service.getCreativesByStatement(statement.ToStatement())

Automatic datetime unwrapping

Previously, you had to break out dates and datetimes into our format when constructing entity dictionaries:

line_item = {
    'orderName': 'Awesome New Order',
    'startDateTime': {
        'date': {
            'year': start_date.year,
            'month': start_date.month,
            'day': start_date.day
        },
        'hour': start_date.hour,
        'minute': start_date.minute,
        'second': start_date.second,
        'timezoneid': start_date.tzinfo.zone,
    },
    # ...
}

Starting in this version, you can simply pass a native Python date or timezone-aware datetime object directly:

start_date = datetime.datetime(2017, 6, 1, 9, 0, 0,
                               tzinfo=pytz.timezone('America/New_York'))
line_item = {
    'orderName': 'Awesome New Order',
    'startDateTime': start_date
    # ...
}

Our library will unwrap the datetime object into our format automatically. We're continuing to support passing the full dictionary, so there's no requirement to migrate your code.

We hope these changes will make building DFP integrations in Python easier. As always, please feel free to get in touch on the forum with any questions.

Posted:
We’ve enhanced structured snippets to now have even more header translations, increasing from 12 to all AdWords languages. Structured snippets are extensions that highlight products and services in your ads. Existing structured snippets will not change, so no AdWords API code changes are necessary, but consider adding structured snippets to any campaigns targeting the newly available languages.
Here are some resources to get you started with structured snippets:

As always, if you have any questions, please contact us via the forum.

Posted:

AdWords API v201607 will be sunset on June 27th, 2017, after which all v201607 API requests will begin to fail. This version was deprecated on February 28th, 2017. If you are still on v201607, we recommend that you skip v201609 and v201702 and migrate directly to v201705. Please be sure to migrate prior to the sunset 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.

Posted:

Starting today, you can use the Accounts.claimwebsite method to claim the configured website for Merchant Center accounts. This means that you are no longer required to manually claim the website using the Merchant Center, but you can instead automate this part of account creation as well. As before, the website that you are attempting to claim must first be verified, either manually or using the Google Site Verification API.

If the call is successful, then you will receive an empty response with HTTP status code 200. If it is not, then you will receive an error response explaining why the claim attempt failed.

Note: If another Merchant Center has already claimed the website you are attempting to claim, you cannot use the API to overwrite their claim with your own. Instead, please follow the manual process instead.

In addition, there is a new websiteClaimed field in the resource representation returned by Accountstatuses. This field contains true if the associated account has successfully claimed its website.

If you have any questions or feedback about using the Content API to claim websites or any other questions about the Content API for Shopping, please let us know on the forum.

Posted:

Today we're announcing the release of AdWords API v201705. Here are the highlights:

If you're using v201607 of the AdWords API, please note that it will be sunset on June 27, 2017. We encourage you to skip v201609 and v201702 and migrate straight to v201705. If you're using v201609, be aware it's now marked deprecated and will be sunset on October 2, 2017.

As with every new version of the AdWords API, please carefully review all changes in the release notes and the v201705 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.

Posted:
Update: Clarified AdGroupType values introduced in v201705.
Update 06/22/2017: Clarified information in last paragraph.

Starting this week, users of the new AdWords interface will be able to create dynamic search ads (DSA) through the new dynamic ad group type in Search campaigns with Dynamic Search Ad settings. This has some consequences in the AdWords API as described below.

How does this impact the AdWords API?
If your managed accounts are eligible for the new AdWords interface, be aware that if users create dynamic ad groups in the interface, AdGroupType values for the dynamic ad groups will be returned as SEARCH_DYNAMIC_ADS in v201705 and UNKNOWN for earlier API versions. Here are the rules applied to the dynamic ad group type: As described in this guide, to create dynamic search ads in the AdWords API, some settings and criteria are required, such as WebPage and DynamicSearchAdsSetting. These settings can still be added and modified in the dynamic ad group type.

What should you do?
If your application manages accounts that have access to the new AdWords interface, or if you have ad groups with type SEARCH_DYNAMIC_ADS for v201705 and UNKNOWN for earlier versions, ensure that you properly handle these cases by: In addition, for v201705, you cannot add features related to Dynamic Search Ads to ad groups with AdGroupType of SEARCH_STANDARD. Examples of Dynamic Search Ad features include the Webpage criterion and ExpandedDynamicSearchAds. However, for the earlier versions, ad groups with AdGroupType of SEARCH_STANDARD are not affected by this change. You can still continue adding expanded text ads, dynamic search ads, call ads, and various criterion types to them.

As always, if you have any questions, please post on the forum.

Posted:
Mobile has fundamentally changed how we live our lives. With our devices never more than an arm’s length away, people can find, watch or buy anything at anytime. That’s why earlier this year we shared that we’re developing a new, cloud-based measurement solution for YouTube, designed for a mobile world. Today, we’re announcing the beta for this solution, Ads Data Hub, to help advertisers get more detailed insights from their campaigns across screens while also protecting user privacy.

We are also announcing that Ads Data Hub is a solution not just for YouTube, but a tool that offers access to more data and helps unlock actionable insights across Google ad platforms, including the Google Display Network and DoubleClick. And with Ads Data Hub now in beta, we’re expanding who can use it.

Built on infrastructure from Google Cloud, including BigQuery, Ads Data Hub gives advertisers or their preferred measurement partners access to detailed, impression-level data about their media campaigns across devices in a secure, privacy-safe environment. Data from other sources, such as a CRM system or marketing database, can be incorporated as well. With this full view, advertisers or their partners can analyze the data and draw out insights specific to their business.

For example, if an e-commerce retailer wants to understand what the path to conversion looks like, they can bring additional online data about their customers into BigQuery, and Ads Data Hub will enable them to combine that data with their ads data so they can see what a typical journey is from first encountering a user until conversion.

Consistent with our commitment to privacy, no user-level data can be removed from the secure Cloud environment. Impression-level data is only accessible for the purposes of analysis and generating insights. In the future, advertisers will be able to act on the insights they get from Ads Data Hub and buy media with greater precision.

As an early alpha partner, Omnicom Media Group helped to define the solution and has seen significant value from both the amount of data available through Ads Data Hub and the broad set of analyses and custom queries that are possible.

"With the complexity of today's consumer journeys, we are seeing that marketers are looking to solve harder business challenges than ever before. Through our partnership with Google and our use of Ads Data Hub, we will be able to answer a broader range of questions and expand our analytical services." - Slavi Samardzija, Global CEO, Annalect, An Omnicom Media Group Company

With the shift to mobile, consumer behavior has changed for good. Marketers need tools to help them make sense of this new world, and Ads Data Hub is a key step forward.

Posted:
Today we’re pleased to announce the v201705 release of the DFP API. This release updates the ReportService to be at parity with the Ad Exchange Seller REST API.

Additionally, v201705 adds support for creating ImageOverlayCreatives and new Partner companies.

For a full list of API changes in v201705, see the release notes.

With each new release comes a new deprecation. If you're using v201608 or earlier, it's time to look into upgrading. Also remember that v201605 will be sunset at the end of May 2017.

As always, if you have any questions, feel free to drop us a line on the DFP API forums or the Ads Developer Google+ page.