Upgrading to the newest version

Periodically, you will upgrade from an older major version of Google Ads API to a newer major version. It could be because a version is sunsetting, or it could be because you want to use a new feature. We recommend that you upgrade to the newest version when going through the migration process.

Check out our deprecation schedule to plan your upgrades. See our versioning guide to learn how versioning works.

Here's a checklist to help you get started with the process of upgrading:

  1. Your endpoint will change when you change major versions. Update your client libraries to use the newest endpoint.
  2. Go through the release notes to see changes that were introduced in each release.
  3. Check out the tables below for specific areas to focus on for the version you're upgrading to.

Migrating from v9 to v10

For a comprehensive overview of changes based on a diff between the protos from the two versions, look at the diff table.

Changes to Services and their Components
All services get methods have been removed. Any service that exclusively had a get method has been removed as well. The primary way to retrieve objects continues to be using GoogleAdsService's search and searchStream methods.
GoogleAdsService search methods Fixed an issue where zero-metric rows were sometimes being returned when adding segment fields. This brings all reports in line with expected behavior.
Campaign The start_date and end_date fields in the Campaign now return values in the context of that campaign's account's time zone. This resolves some discrepancies where the start and end dates seemed not to match when compared to the Google Ads UI.

The new ExperimentService has replaced CampaignExperimentService. Although the CampaignExperimentService is still functional for now, it will be removed in an upcoming version, so migrating to the ExperimentService is recommended.

We have a migration guide to assist with adopting the new services.


Added Customer.status and CustomerClient.status, whose type is CustomerStatus, to show the status of the account.

Non-active and test accounts are now returned by CustomerClient. Trying to access such accounts through the API will incur errors.

More specifically, prior to v10, ACTIVE accounts and CLOSED test accounts were returned.

In v10, CLOSED non-test accounts as well as SUSPENDED or CANCELED accounts are returned.


The name field is now required and must be unique for ImageAsset and MediaBundleAsset. In addition, if you specify a duplicate name for one of these asset types, a new unique name is created automatically. In some cases an error may still be returned, for example during an update operation.


When an Asset is created that has contents matching an existing asset, but a new name, the name is ignored and the existing asset is used instead. This applies to the following asset types:

VideoTrueViewDiscoveryAdInfo The VideoTrueViewDiscoveryAdInfo ad type has been renamed to InFeedVideoAdInfo.
ConversionActionCategory The LEAD type has been removed from ConversionActionCategory.
GoogleAdsService.MutateOperation The customizer_customizer_operation has been renamed to customer_customizer_operation, fixing a typo.
BiddingSeasonalityAdjustment BiddingSeasonalityAdjustment can no longer be set at the manager account level. Doing so was always an error; this just enforces that they can no longer be created accidentally.