In October, 2025, Python 3.9 will reach end-of-life in October 2025 and will no longer be supported by the Python Software Foundation. Once Python 3.9 officially reaches end-of-life status, it will also no longer be supported by the Google Ads client library for Python. That means we will not make updates to the library, or address any issues related to compatibility with Python 3.9, outside of critical security updates.

In October, 2025, Python 3.9 will reach end-of-life in October 2025 and will no longer be supported by the Python Software Foundation. Once Python 3.9 officially reaches end-of-life status, it will also no longer be supported by the Google Ads client library for Python. That means we will not make updates to the library, or address any issues related to compatibility with Python 3.9, outside of critical security updates.

In Q4 2025 we will release a new major version of the library that is incompatible with Python 3.9. This new version will include support for Python 3.14. Users of deprecated, or soon-to-be deprecated versions of Python, are at risk of losing access to the Google Ads API. Please note the below timelines:

  • Current: Python 3.7 users cannot currently access the Google Ads API
  • Q1 2026: Python 3.8 users will lose access to the API when version v19 of the Google Ads API is sunset in Q1 2026.
  • Late 2026: Python 3.9 users will lose access to the API when version v22 of the Google Ads API is sunset in late 2026

Follow the deprecation and sunset timetable for updates around the specific timing of Google Ads API version releases and sunsets.

Any library users currently relying on Python 3.8 or 3.9 should upgrade their systems to Python 3.10 or higher as soon as possible.

If you have any questions about this change, please file an issue on the client library repository.

Starting on October 3, 2025, you will be able to set both the gclid and gbraid fields on your ClickConversion messages when importing them to the Google Ads API, by using the UploadClickConversions method.

Starting on October 3, 2025, you will be able to set both the gclid and gbraid fields on your ClickConversion messages when importing them to the Google Ads API, by using the UploadClickConversions method.

Previously, setting both of these fields resulted in the following partial failure error:

Once this change is released, this error will no longer be returned. Instead you will see successful import responses.

What’s changed?

Today, we're excited to announce that the brand guidelines rollout is now complete for all new Performance Max campaigns created through the Google Ads UI, with API-created accounts soon to follow. As was first announced in December, this means that new PMax campaigns initiated in the UI will have brand guidelines enabled by default, offering advertisers greater control over their brand's representation.

What’s changed?

Today, we're excited to announce that the brand guidelines rollout is now complete for all new Performance Max campaigns created through the Google Ads UI, with API-created accounts soon to follow. As was first announced in December, this means that new PMax campaigns initiated in the UI will have brand guidelines enabled by default, offering advertisers greater control over their brand's representation.

With brand guidelines rolling out to more Performance Max campaigns, it is crucial to understand how this impacts campaigns you interact with via the API, and for you to update your code in advance to prepare for it.

What do API Users need to update now?

Previously, brand assets such as your business name and logo were associated with Asset Groups.

Currently, for any PMax campaign with brand guidelines enabled, these brand assets are now stored at the campaign level. This means if your application queries or modifies brand assets for PMax campaigns, you must adjust your code to look for these assets in CampaignAsset instead of AssetGroupAsset for these campaigns. Accounting for both asset locations in your application is vital to ensure your integrations continue to function as expected. To determine if brand guidelines are enabled for a PMax Campaign, check the Campaign.brand_guidelines_enabled field.

What do API Users need to plan for in the future?

Brand guidelines will be enabled by default when creating PMax Campaigns using the API beginning in v21. You can optionally disable brand guidelines by setting the Campaign.brand_guidelines_enabled field to false on-creation. The default behavior for brand guidelines on new Performance Max campaigns created via the API remain disabled for all supported versions through v20.

To manually turn on brand guidelines through the API, you have two options:

  1. Starting in v19, all API users can choose to manually enable brand guidelines when creating a new PMax campaign. To do so, you need to set the Campaign.brand_guidelines_enabled field to true during campaign creation. You can refer to the “Add Performance Max Campaign” code sample for an example of how to create a campaign with brand guidelines enabled.
  2. To manually enable brand guidelines for an existing campaign, use CampaignService.EnablePMaxBrandGuidelines. Set auto_populate_brand_assets to true to automatically populate the campaign with top-performing brand assets. Disabling brand guidelines for a campaign after its creation is not supported.

There is an in-progress automatic migration to enable brand guidelines for existing campaigns. As previously announced, this migration has already begun on a rolling basis by CID. Only campaigns that use the same logos and business name across all asset groups will be automatically migrated. We anticipate the migration to be completed for all applicable CIDs by October 30th. In the meantime, we encourage you to use the existing migration endpoint to manually update your campaigns to brand guidelines at your own pace.

Google Ads API v18 will sunset on August 20, 2025. Starting on this date, all v18 API requests will begin to fail. Migrate to a newer version prior to August 20, 2025 to ensure your API access is unaffected.

Google Ads API v18 will sunset on August 20, 2025. Starting on this date, all v18 API requests will begin to fail. Migrate to a newer version prior to August 20, 2025 to ensure your API access is unaffected.

Here are some resources to help you with the migration:

You can view a list of methods and services your project has recently called using the Google Cloud Console:

  1. Open the APIs & Services in the Google Cloud Console.
  2. Click Google Ads API in the table.
  3. On the METRICS subtab, you should see your recent requests plotted on each graph. You can see which methods you've sent requests to in the Methods table. The method name includes a Google Ads API version, a service, and a method name, such as google.ads.googleads.v18.services.GoogleAdsService.Mutate.
  4. (Optional) Choose the timeframe you want to view for your requests.

If you have questions while you’re upgrading, reach out to us on the forum or at googleadsapi-support@google.com.

What is changing?

Google is deprecating the ad sharing functionality in Google Ads API.

  • With the October 2025 release of v22, the ability to create shared ads will be removed from all supported versions on October 15, 2025.
  • In Q1 2026, shared ads will sunset and stop serving. The exact date isn’t determined, and will be communicated in the future.

What is changing?

Google is deprecating the ad sharing functionality in Google Ads API.

  • With the October 2025 release of v22, the ability to create shared ads will be removed from all supported versions on October 15, 2025.
  • In Q1 2026, shared ads will sunset and stop serving. The exact date isn’t determined, and will be communicated in the future.

This change will affect how ads are created and managed at scale, so it's crucial to understand the implications and prepare your systems accordingly. Let's break down what's happening, why it matters, and what you need to do.

What is Ad Sharing?

In simple terms, "ad sharing" means creating one ad and using that exact same ad in multiple Ad Groups.

Instead of building identical ads over and over for each Ad Group, you build it once and link it everywhere you need it.

Why is this changing?

This change aligns with the movement to Asset-Based Ads. The future of Google Ads is centered around asset-based ad formats like Responsive Search Ads (RSAs) and Performance Max campaigns. In these formats, the "ad" is dynamically assembled from a pool of assets (headlines, descriptions, images), making the concept of a static, shareable ad object less efficient.

How to Prepare

The timeline gives you ample time to adapt, but we strongly recommend starting the process now to avoid any disruption to your advertising operations. Follow these steps to ensure a smooth transition.

Step 1: Audit Your Application

The first step is to determine if your application uses the ad sharing model.

Review your codebase, specifically any logic that interacts with the AdGroupAdService. Look for any instances where you created an AdGroupAd by pointing to an existing ad's resource name that is already in use in another ad group.

Your current, soon-to-be-deprecated logic might look something like this conceptually:

  1. Create an AdGroupAd that contains an Ad.
  2. Create an AdGroup.
  3. Create another AdGroupAd using the embedded Ad from step 1 and the AdGroup from Step 2. (This is the functionality that will be removed).

Step 2: Update Your Ad Creation Logic

You must refactor your code to create a new, unique ad for every ad group. Instead of sharing an ad, your new workflow should be a loop that creates a distinct ad for each target ad group. You will no longer be able to create a standalone ad. Instead, you will specify the ad parameters as part of creating an AdGroup.

The new, compliant logic should look like this:

  1. For AdGroup_1:
    • Create an AdGroupAd using ad for ad_group_1.
  2. For AdGroup_2:
    • Create an AdGroupAd using ad for ad_group_2.

Even if the ad copy is identical, the ads must be created as separate ad objects in the API.

If you still have legacy Expanded Text Ads (ETAs) serving that are shared, you must convert them to Responsive Search Ads and assign each shared instance to a single AdGroup.

Step 3: Understand the Impact on Reporting

When you stop sharing a single ad and start creating unique ads for each ad group, the performance history will be affected.

Important: Performance statistics (impressions, clicks, conversions) are tied to the unique ad. The new ads you create will start with zero performance history. The historical data from your old, shared ads will remain, but it will not be carried over to the new ads.

Be sure to communicate this to your team or clients. Plan to export and archive historical performance data before you make the switch to perform long-term, ad-level analysis.

Migration of Existing Shared Ads

Step 1: Identify Your Shared Ads

First, you need a definitive list of all ads that are currently shared across more than one ad group.

SELECT
  ad_group_ad.ad.id,  -- This is the unique ID of the 'Ad' itself
  ad_group.id,        -- This is the unique ID of the 'AdGroup'
  ad_group_ad.status,
  ad_group_ad.ad.type,
  campaign.id,
  campaign.name,
  ad_group.name
FROM
  ad_group_ad
WHERE
  ad_group_ad.status IN ('ENABLED', 'PAUSED')
ORDER BY
  ad_group_ad.ad.id, ad_group.id

If you find an ad_group_ad.ad.id in your results whose associated collection of ad_group.ids has more than one entry, it means that specific Ad (identified by ad_group_ad.ad.id) is linked to multiple ad groups (each identified by a unique ad_group.id in the collection).

If any ad_group.id that is associated with more than one distinct ad_group.id, then that Ad is considered "shared".

Step 2: Gather Ad Content and Associated Ad Groups

For each shared Ad you identified in Step 1, you need to retrieve two things:

  1. The content of the ad (its headlines and descriptions).
  2. The list of all ad groups where it is currently active.

Step 3: Create a New, Unique ResponsiveSearchAd in Each Ad Group

For the core of the migration, loop through each ad group you identified in Step 2 and create a new ResponsiveSearchAd inside it.

Best Practice: If your shared ad is an Expanded Text Ad, don't just copy the 3 headlines and 2 descriptions. Use them as a starting point and add more assets. The power of ResponsiveSearchAds comes from having a deep pool of headlines and descriptions for Google to test. Aim for 5 short headlines, 1 long headline, and 5 descriptions.

Here is a quick summary of the ResponsiveSearchAds limits,

Asset Type Maximum Allowed Character Limit Best Practices
Short Headline Up to 5 30 characters Provide all 5
Long Headline 1 90 characters Always provide 1
Description Up to 5 90 characters Provide all 5

Here is a conceptual outline of the mutate operation using AdGroupAdService:

  1. Loop through each ad_group.resource_name from your Step 2 results.
  2. Inside the loop, construct a new AdGroupAd object.
  3. Set the ad_group field to the current ad_group.resource_name.
  4. Create an Ad object within the AdGroupAd.
  5. Populate the responsive_search_ad field with your assets:
    • Create a list of AdTextAsset objects for your headlines.
    • Create a list of AdTextAsset objects for your descriptions.
    • Set the final_urls, path1, and path2 using the data from your old Ad.
  6. Execute the MutateAdGroupAds() request.

This process ensures that each ad group now has its own unique ResponsiveSearchAds, ready to be served.

Step 4: Remove the Old Shared Ads

Once your new ResponsiveSearchAds have been created and have passed the editorial review (status is ENABLED), it's time to retire any shared ads.

  1. Identify the resource name of the old AdGroupAd (the link between the shared ad and the ad group).
  2. Use the AdGroupAdService to perform the mutation. Within this service, you'll construct an AdGroupAdOperation. This operation object has a remove field where you provide the resource name of the AdGroupAd you want to remove.
  3. Finally, you call the mutateAdGroupAds method on the AdGroupAdService.

The Timeline for Phasing Out Shared Ads

We strongly encourage you to manually migrate your shared ads yourself

  • This is the best approach. It allows you to create new ads with unique images and headlines tailored specifically to the audience in each Ad Group. More relevant ads lead to better results.

Phase 1: Starting 15 October 2025

  • You can no longer create new shared ads.
  • Any attempt to link a single ad to a new Ad Group will be blocked and will return an error. If you use automated tools or scripts for this, they will stop working.

Phase 2: Between 15 October 2025 and Q1 2026

  • Your existing shared ads will continue to serve normally.
  • No immediate action is required for ads that are already shared; they will not be affected during this period.

Phase 3: In Q1 2026

  • We will automatically convert all remaining shared ads.
  • For any ads that are still shared, we will create individual copies in each Ad Group they belong to.

We recommend consulting the official Google Ads API documentation and keeping an eye on the Google Ads Developer Blog for further details as the date approaches.

Start your audit today and share this post with your development team to ensure you are prepared for a seamless transition.

Automatic Process in Q1 2026

If you take no action, we will automatically separate your shared ads for you in the first quarter of 2026.

Here’s how our automated process will work:

  • One Ad Group Keeps the Original Ad: Your original ad will be kept in just one of the Ad Groups (specifically, the one with the lowest ad group ID).
  • Other Ad Groups Get Copies: We will create new copies of the original ad for all the other Ad Groups it was shared with.
  • Automated Content Will Be Regenerated: Your settings for features like "asset automation" will be copied. However, the actual machine-generated assets (like automatically created headlines or images) will not be transferred. Our system will create a brand-new set for each copied ad, which may affect initial performance.

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

We’re launching our new “Google Advertising and Measurement Community” Discord server! To join, just click this invite link and follow the onboarding guide.

The current products available on this server are Analytics, Google Ads, Google AdMob, and Google Ad Manager.

We’re launching our new “Google Advertising and Measurement Community” Discord server! To join, just click this invite link and follow the onboarding guide.

The current products available on this server are Analytics, Google Ads, Google AdMob, and Google Ad Manager.

The Ads Developer Relations team will be on this server regularly to discuss your feedback or questions using Google’s Advertising and Analytics APIs/SDKs, as well as to let you know what’s new with our products.

We’ll be hosting a “Meet the Team” in August, where we’ll go over who we are, and how you can expect to engage with us in Discord. Stay tuned as we add other events, and more channels.

Looking forward to chatting with you on Discord!

The Google Ads API team is exploring bringing a Model Context Protocol Server to the developer base to allow third-party GenAI tools to work with advertiser accounts. We are seeking your initial input to help us shape our roadmap.

The Google Ads API team is exploring bringing a Model Context Protocol Server to the developer base to allow third-party GenAI tools to work with advertiser accounts. We are seeking your initial input to help us shape our roadmap.

If you are interested in providing feedback in relation to this topic please follow this link to participate in a short survey.

How to get help

If you have any questions or need help, check out the Google Ads API support page for options.