(Translated by https://www.hiragana.jp/)
Google Ads Developer Blog: PMax

This blog post was updated on August 12, 2025 to add clarification on how to attach a negative keyword list to your campaign.

We're excited to announce the launch of three powerful new features for Performance Max campaigns within the Google Ads API. These updates will give you greater control and flexibility over your Performance Max campaigns, allowing for even more precise targeting and optimization. Available today across all supported versions of the Google Ads API, these features empower developers and advertisers to refine their Performance Max strategies.

This blog post was updated on August 12, 2025 to add clarification on how to attach a negative keyword list to your campaign.

We're excited to announce the launch of three powerful new features for Performance Max campaigns within the Google Ads API. These updates will give you greater control and flexibility over your Performance Max campaigns, allowing for even more precise targeting and optimization. Available today across all supported versions of the Google Ads API, these features empower developers and advertisers to refine their Performance Max strategies.

Introducing new targeting capabilities

1. Device targeting

With the introduction of device targeting, you now have the ability to specify at the campaign level where your Performance Max ads will appear. This feature provides a new layer of control, enabling you to optimize your campaign reach across various platforms. To set up device targeting, add a DeviceInfo criterion to your Performance Max campaign.

2. Negative keyword lists

To help prevent your ads from showing for irrelevant searches, we're introducing support for negative keyword lists at the campaign level on Performance Max campaigns. This highly requested feature allows you to upload and apply lists of keywords that you want to exclude, ensuring your ads are displayed to the most relevant audience. You can attach a negative keyword list to your campaign by attaching a SharedSet with the type NEGATIVE_KEYWORDS using the CampaignSharedSetService. Refer to this page for an example on how to attach a negative keyword set to a campaign.

3. Age range exclusions

We're also adding the capability to exclude specific age ranges from your Performance Max campaigns. This allows for more granular audience targeting, which helps you comply with age-related advertising regulations and focus your spend on the most appropriate demographics for your products or services. To set up an age range exclusion, add an AgeRangeInfo as a negative criterion on your PMax campaign.

How to get started

These new features are available starting today on all supported versions of the Google Ads API. For detailed documentation on how to implement these new targeting options in your Performance Max campaigns, refer to our developer guides.

We're committed to continually enhancing the Google Ads API to provide you with the tools you need to succeed. We encourage you to explore these new features and incorporate them into your Performance Max strategies to achieve even better results.

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.

This post was recently updated to reflect that API support for these settings will be included in v21.

We're providing an important update regarding new image optimization features rolling out in the Google Ads user interface, specifically impacting Performance Max campaigns.

This post was recently updated to reflect that API support for these settings will be included in v21.

We're providing an important update regarding new image optimization features rolling out in the Google Ads user interface, specifically impacting Performance Max campaigns.

What are these new UI features?

  • Landing Page Images: This setting allows Google AI to automatically source relevant images directly from your ad's landing page. The aim is to dynamically incorporate these visuals into your ads, potentially improving relevance and extending your reach across more placements.
  • Image Enhancements: With this feature, Google AI can automatically make improvements to your uploaded image assets. This can include smart cropping to create different versions of your images, helping to unlock more ad inventory and boost performance. Future enhancements may also include capabilities like uncropping or animating images.

You can find more information about these features in the Google Ads Help Center.

Default behavior:

Image enhancements will be enabled for all Performance Max users. For Landing Page Images, the setting will be enabled on PMax only if the account level Dynamic Image setting is active. Note that enabling the account-level Dynamic Image setting requires manual opt-in through the UI.

Key Information for API Users:

At this time these new UI features for Performance Max campaigns can only be managed with the Google Ads user interface. API control of these settings will become available in version 21.

  • These features will not be viewable through the Google Ads API.
  • At this time, you will not be able to opt-in or opt-out of these new settings (Landing Page Images and Image Enhancements) using the Google Ads API. To change the status of these settings you must use the Google Ads UI.

API Integration Impact:

Your existing API integrations will continue to function for the features and settings currently supported by the API. However, these new additional Performance Max settings will need to be managed by your users directly in the Google Ads interface.

We encourage you to familiarize yourselves with the details provided in the Google Ads Help Center to understand the scope of these UI changes for Performance Max campaigns. This will enable you to effectively support your users and clarify what can and cannot be controlled via the API.

We are committed to keeping our developer community informed. Stay tuned to this blog for further updates on control of these image optimization settings in the Google Ads API.

Starting on May 1, 2025, we will begin to automatically enable brand guidelines for Performance Max campaigns that use the same brand assets ( BUSINESS_NAME, LOGO, and ...
Starting on May 1, 2025, we will begin to automatically enable brand guidelines for Performance Max campaigns that use the same brand assets (BUSINESS_NAME, LOGO, and LANDSCAPE_LOGO) across all asset groups.

Please note the rollout timelines:
  • For Google Ads UI users: The process will begin on May 1, 2025 for customer IDs that exclusively manage their campaigns using the UI.
  • For API users: This process will begin on June 1, 2025.
The overall process across all campaigns is expected to be complete by July 31, 2025.

Important Notes:
  • Only campaigns using consistent business names and logo assets across all asset groups will be automatically migrated. Campaigns with variations in these assets will not be migrated.
  • All eligible Performance Max campaigns under a customer ID will be migrated simultaneously.
  • After migration, each migrated campaign will have its own set of brand assets stored at the campaign level using CampaignAsset.
  • You can tell if a campaign has been migrated by checking its Campaign.brand_guidelines_enabled field.
Actions Required
If your application creates asset groups, update your code to check the campaign’s Campaign.brand_guidelines_enabled field. This will tell you whether to include brand assets in the new asset group.

If your application modifies brand assets, update your code to check the campaign’s Campaign.brand_guidelines_enabled field. This will tell you where to save the brand asset; either on a campaign using a CampaignAsset or on an asset group using an AssetGroupAsset.

To avoid extra steps later, we strongly recommend migrating all of your campaigns now using CampaignService.EnablePMaxBrandGuidelines. If you migrate your campaigns manually, each CampaignService.EnablePMaxBrandGuidelines request can only include 10 EnableOperations.

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

Starting on January 20, 2025, new Performance Max (PMax) campaigns created with the UI will have brand guidelines enabled and require business name and logo brand assets to be linked at the campaign level rather than the asset group level. Brand guidelines is a new feature that allows you to control how your brand is represented in your Performance Max campaign automated assets or formats.

Starting on January 20, 2025, new Performance Max (PMax) campaigns created with the UI will have brand guidelines enabled and require business name and logo brand assets to be linked at the campaign level rather than the asset group level. Brand guidelines is a new feature that allows you to control how your brand is represented in your Performance Max campaign automated assets or formats.

What this means for API users

New PMax campaigns created in the UI with brand guidelines enabled will automatically link BUSINESS_NAME, LOGO, and LANDSCAPE_LOGO via the CampaignAsset resource rather than by using the AssetGroupAsset resource, which may impact integrations that attempt to report on or update these assets. You can check if brand guidelines are enabled for a PMax campaign by referencing the Campaign.brand_guidelines_enabled field.

As of v18 of the Google Ads API, it is not possible to create brand guidelines-enabled PMax campaigns via the API, which means new campaigns must link BUSINESS_NAME, LOGO, and LANDSCAPE_LOGO assets using the AssetGroupAsset resource. In a future release, you will be able to create and fully manage PMax campaigns with brand guidelines enabled.

It is important to note that the same asset requirements will continue to apply to all PMax campaigns regardless of whether or not brand guidelines are enabled. However, BUSINESS_NAME, LOGO, and LANDSCAPE_LOGO asset requirements will be evaluated at the campaign level for campaigns with brand guidelines enabled and the asset group level for campaigns without brand guidelines enabled. You can reference the relevant section of our Performance Max optimization and troubleshooting guide for more information, and as always, contact our team if you need support.

Today we are pleased to announce the release of a dedicated Performance Max developer guide. With this release, we’ve moved Performance Max content to its own tab in the main navigation of our developer documentation with a dedicated landing page and updated navigation to help you more easily find the information you need to build Performance Max integrations.

Today we are pleased to announce the release of a dedicated Performance Max developer guide. With this release, we’ve moved Performance Max content to its own tab in the main navigation of our developer documentation with a dedicated landing page and updated navigation to help you more easily find the information you need to build Performance Max integrations.

Other notable improvements include:

Improving Performance Max integrations Blog Series

This article is part of a series that discusses new and upcoming features that you have been asking for. Keep an eye out for further updates and improvements on our developer blog, continue providing feedback on Performance Max integrations with the Google Ads API, and as always, contact our team if you need support.

Today, we are pleased to announce several guide enhancements to improve the experience of creating, managing and reporting on Performance Max campaigns with the Google Ads API.

Today, we are pleased to announce several guide enhancements to improve the experience of creating, managing and reporting on Performance Max campaigns with the Google Ads API.

Improving Performance Max integrations Blog Series

This article is part of a series that discusses new and upcoming features that you have been asking for. Keep an eye out for further updates and improvements on our developer blog, continue providing feedback on Performance Max integrations with the Google Ads API, and as always, contact our team if you need support.

Starting September 27, 2023 you will see a change if you use custom audiences. You will no longer be able to update a custom audience type once you create the custom audience. For example, if you set the type to AUTO or INTEREST, then you cannot update it to the type SEARCH in the Google Ads API. This change ensures that your campaign continues to serve by making sure that your custom audience remains eligible.

Starting September 27, 2023 you will see a change if you use custom audiences. You will no longer be able to update a custom audience type once you create the custom audience. For example, if you set the type to AUTO or INTEREST, then you cannot update it to the type SEARCH in the Google Ads API. This change ensures that your campaign continues to serve by making sure that your custom audience remains eligible.

What do I need to change?

Modify your code so it avoids attempting to update the type of an existing CustomAudience. If your code attempts to update the type field after September 27, 2023 then the API will return a CustomAudienceError.INVALID_TYPE_CHANGE error.

Where can I get support?

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

Starting on April 14, 2023, there will be changes made to the location targeting settings for Search, Shopping, Display, and Performance Max campaigns in the Google Ads API. We are making this change to simplify the location targeting portfolio and improve advertiser performance. All versions will throw errors if you try to set the location target settings to one of the values shown below.
Starting on April 14, 2023, there will be changes made to the location targeting settings for Search, Shopping, Display, and Performance Max campaigns in the Google Ads API. We are making this change to simplify the location targeting portfolio and improve advertiser performance. All versions will throw errors if you try to set the location target settings to one of the values shown below.

Campaign.geo_target_type_setting fields
positive_geo_target_type can no longer be set to SEARCH_INTEREST for Search, Shopping, and Display campaigns. The default value is PRESENCE_OR_INTEREST.
negative_geo_target_type can no longer be set to PRESENCE_OR_INTEREST for Performance Max, Search, Shopping, and Display campaigns. The default value is PRESENCE.
The error returned if these values are used is SettingError.SETTING_VALUE_NOT_COMPATIBLE_WITH_CAMPAIGN.

On April 24, 2023, we will start performing any necessary auto-migration of fields to the new default values until no more invalid combinations exist. The auto-migration will occur on a per-campaign basis. You can confirm that the migration is complete for a Google Ads account by checking that these two queries return zero rows.

SELECT campaign.id, campaign.geo_target_type_setting.positive_geo_target_type, campaign.advertising_channel_type FROM campaign WHERE campaign.advertising_channel_type IN ('DISPLAY', 'SEARCH', 'SHOPPING') AND campaign.geo_target_type_setting.positive_geo_target_type = 'SEARCH_INTEREST' LIMIT 1
SELECT campaign.id, campaign.advertising_channel_type, campaign.geo_target_type_setting.negative_geo_target_type FROM campaign WHERE campaign.geo_target_type_setting.negative_geo_target_type = 'PRESENCE_OR_INTEREST' AND campaign.advertising_channel_type IN ('DISPLAY', 'PERFORMANCE_MAX', 'SEARCH', 'SHOPPING') LIMIT 1
Where can I get support?
If you have questions, please reach out to us on the forum or at googleadsapi-support@google.com.

The Google Ads Developers Channel is your source for release notes, best practices, new feature integrations, code walkthroughs, and video tutorials. Check out some of the recently released and popular videos and playlists below, and remember to subscribe to our channel to stay up to date with the latest video content.

The Google Ads Developers Channel is your source for release notes, best practices, new feature integrations, code walkthroughs, and video tutorials. Check out some of the recently released and popular videos and playlists below, and remember to subscribe to our channel to stay up to date with the latest video content.

Performance Max for Developers [New Series]

In this series, we navigate the entire developer journey of creating standard Performance Max campaigns and Performance Max campaigns for online sales with a product feed. We discuss how to think about Performance Max as compared with other campaign types and walk through the process of creating Performance Max campaigns conceptually. In addition, we explore several implementation options with the use of the new Performance Max Interactive Guide, which you can use to easily follow along and jumpstart your integration.

Five episodes have been published with an additional three more on the way. Subscribe to our channel to be notified when new episodes are released.

Testing Your Integration [New Series]

In the first two episodes of this miniseries, we begin to look at testing with the Google Ads API. In the introductory episode, we discuss Google Ads test accounts and test account alternatives. In the second episode, we demonstrate test account usage in practice. Subscribe to our channel to be notified when the next episode about testing best practices becomes available.

Campaign Primary Status [New Video]

The Google Ads API introduced two new fields on the campaign resource in v12, called primary_status and primary_status_reason. In this video, we discuss how they can help you understand what is going on with your campaigns and how to optimize their serving.

Meet the Team [New Episodes]

Check out the two new episodes in our Meet the Team series to catch in-depth discussions with Eric Schwelm, who is a Software Engineer and Tech Lead on the Google Ads API, and Carolyn Chou, who is a Product Manager working on Performance Max campaigns in the Google Ads API.


For additional topics, including Release Notes, Authentication and Authorization and Working with REST, check out the Google Ads Developers YouTube channel.

As always, feel free to reach out to us with any questions via the Google Ads API forum or at googleadsapi-support@google.com.

The Google Ads Developers Channel is your video source for release notes, best practices, new feature integrations, code walkthroughs, and video tutorials. Check out some of the recently released and popular videos and playlists below, and remember to ...
The Google Ads Developers Channel is your video source for release notes, best practices, new feature integrations, code walkthroughs, and video tutorials. Check out some of the recently released and popular videos and playlists below, and remember to subscribe to our channel to stay up to date with the latest video content.

Google Ads API Best Practices - Error Handling and Debugging
In this episode of the Google Ads API Best Practices Series, we discuss how to handle errors that may occur when interacting with the Google Ads API, along with tools that may help you debug your applications, such as logging and the REST interface.
Meet the Team with David Wihl
In this video, David Wihl shares a bit about his role as a Developer Relations Engineer at Google and discusses his work in supporting the Performance Max campaign API integration.

[Live Demo] Building a Google Ads API Web App
Getting started with the Google Ads API? In this 8-episode series, we take a deep dive into developing web apps with the Google Ads API, with a focus on the OAuth flow, by building a multi-tenant app entirely from scratch.

Logging & Monitoring
This miniseries covers the basics of adding logging and monitoring to your Google Ads API integration and then goes into more advanced topics, with a special focus on Cloud tooling. Google Ads Query Language (GAQL)
In this series, we cover everything you need to know about the Google Ads Query Language to make reporting requests against the Google Ads API. We begin with the basics and build in subsequent episodes to cover various nuances of GAQL. We even dive into the various tools available to help you structure your queries. This playlist will equip you with the information you need to know to become a GAQL power user. For additional topics, including Authentication and Authorization and Working with REST, check out the Google Ads API Developer Series.

As always, feel free to reach out to us with any questions via the Google Ads API forum or at googleadsapi-support@google.com.