Google today set Shopping campaigns to serve Local Inventory Ads by default from August 31, 2026, stripping away a setting advertisers previously used to keep local offers out of specific campaigns. The change removes the practical effect of the enable_local field for Shopping campaigns and forces the value to true across the board, according to a post published on the Google Ads Developer Blog by Dora Sun of the Google Ads API Team.
The move aligns Shopping campaigns with Performance Max for Retail campaigns, which already treat local product serving as a standard behaviour. For advertisers who never touched the setting, nothing visibly breaks. For those who deliberately switched local serving off, the default flip closes a door - and for developers writing to newer versions of the API, code that still tries to disable local serving will fail outright.
What is changing on August 31
Until now, serving products from a Local Inventory Ads feed required an explicit opt-in. Developers and advertisers had to set the enable_local field to true inside a campaign's ShoppingSetting before local offers could appear. That gate is being removed.
From August 31, 2026, the Campaign.ShoppingSetting.enable_local field will no longer carry any weight for Shopping campaigns. According to the announcement, the Google Ads API backend will automatically override the value to true for every Shopping campaign, switching on the "Local products" setting behind the scenes regardless of what an advertiser or their tooling has configured.
The scope is deliberately narrow. The change applies only to Shopping campaigns. For other campaign types that support the field - including Performance Max and Demand Gen - enable_local will continue to behave exactly as it does today. There is no wider deprecation of the field itself, only a removal of its effect within one campaign type.
The developer consequence: an error for newer versions
The practical impact splits along API version lines, and the distinction matters for anyone managing campaigns programmatically.
For version 25.1 and future versions, developers must update their code to stop setting enable_local to false. According to the post, code that continues to send that value will return a ContextError.OPERATION_NOT_PERMITTED_FOR_CONTEXT error. In other words, an operation that used to be permitted becomes an explicit failure, and a request that once quietly disabled local serving now surfaces as a rejected mutation.
For any versions prior to v25.1, no immediate code changes are required. Requests that attempt to mutate the enable_localfield for a Shopping campaign will simply treat the value as true, mirroring the new backend default without throwing an error. The behaviour is the same in outcome - local serving stays on - but older integrations degrade gracefully rather than breaking.
That version split gives teams a clear decision point. Integrations still running on pre-v25.1 versions can defer code changes, but any migration to v25.1 or later requires removing false assignments to the field first, or campaign mutation calls will start failing.
How to keep local offers out of a campaign
Removing the opt-out does not leave advertisers without options. It changes the mechanism they must use.
Advertisers who previously relied on setting enable_local to false to prevent local offers from serving in specific Shopping campaigns now have two documented alternatives. The first works through the API: using the CampaignCriterionService to add a listing scope with product_channel set to ONLINE, which restricts a campaign to online inventory only. The second works through the interface: the "Inventory filter" section in campaign settings lets advertisers filter out local inventory and separate budgets by channel, keeping online and local spending in distinct silos.
The distinction is between a single on/off switch and a targeting decision. Where advertisers once toggled a boolean, they now define what a campaign is allowed to serve. The result can be identical - a campaign that shows only online products - but the configuration path is different, and any automated system that assumed the old toggle will need rebuilding around channel-level scoping.
Online versus local as a budget boundary
One detail in the guidance carries weight for advertisers who separate spending by channel. The inventory filter approach does more than exclude local products from a campaign; it allows budgets to be siloed by channel, keeping online and local spending in separate buckets. That matters because the default flip could otherwise blur a line some advertisers keep sharp on purpose.
A retailer that measures online and in-store performance against different targets, or that allocates fixed budgets to each channel, has a structural reason to keep the two apart. Under the old model, enable_local set to false was a blunt way to guarantee a campaign stayed online-only. Under the new model, that guarantee comes from either a listing scope restricting the campaign to the ONLINE channel or an inventory filter that splits budgets by channel. The endpoint is the same, but the advertiser now expresses the boundary through targeting configuration rather than a single field, which changes how automated systems and bulk-editing tools must be built.
Why the change matters for retailers and developers
Local Inventory Ads occupy a specific place in Google's retail advertising stack. They let brick-and-mortar retailers show shoppers which nearby stores carry a product, whether it is in stock, and whether options such as in-store pickup are available. The format sits at the intersection of online search intent and physical store inventory, and Google has steadily pushed local serving deeper into its automated campaign types.
By turning local serving on by default, Google reduces friction for merchants who want their store inventory discoverable and removes a step from campaign setup. The trade-off falls on advertisers who had reasons to keep certain Shopping campaigns online-only. Those reasons vary: budget control, channel-specific measurement, or campaigns built to isolate online performance from in-store activity. For those advertisers, the change is not neutral. It requires active reconfiguration to preserve a setup that a single field once handled.
The announcement fits a broader pattern in which Google Ads has been converting optional settings into defaults and steering advertisers toward its automated, feed-driven campaign types. Earlier in 2026, Google folded Local Services Ads into Google Ads as a Performance Max goal type, preserving pay-per-lead billing while cutting historical reporting. The same tendency toward consolidation runs through the Shopping and Performance Max roadmap.
Context: a year of Shopping and local inventory changes
The default flip does not arrive in isolation. It follows a sequence of structural changes to how Google handles product data, local inventory, and Shopping campaigns.
In January 2026, Google announced that Merchant Center would require separate product IDs for online versus in-store items, with enforcement beginning in March 2026. That rule directly affects retailers running Local Inventory Ads, because merchants who need different prices or availability for online and in-store versions of the same product must now manage two distinct identifiers. The product ID split and the enable_local default sit on the same technical fault line - both concern how Google separates and serves online and local inventory.
Merchant Center's local infrastructure has also been shifting at the API level. When the Merchant API arrived in Google Ads scripts as the Content API neared its end, it introduced an OmnichannelSettings resource that manages account configuration for omnichannel serving, including Free Local Listings and Local Inventory Ads. The move toward channel-aware configuration objects mirrors the logic behind the enable_local change: local serving is becoming a matter of structured targeting rather than a single flag.
Google has continued expanding local inventory reach through other surfaces as well. In March 2026, Google expanded loyalty program features to 14 countries, extending member benefits to local inventory ads and regional Shopping ads alongside AI-powered surfaces. Each of these steps deepens the integration between physical store data and Google's advertising products.
On the developer side, the API itself has been on an aggressive release cadence. The version numbering referenced in this change - v25.1 - places it within a monthly release schedule that Google began with v23 in January 2026. Along the way, the Google Ads API v24 release added retail filter targeting for Shopping campaigns, signalling a direction toward more expressive, reusable targeting logic - the same category of channel-level control that advertisers must now use to scope campaigns to online-only serving. Product-level reporting has widened too, with the Google Ads API expanding product reporting to all campaign types on June 15, also authored by Dora Sun.
For teams that manage Shopping campaigns at scale through the API, the cumulative effect is a platform that increasingly assumes local serving as the baseline and treats online-only configurations as the exception that must be explicitly declared. The August 31 change formalises that assumption for one more campaign type.
What advertisers face before August 31
The timeline leaves a defined window. The change takes effect on August 31, 2026, and the developer-facing error applies to v25.1 and later. Advertisers running Shopping campaigns that they intend to keep online-only need their campaigns configured with channel scoping or inventory filters before the default takes hold, because after that date the enable_localfield will no longer accept a false value for Shopping campaigns in any meaningful way.
Google directed developers with questions to its "Google Advertising and Measurement Community" Discord server for discussion of the post.
Timeline
- April 13, 2024: Google refines Merchant Center product data specifications, making the pickup_method attribute optional for Local Inventory Ads
- October 16, 2024: Google releases Google Ads API v18 with new Performance Max placement reporting
- June 2025: Local inventory feed capabilities become technically available through Google Tag Manager, per FeedArmy's tracking release
- September 20, 2025: FeedArmy launches Shopify local inventory tracking for Google Merchant Center
- January 6, 2026: Google announces separate product IDs for online versus in-store items, enforced from March 2026
- January 2026: Google begins a monthly API release schedule starting with v23
- March 25, 2026: Google expands loyalty program features to 14 countries, including local inventory ads
- April 22, 2026: Google Ads API v24 adds retail filter targeting for Shopping campaigns
- June 15, 2026: Google Ads API expands product reporting to all campaign types
- July 20, 2026: Google publishes the Local Inventory Ads default change on the Ads Developer Blog
- August 31, 2026: Local Inventory Ads become the default for all Shopping campaigns; enable_local no longer takes effect for that campaign type
Related PPC Land coverage
- Google forces retailers to split product IDs by March 2026 - Merchant Center requires separate product IDs for online and in-store versions of the same item, directly affecting Local Inventory Ads feeds.
- Merchant API comes to Google Ads scripts April 22 as Content API nears its end - The Merchant API introduces an OmnichannelSettings resource covering Free Local Listings and Local Inventory Ads configuration.
- Google Ads API v24: cart data sales view, lead gen conversions, retail filters - Version 24 adds tag-based retail filter targeting for Shopping campaigns and expands product-level reporting resources.
- Google Ads API to expand product reporting for all campaign types on June 15 - A Dora Sun announcement widening cost and conversion metrics across campaign types that use Google Merchant Center.
- Google expands loyalty program ads to 14 countries and AI surfaces - Loyalty program features reach local inventory ads and regional Shopping ads across new markets.
- Google folds Local Services Ads into Google Ads, cuts historical reports - Local Services Ads migrate into Performance Max as a pay-per-lead goal type, part of the same consolidation pattern.
- FeedArmy launches Shopify Google Ads local inventory tracking - A third-party tool adds local inventory feed submission through Google Tag Manager as an alternative to file-based methods.
Summary
Who: Google, through the Google Ads API Team and a post authored by Dora Sun, addressing developers, marketing technology vendors, and retail advertisers who manage Shopping campaigns programmatically or through the interface.
What: From August 31, 2026, Local Inventory Ads become the default for all Shopping campaigns. The enable_local field will no longer have any effect for Shopping campaigns, with the backend forcing the value to true. For API version 25.1 and later, code that sets the field to false will trigger a ContextError.OPERATION_NOT_PERMITTED_FOR_CONTEXT error; for earlier versions, such requests are simply treated as true. Advertisers who want online-only serving must instead use CampaignCriterionService with product_channel set to ONLINE, or the inventory filter in campaign settings. The change does not affect Performance Max, Demand Gen, or other campaign types.
When: The announcement was published on July 20, 2026, with the change taking effect on August 31, 2026.
Where: The change was announced on the Google Ads Developer Blog and applies to Shopping campaigns across the Google Ads platform globally.
Why: Google is aligning Shopping campaigns with Performance Max for Retail campaigns, which already serve local products by default, reducing setup friction for merchants who want store inventory discoverable while consolidating optional settings into platform defaults.
Discussion