We are updating the Google Ads API resource usage policy to throttle GoogleAdsService.Search and GoogleAdsService.SearchStream query patterns that consume excessive amounts of API resources. If a particular query pattern is throttled, other services, methods, and query patterns will continue to work unaffected.
GoogleAdsService.Search
GoogleAdsService.SearchStream
Starting the week of June 17, 2024 , and only for the throttled query patterns, requests will be affected as follows:
QuotaError.RESOURCE_TEMPORARILY_EXHAUSTED
QuotaError.EXCESSIVE_SHORT_TERM_QUERY_RESOURCE_CONSUMPTION
QuotaError.EXCESSIVE_LONG_TERM_QUERY_RESOURCE_CONSUMPTION
To help you identify and monitor your expensive reports, we will also return a cost metric for individual reports. To view the cost for successful reports, see the following fields:
SearchGoogleAdsResponse.query_resource_consumption
SearchGoogleAdsStreamResponse.query_resource_consumption
We are making this change to preserve the reliability and stability of the API.
Before June 17, 2024 , update your applications to do the following:
GoogleAdsService::Search or GoogleAdsService::SearchStream
To learn more about optimizing your queries, see manage data efficiency .
query_resource_consumption
If you have any questions about this change or need help optimizing specific query patterns, check out the Google Ads API support page for options.
Today, we’re announcing the v16_1 release of the Google Ads API . To use some of the v16_1 features, upgrade your client libraries and client code. The updated client libraries and code examples will be published next week. This version has no breaking changes.
Here are the highlights:
ad_group_ad_asset_view
asset_field_type_view
SkAdNetworkConversionValueSchema.postback_mappings
campaign_simulation
CustomerNegativeCriterion.ip_block
BrandInfo
customer.video_brand_safety_suitability
BrandSafetySuitability
CustomerSkAdNetworkConversionValueSchemaService
MutateCustomerSkAdNetworkConversionValueSchemaRequest.enable_warnings
true
MutateCustomerSkAdNetworkConversionValueSchemaResponse.warning
local_services_lead.credit_details
local_services_lead_conversation.message_details.attachment_urls
Where can I learn more?
The following resources can help you get started:
If you have any questions or need additional help, contact us via the forum .
google.ads.googleads.v14.services.GoogleAdsService.Mutate
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.
Starting with version 19.0.0, the Google Ads API client library for .NET requires .NET version 6.0 or higher. Support for .NET Framework remains unchanged and the minimum required version remains 4.7.2.
Version 18.1.0 of the Google Ads API client library for .NET, which adds support for the Google Ads API v16 , will be the last version that supports .NET version 5.0. We will still fix security issues for this client library version until the Google Ads API v16 is sunset in January 2025 , but no new features will be added.
.NET version 5.0 reached its end of life in May 2022 . Microsoft no longer provides security fixes for this version, so we strongly recommend migrating to newer versions as soon as possible.
The Google Ads API client library for .NET already supports newer LTS versions like .NET 6.0 and 8.0, and we plan to support forthcoming LTS versions as well.
Here are some useful resources to help with the .NET upgrade:
We're excited to announce the launch of "Solutions," a new tool for Google Ads that makes it easier to manage and automate tasks in your account. With Solutions, you can quickly and easily generate reports that show you how your campaigns are performing against your business goals, automate simple management tasks and more.
Solutions is available for free in Google Ads under Tools and includes a number of features that make it easy to customize your reports, including the ability to:
To learn more about Solutions, visit the the Google Ads Help Center .
Benefits of Using Solutions
Solutions offers a number of benefits, including:
Developers Site Solution Library
In order to try to provide the best possible experience and to avoid duplication of efforts, we will also be sunsetting our manual solutions library in the coming months.
Get Started with Solutions Today!
Solutions is a powerful tool that can help you get the most out of your Google Ads campaigns. To get started, simply install the solution from the Google Ads Solutions gallery.
Starting March 11, 2024 we are rolling out a permanent change that automatically pauses search campaign ad groups that were created at least 13 months ago and have not had impressions in the past 13 months. The rollout is expected to be complete for all production Google Ads accounts by April 30, 2024 . This is being done to improve Google Ads experience for advertisers.
Advertisers who are affected by this change will be able to unpause ad groups if they still need them. However, we recommend that advertisers review their ad groups and only unpause the ones you expect to get impressions in the coming weeks. Unpaused ad groups will be automatically paused again if they don’t receive any impressions over the next 3 months.
What do I need to change?
No code changes are necessary, but Google Ads API developers can make changes to improve the transparency to their advertisers as to why the ad_group.status is set to PAUSED . If you keep local copies of Google Ads information in your database, you can keep them in sync by querying change history.
ad_group.status
PAUSED
You can query the change event to see if the ad group status has changed with the following query for all API versions. If the change_event.changed_fields contains status , then this is an ad group that Google paused. Make sure to replace INSERT_YYYY-MMM-DD with your own date range.
change_event.changed_fields
status
INSERT_YYYY-MMM-DD
SELECT ad_group.status, ad_group.resource_name, ad_group.name, ad_group.id, change_event.change_date_time, change_event.new_resource, change_event.old_resource, change_event.changed_fields, change_event.change_resource_type, change_event.user_email, change_event.ad_group FROM change_event WHERE change_event.user_email = 'Low activity system bulk change' AND change_event.change_resource_type = 'AD_GROUP' AND ad_group.status = 'PAUSED' AND change_event.change_date_time >= 'INSERT_YYYY-MMM-DD' AND change_event.change_date_time <= 'INSERT_YYYY-MMM-DD' ORDER BY change_event.change_date_time DESC LIMIT 50
An example of a change event where the ad group has been paused by Google would look similar to:
{ "adGroup": { "resourceName": "customers/1234567890/adGroups/5432154321", "status": "PAUSED", "id": "5432154321", "name": "Your ad group name" }, "changeEvent": { "resourceName": "customers/1234567890/changeEvents/1708648783892610~5~0", "changeDateTime": "2024-02-22 16:39:43.89261", "changeResourceType": "AD_GROUP", "userEmail": "Low activity system bulk change", "oldResource": { "adGroup": { "status": "ENABLED" } }, "newResource": { "adGroup": { "status": "PAUSED" } }, "changedFields": "status", "adGroup": "customers/1234567890/adGroups/5432154321" } }
Starting with v16, the API returns the reason as to why the ad group was paused with new fields. You can adjust the change history query to include these fields.
ad_group.primary_status_reasons
AD_GROUP_PAUSED_DUE_TO_LOW_ACTIVITY
ad_group.primary_status
AD_GROUP_PAUSED
You will still be able to update your ad groups and make changes while they are in a paused state.
Where can I get support?
If you have questions, please reach out to us on the support form or at googleadsapi-support@google.com .
What happened?
For developers linking Merchant Center accounts to Google Ads using Google Ads API v14 , there was an issue from 04:00 PST Monday, Feb 19 to 08:00 PST Tuesday, Feb 20 that caused some requests to the MutateMerchantCenterLink method of MerchantCenterLinkService to return MutateError.RESOURCE_NOT_FOUND . Also calls to ListMerchantCenterLinks may not have returned some MerchantCenterLinks with link status PENDING .
What should I do?
If you use Google Ads API v14 to link Merchant Center accounts to Google Ads accounts using MerchantCenterLinkService , you should check to see if you have accounts that have pending link requests during the period of time described above. This issue has now been resolved and you may retry the failed calls to complete the linking of Merchant Center accounts. Also check ListMerchantCenterLinks for accounts with link status PENDING . Some of these link requests may not have previously been returned during that time period.
How to get help
If you have any questions or need help, check out the Google Ads API support page for options.
MAXIMIZE_CONVERSION_VALUE_OPT_IN
IMPROVE_GOOGLE_TAG_COVERAGE
PERFORMANCE_MAX_FINAL_URL_OPT_IN
REFRESH_CUSTOMER_MATCH_LIST
CUSTOM_AUDIENCE_OPT_IN
LEAD_FORM_ASSET
IMPROVE_DEMAND_GEN_AD_STRENGTH
RecommendationService.GenerateRecommendations()
segments.year
segments.month
asset_group
advertising_partner
AccountLink
ProductLink
ProductLinkInvitation
data_partner
google_ads
primary_status
primary_status_reasons
AdGroup
AdGroupAd
IdentityVerificationService
verification_program
Campaign.shopping_setting
ShoppingSetting.disable_product_feed
Ad.demand_gen_product_ad
Experiment.sync_enabled
recommended_match_type
UNSPECIFIED
UNKNOWN
LocalServicesVerificationArtifact.business_registration_check_verification_artifact
local_services_employee
Note: You can ignore this if you are not using Google Ads Performance Max with page feeds and text asset automation
In October 2023, as part of Google Ads API v15 , we launched the ability to configure your campaign to automatically generate text assets . Assets such as dynamic headlines or descriptions that match your landing page content can be configured by setting the Campaign.AssetAutomationSetting of TEXT_ASSET_AUTOMATION to be opted-in or opted-out. We also launched the ListingGroupFilterDimension.Webpage dimension to allow Performance Max campaigns to filter URLs from a page feed specified by a CampaignAssetSet linking the campaign to an AssetSet of type PAGE_FEED .
Campaign.AssetAutomationSetting
TEXT_ASSET_AUTOMATION
ListingGroupFilterDimension.Webpage
CampaignAssetSet
AssetSet
PAGE_FEED
For this feature to work correctly, developers need to provide BOTH the page feed configuration AND set text asset automation to OPTED_IN (which is the default behavior, if you do not specify a Campaign.AssetAutomationSetting of type TEXT_ASSET_AUTOMATION ). We noticed that some developers have included a page feed or a listing group filter for a webpage, but have text asset automation set to OPTED_OUT . Unfortunately this combination will not correctly utilize the page feed for Performance Max campaigns as might be expected.
OPTED_IN
OPTED_OUT
Starting Feb 15, 2024, we will begin throwing OPERATION_NOT_PERMITTED_FOR_CONTEXT errors if a Performance Max campaign is created or updated such that it contains the follow incompatible state:
AssetGroupListingGroupFilter
ListingGroupFilterDimension
Webpage
We are doing this to let you know that this combination is not valid and won’t serve ads utilizing landing page content as expected.
For those developers who have campaigns in this incompatible state, starting April 15, 2024, we will automatically fix the compatibility by removing CampaignAssetSet resources linking a campaign to an AssetSet of type PAGE_FEED and removing AssetGroupListingGroupFilter resources with ListingGroupFilterDimension set to Webpage only if the Campaign.AssetAutomationSetting of type TEXT_ASSET_AUTOMATION is set to OPTED_OUT . This fix will match how the campaign is currently serving and no action is required if you would like the campaign to remain in this state . If you would like to utilize the landing page content, then you will need to opt-in to text asset automation.
First, confirm that you are using text asset automation and page feed assets or asset group listing filters with webpage dimensions in your Performance Max campaigns . Otherwise, you are not impacted by this change.
To check if your Performance Max campaign is in an incompatible state for page feeds, run the following GAQL queries:
1) Check for page feeds linked to campaigns that have text asset automation opted-out:
SELECT asset_set.id, asset_set.name, asset_set.resource_name, campaign.id, campaign.name, campaign.resource_name, campaign.asset_automation_settings, campaign_asset_set.status, campaign.status FROM campaign_asset_set WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX' AND asset_set.type = 'PAGE_FEED' AND asset_set.status = 'ENABLED' AND campaign_asset_set.status = 'ENABLED' AND campaign.status != 'REMOVED'
You may be impacted if any of the CampaignAssetSet resources, linking a campaign to an AssetSet of type PAGE_FEED , have a campaign_asset_set.status that is set to ENABLED and an item in campaign.asset_automation_settings with TEXT_ASSET_AUTOMATION set to OPTED_OUT .
campaign_asset_set.status
ENABLED
campaign.asset_automation_settings
2) Check for asset group listing group filters with dimension webpage for campaigns that have text asset automation opted-out:
SELECT asset_group.id, asset_group.name, asset_group.resource_name, asset_group_listing_group_filter.case_value.webpage.conditions, asset_group_listing_group_filter.id, asset_group_listing_group_filter.resource_name, asset_group_listing_group_filter.listing_source, campaign.id, campaign.name, campaign.resource_name, campaign.asset_automation_settings, campaign.status FROM asset_group_listing_group_filter WHERE asset_group.status != 'REMOVED' AND campaign.advertising_channel_type = 'PERFORMANCE_MAX' AND asset_group_listing_group_filter.listing_source = 'WEBPAGE' AND campaign.status != 'REMOVED'
You may be impacted if any of the AssetGroupListingGroupFilter resources have a case_value that is a Webpage and an item in campaign.asset_automation_settings with TEXT_ASSET_AUTOMATION set to OPTED_OUT .
case_value
Manually fix the inconsistent state of the campaign
If you would like to manually configure the campaign yourself ahead of the automatic fix, we suggest one of the two options:
You will be able to make this change until April 15, 2024, after which option B will be automatically applied to fix the Performance Max campaign . Note that after the automatic fix is applied, the serving state of the campaign won't change from how it is serving today.
For more details on how to correctly use automatically generated text assets with landing pages, see the automatically created assets section of the Performance Max guide. If you require further support, please reach out to our team via one of our support channels .
On April 30, 2024, the creation of hotel campaigns with COMMISSION bidding strategy will sunset. This bidding strategy was available only to travel advertisers. Requests to create new hotel campaigns or apply this bidding strategy to existing campaigns after April 30th will result in a BiddingStrategyError.BIDDING_STRATEGY_NOT_SUPPORTED error. Existing campaigns with the COMMISSION bidding strategy will continue to run until October 31, 2024. After this day campaigns will stop serving until their bidding strategy is updated. A notification will be displayed in the Google Ads UI, guiding users on how to update the affected campaigns.
COMMISSION
BiddingStrategyError.BIDDING_STRATEGY_NOT_SUPPORTED
We suggest that travel advertisers with Hotel campaigns and Things to do Ads migrate to the Target ROAS (TARGET_ROAS) auto bidding strategy. You can find more information about the tROAS in our Help Center article.
If you have any questions or concerns, please don't hesitate to contact us in the forum .
Daniel Rodriguez, the Google Ads API Team
Today, we are pleased to announce a new video series just published on our YouTube channel, titled “Getting started with the Java Client Library”.
The seven episodes guide you through all the steps required to create a Google Ads campaign with the Java client library from scratch; the only prerequisites are a working Java development environment and a Google Ads manager account .
The videos walk you through the setup of an empty Java project and the import of the Google Ads client library for Java, then describe the process to obtain all required credentials and how to configure them in your Java project.
The last video in the series puts everything together and shows how to execute a basic call to the Google Ads API by running the AddCampaigns code example.
We hope the video series will help you understand all the required steps to get started developing a Java application on top of the Google Ads API. Meanwhile, even if you’re not using Java, we still recommend subscribing to the Google Ads Developers channel on YouTube to always be up to date with our video content.
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.
google.ads.googleads.v13.services.GoogleAdsService.Mutate
The recently announced search themes beta feature for Performance Max campaigns lets you provide Google AI with valuable inputs about your customers and business to further optimize Performance Max campaign serving and placement. Beginning in Google Ads API v15 , you can create search themes for Performance Max campaigns with the API.
BRAND
CustomerNegativeCriterionService
NegativeKeywordList
url_expansion_opt_out
campaign_search_term_insight
customer_search_term_insight
In the Google Ads API, a search theme is a type of AssetGroupSignal , which can be attached to Performance Max campaigns at the asset group level. You can add a search theme to an asset group by creating an AssetGroupSignal and populating the
AssetGroupSignal
AssetGroupSignal.search_theme with a SearchThemeInfo criterion containing a text string representing your search theme, for example, "activities for children". In addition, you must populate the AssetGroupSignal.asset_group with the resource name of an existing asset group you are targeting.
AssetGroupSignal.search_theme
SearchThemeInfo
AssetGroupSignal.asset_group
Here is a Java example for creating a search theme asset group signal:
// Creates a search theme asset group signal. AssetGroupSignal assetGroupSignal = AssetGroupSignal.newBuilder() .setAssetGroup(assetGroupResourceName) .setSearchTheme( SearchThemeInfo.newBuilder().setText("activities for children").build()) .build();
You can add multiple asset group signals to a single asset group by creating multiple AssetGroupSignal objects targeting the same asset group. However, each AssetGroupSignal object can only represent a single search theme or audience signal.
You can use the asset_group_signal resource to get the search themes present in a Google Ads account. While performance metrics are currently available at the asset group level, they are not available at the asset group signal level.
asset_group_signal
Here is a GAQL example to retrieve search theme texts for a specific asset group:
SELECT asset_group_signal.search_theme.text FROM asset_group_signal WHERE asset_group.id = <Asset Group ID>
In v15 of the Google Ads API, we also introduced two new fields to provide additional information about search_theme approval: asset_group_signal.approval_status and asset_group_signal.disapproval_reasons . Search theme text must be approved by Google. The asset_group_signal.approval_status field provides information about the approval status, and if the search theme text is not approved, the asset_group_signal.disapproval_reasons field lists the reasons why.
search_theme
asset_group_signal.approval_status
asset_group_signal.disapproval_reasons
Here is a GAQL example to retrieve search theme texts with policy review information for a specific asset group:
SELECT asset_group_signal.search_theme.text, asset_group_signal.approval_status, asset_group_signal.disapproval_reasons FROM asset_group_signal WHERE asset_group.id = <Asset Group ID>
If your search theme text is not approved, and you believe the usage adheres to Google’s policies, you can submit a policy exemption request for the search theme that triggered the policy violation.
For example, if your search theme contains medical terms, and you believe the usage of the terms adheres to Google Ads policies and warrants further review, you can use the AssetGroupSignalOperation.exempt_policy_violation_keys[] field to request a policy exemption.
AssetGroupSignalOperation.exempt_policy_violation_keys[]
If you are new to Performance Max Campaigns, you can learn more with our getting started guide . Check out our asset groups and asset group signals guides to learn more.
As of early October 2023, Google no longer supports Store Sales Direct (SSD) as a standalone product, and therefore SSD conversion upload requests to the Google Ads API are also no longer supported.
Users who were previously allowlisted for this feature will now receive a NOT_ON_ALLOWLIST_FOR_STORE_SALES_DIRECT error when attempting to upload SSD conversions. Existing SSD conversions will continue to be available in reports.
The removal of SSD is part of a simplification of the overall Store Sales product . Users who previously relied on SSD should review the Store Sales onboarding guide to understand if they are eligible for ongoing store sales measurement. If eligible, work with your Google Ads account team to update the feature. Please reference our Upload Store Sales Conversions guide, which has been updated to reflect these changes.
If you have any questions about this change, please feel free to contact us through the forum or at googleadsapi-support@google.com for additional help.
We are expanding support for YouTube Select forecasting in ReachPlanService to additional markets on November 14, 2023 . We introduced two new error codes in v15 of the Google Ads API to support these new markets.
ReachPlanService
ReachPlanError.NOT_FORECASTABLE_NOT_ENOUGH_INVENTORY
ReachPlanError.NOT_FORECASTABLE_ACCOUNT_NOT_ENABLED
Note: earlier versions of the Google Ads API that do not contain these error codes will throw a ReachPlanError.UNKNOWN error.
ReachPlanError.UNKNOWN
If you use this feature, make sure you update your code to handle these additional error codes before November 14, 2023 .
For more information regarding Reach Forecasting, visit the Reach Forecasting guide . If you have any questions, please contact us through our support page or on the forum .
- Anash P. Oommen , Google Ads API Team
Google announced in September that there would be upcoming changes to support the Digital Markets Act (DMA). Google is releasing changes to the Google Ads API and the Display & Video 360 API as quickly as possible so that our developers have time to make application changes before DMA starts being enforced, expected March 6, 2024 . Review the EU user consent policy for a reminder on our consent requirements for users in the European Economic Area.
What should I change for the Google Ads API?
The Google Ads API v15 release introduced the Consent object for uploading consent with your data. This Consent is used across all uploads for call conversions, click conversions , Customer Match, and Store Sales. Here is where to set the Consent for each feature.
Consent
CallConversion.consent
ClickConversion.consent
CustomerMatchUserListMetadata.consent
UserData.consent
What should I change for the Display & Video 360 API?
The Display & Video 360 API will be releasing similar changes in the following months announced via this blog. Check back in the release notes for updates to existing versions and the Customer Match feature guide for updated implementation instructions.
If you have questions, reach out to us googleadsapi-support@google.com for the Google Ads API or the support form for the Display & Video 360 API.