Google Ads API v26.1 makes channel budget caps and PMax income exclusions programmable

Google Ads API v26.1 makes channel budget caps and PMax income exclusions programmable

Google AdsOctober 30, 2026
By Antonio Fernandez

TL;DR

  • Google dated Google Ads API v26.1 to 28 October 2026 in its release notes; it is a minor version with no breaking changes, following v26 on 14 October.
  • New CampaignBudget.budget_network_settings puts Owned and Operated, Search Partner and Display into TIER1 or TIER2 and can cap second-tier spend in milli-percent (1,000 = 1%).
  • Account-wide defaults live in a new CustomerBudgetNetworkSetting resource, and a read-only budget_network_eligibility field lists why a budget cannot use the feature.
  • Performance Max now accepts household income exclusions via a negative CampaignCriterion with income_range; Google's notes name no countries, so Thai availability is unconfirmed.
  • A new OPTIMIZE_FOR_NEW_CUSTOMERS recommendation takes incremental conversion values in local currency units, not micros.

Google released Google Ads API v26.1 on 28 October 2026, a minor version with no breaking changes, according to the Google Ads API release notes on Google for Developers. The headline change is that waterfall channel prioritization and budget caps on campaign budgets can now be read and set through the API, and Performance Max campaigns now accept household income exclusions programmatically. The same release adds an "optimize for new customers" recommendation, external redemption tracking for promotion assets, a Local Services eligibility check and a complete set of reach frequency buckets.

What Google shipped in Google Ads API v26.1

Google's release notes list v26.1 with a release date of 2026-10-28 and mark it "None (minor release)" in the breaking-changes column. It sits on top of v26, which Google dated 2026-10-14 and which did carry breaking changes. Because v26.1 is a minor version, code already running on v26 does not need to be rewritten to keep working; the new fields only matter if you want to use them.

Google groups the v26.1 additions under six headings in its notes:

  • Campaigns: waterfall channel prioritization and budget caps for campaign budgets, plus a new error for activating migrated Demand Gen campaigns.
  • Targeting: household income exclusions in Performance Max campaigns.
  • Recommendations: a new OPTIMIZE_FOR_NEW_CUSTOMERS recommendation type.
  • Assets: external promotion redemption tracking on promotion assets.
  • General: a Local Services eligibility service and mutable Local Services settings.
  • Reports: reach frequency buckets from 6+ to 9+, privacy and quality state flags on reach metrics, and wider segment support for two Search share metrics.

Most of the attention will go to the first two items, because they turn controls that advertisers already manage by hand into something a script, a bid management tool or an internal dashboard can apply across hundreds of campaigns at once.

Channel prioritization and budget caps are now in the API

Google's notes describe the feature as a way to "control how you allocate a budget across network channels", naming three channels: Google Owned and Operated properties, the Search Partner Network and the Google Display Network. The notes point readers to Google's earlier blog post on channel prioritization and budget allocation for the product background. What v26.1 adds is the plumbing that lets software manage it.

How the budget settings are structured

Google added a field called CampaignBudget.budget_network_settings. It holds at most one setting per advertising channel type, so a single shared budget cannot carry two conflicting rules for the same campaign type. Inside each setting, two things can be defined:

  • Channel priorities. Each network channel (OWNED_AND_OPERATED, SEARCH_PARTNER or GOOGLE_DISPLAY) is assigned to a priority tier, TIER1 or TIER2. That is the "waterfall": first-tier channels come first, second-tier channels after.
  • Budget caps. A setting can cap the share of the budget that secondary-tier channels are allowed to spend. The cap lives in BudgetCapConfig.cap_percent_millis.

The unit on that cap is the detail most likely to cause a bug. Google states it in milli-percent: 1,000 means 1%, 100,000 means 100%, and 0 means 0%, which Google describes as an opt-out. Anyone who writes "10" expecting a 10% cap will actually set a cap of 0.01%. A 10% cap is 10,000.

Account-level defaults

Google also added a new resource, CustomerBudgetNetworkSetting, which is a singleton per customer with the resource name customers/{customer_id}/customerBudgetNetworkSettings. Its settings apply to every campaign budget whose own budget_network_settings field is left unset. In practice that gives two layers: an account default, and per-budget overrides where a campaign needs different treatment.

The default is created or updated through a new CustomerBudgetNetworkSettingService and its MutateCustomerBudgetNetworkSetting method. Google says it can also be changed through the general GoogleAdsService.Mutate method and queried with GoogleAdsService.Search and SearchStream, so it fits into existing reporting queries.

Eligibility is reported, not assumed

Not every budget can use the feature. Google added a read-only field, CampaignBudget.budget_network_eligibility, which says whether a budget is eligible for waterfall prioritization and budget caps and, if it is not, lists the ineligible reasons. The release notes do not list what those reasons are in the summary, so the field itself is the place to look. Invalid settings return a new BudgetNetworkSettingError.

For anyone building automation, the eligibility field is the first thing to query.

What is new compared with earlier coverage

Neither feature is new to the Google Ads interface. Relevant Audience covered the interface launch of channel prioritization and budget caps on 15 October 2026, and reported a sighting of household income exclusions in Performance Max in the interface in July 2026. What changes with v26.1 is access: both controls are now part of the API that scripts, MCP-based tools and third-party bid and budget platforms are built on.

That distinction matters for how the features get used. A setting that lives only in the interface is applied campaign by campaign by whoever has the account open. A setting that lives in the API can be applied as a rule across a manager account, audited on a schedule and rolled back from a log. For agencies and in-house teams running many accounts, that is the difference between a feature that gets tried on a few campaigns and one that becomes standard configuration.

Household income exclusions in Performance Max

Google's notes say v26.1 adds "support for household income exclusions in Performance Max campaigns". The method is a negative CampaignCriterion with the income_range field set. The campaign criterion pattern is the same one the API already uses for other exclusions, so tools that manage negative criteria have a familiar shape to extend.

Two limits are worth stating plainly. First, the release notes cover exclusions only; they do not describe household income as a bid adjustment or a positive target in Performance Max. Second, the notes say nothing about which countries have household income data. Nothing in this release says the data is available in Thailand. Before promising this exclusion to a Thai client, check whether the income ranges appear for Thai locations in the account itself.

The optimize for new customers recommendation

Google added RecommendationType.OPTIMIZE_FOR_NEW_CUSTOMERS. When Google issues it, the recommendation exposes a recommended_incremental_conversion_value. When you apply it through the API, you can pass account_default_incremental_conversion_value and campaign_override_incremental_conversion_value.

Google specifies that these values are in standard units of the account's local currency, "not in micros". Most monetary fields in the Google Ads API are expressed in micros, where one unit of currency is 1,000,000. Code that reuses a micros conversion helper here would inflate the value a million times. For a baht account, a value of 500 means 500 baht.

Applying the recommendation still requires a judgement about what a new customer is worth over and above a returning one. The API gives Google's suggestion and accepts your number; it does not tell you whether the suggestion fits your margins.

Smaller changes in the same release

Promotion assets with external redemption tracking

PromotionAsset gains an immutable external_redeem_info field. It records a partner_promotion_id, a code_type (SINGLE_USE_PROMOTION_CODE or MULTI_USE_PROMOTION_CODE) and a code_source (CUSTOMER_UPLOADED or GOOGLE_GENERATED). Google says the partner promotion ID is required when the code source is GOOGLE_GENERATED. A new AssetError.PARTNER_PROMOTION_ID_TYPE_INCOMPATIBLE error appears when the ID format does not match what the account's promotion integration accepts. Google frames this as offline promotion code tracking.

Local Services eligibility

A new LocalServicesEligibilityService.CheckLocalServicesEligibility method takes a customer and a Google Business Profile listing ID. It returns whether the customer is eligible, the eligible goals by lead type with their service categories, job types and callouts, and suggestion reasons such as licensing issues. Customer.local_services_settings also changes from output-only to mutable, with a new redemption_provider_info field for an external merchant ID.

Demand Gen migration error

DemandGenCampaignError.CANNOT_ACTIVATE_MIGRATED_CAMPAIGN is returned if you try to activate a migrated Demand Gen campaign before removing the original, or while another migrated copy of the same original is active.

Reach reporting and Search share metrics

Google added unique_users_six_plus through unique_users_nine_plus, completing frequency buckets from 1+ to 10+. Each unique-users metric also gets an "_info" companion of type ReachMetricInfo, which flags states such as a value being suppressed for privacy or quality reasons. Separately, search_top_impression_share and search_click_share can now be selected with hotel booking itinerary and vertical ads segments, including advance_booking_window, length_of_booking and vertical_ads_listing.

v26.1 at a glance

The table below maps each v26.1 change listed in Google's release notes to the API object it touches.

v26.1 at a glance
Change in v26.1Where it lives in the API
Waterfall channel priorities and secondary-tier budget capsCampaignBudget.budget_network_settings; cap in cap_percent_millis (1,000 = 1%)
Account-level default for those settingsCustomerBudgetNetworkSetting resource and its mutate service
Household income exclusions in Performance MaxNegative CampaignCriterion with income_range
Optimize for new customers recommendationRecommendationType.OPTIMIZE_FOR_NEW_CUSTOMERS; values in local currency, not micros
Offline promotion code trackingPromotionAsset.external_redeem_info

What to check before you rely on it

A minor API version reaches advertisers through the tools that call it. The release notes date the API change; they do not say when any client library, Google Ads scripts environment or third-party platform will expose the new fields. Before planning around v26.1, confirm a few things:

  1. Your tooling version. Check whether the library, script environment or platform you use already targets v26.1. Until it does, the new fields are not available to you, even though the interface may already show the features.
  2. Budget eligibility. Query budget_network_eligibility for the budgets you plan to change and review the ineligible reasons before writing any settings.
  3. Units. Caps are in milli-percent. New-customer values are in standard currency units. Both differ from habits built on other fields.
  4. Defaults versus overrides. Decide whether the account default in CustomerBudgetNetworkSetting should carry the rule and individual budgets should override it, or the reverse. Mixing both without a record makes later audits harder.
  5. Market availability for income data. Check in the account whether household income ranges exist for the countries you target before building an exclusion workflow.

Teams who manage Search Partner and Display exposure today through campaign settings will want to compare the new caps with what they already do. The release notes describe the mechanism; they publish no performance data about what capping secondary channels does to results, so any test should be measured in your own account.

What this means for Thai marketers

For Thai advertisers, the practical value of v26.1 sits with whoever manages accounts at scale: agencies with manager accounts, in-house teams running many brands, and anyone using a bid or budget platform built on the API. Once those tools move to v26.1, a rule such as "cap Search Partner and Display at a set share of budget across every eligible account" can be applied and checked by software rather than by opening each campaign. The household income exclusion is the part to treat with caution in Thailand, since Google's notes do not say the data is available here. If your Google Ads management relies on automation, or your ecommerce marketing plan leans on promotion codes and new-customer acquisition, this release is worth a review once your tools support it.

FAQ

When was Google Ads API v26.1 released?

Google dated Google Ads API v26.1 to 28 October 2026 in its release notes. It is a minor release with no breaking changes, and it follows v26, which Google released on 14 October 2026.

Can I set channel budget caps through the API now?

Yes, v26.1 adds CampaignBudget.budget_network_settings, which assigns Owned and Operated, Search Partner and Display channels to priority tiers and can cap what second-tier channels spend. Account-level defaults sit in the new CustomerBudgetNetworkSetting resource, and a read-only eligibility field tells you whether a budget can use the feature.

Is household income exclusion in Performance Max available in Thailand?

Google's release notes do not say. They state that Performance Max now supports household income exclusions through a negative CampaignCriterion with income_range, but they name no countries, so check whether income ranges appear for Thai locations in your own account before relying on it.

Do I need to change my code for v26.1?

No, minor versions such as v26.1 do not contain breaking changes, according to Google. You only need to change code if you want to use the new fields, and your client library or tool has to support v26.1 first.

What units does the budget cap use?

The cap uses milli-percent, so 1,000 equals 1% and 100,000 equals 100%. A value of 0 is a 0% cap, which Google describes as an opt-out.

Google Ads API v26.1 does not introduce new advertising products so much as it opens existing ones to automation. The value depends on when your tools adopt it and on careful handling of units and eligibility. If you want help reviewing how channel caps, new-customer goals or exclusions fit your accounts, talk to the Relevant Audience Google Ads team.

Antonio Fernandez

Antonio Fernandez

Founder and CEO of Relevant Audience. With over 15 years of experience in digital marketing strategy, he leads teams across southeast Asia in delivering exceptional results for clients through performance-focused digital solutions.

Share to:
Copy link:

Read us often? Add Relevant Audience as a preferred source so our articles surface more in your Google results.