On August 31, Google will upend a rule that has governed Shopping campaigns for years: Local inventory ads will become enabled by default in every campaign, without asking for your permission. The change doesn’t just touch the ad interface; it reaches deep into the logic of the Google Ads API itself, where the field that gave you manual control will be ignored.
A store owner called me weeks ago, and his voice on the phone was slower than usual. The budget was dropping daily, and orders didn’t justify the number. I asked him to open the campaign settings, and we found the store’s local products appearing where they shouldn’t, with the settings intact. The problem wasn’t the ad copy or the offers; it was the overlap between local and online inventory.
With Google’s change approaching, the quick fix — turning everything off — became impossible, because local products will be a default part of every Shopping campaign. We adjusted the targeting via an inventory filter and separated local products from online ones, so the client wouldn’t pay for impressions that didn’t serve his goal.
Days later, he sent me a screenshot of his reporting dashboard, asking if this was the same account. We didn’t increase the budget, but we stopped it from leaking into unsuitable placements. Since that day, auditing campaign settings at TwiceBox before any launch has become a non-negotiable habit.
After August 31, relying on an old setting that you assume still works won’t be enough. Review the inventory separation in your Shopping campaigns via the filter or listing scope, because new defaults could turn your budget into impressions that don’t bring relevant orders.
What Is the New Update and How Does It Affect Local Inventory Ads?

Google has officially confirmed via the Google Ads Developer Blog that local inventory ads will be enabled by default in all Shopping campaigns starting August 31. The decision is no longer passing news; it’s a fundamental shift in how the system treats products available in physical stores.
Before the update, advertisers had to enable the feature manually via the enable_local field inside ShoppingSetting in the campaign. After the update, the setting will always be on, and the system will ignore any value you send.
Automatic and Mandatory Enablement for All Shopping Campaigns
Google will treat the “Local products” setting as a true value at all times, no matter how hard you try to set it to false. Any Shopping campaign linked to a local inventory feed may show physical store products to users nearby geographically.
In one project, a client ran an online store alongside a small physical branch, and the branch’s products appeared in search results that didn’t serve him. The problem was that the budget was bleeding on clicks from users looking for immediate in-store purchases. We separated the two inventories via an inventory filter, and unproductive clicks dropped within a week.
Removal of the Manual Enablement Field via the API
The programmatic field Campaign.ShoppingSetting.enable_local will be completely ignored after the update. Any attempt to disable the feature via the Google Ads API will fail, because the system will treat the value as true by default.
This is what Google’s official announcement documented in detail, explaining that campaigns relying on separating the two inventories will need restructuring. Those who depend on full automation in managing their campaigns will find that old code no longer works as it did. This leads us to a deeper question: why did Google impose this merge in the first place?
Why Did Google Decide to Merge Local Products by Default?

The decision isn’t purely technical; it’s strategic. Google understands that shopping behavior has changed. Users search for a product on their phone, compare prices, then buy from the nearest branch. Keeping local inventory off by default meant losing a large portion of local purchase intent.
Unifying the Ad Experience Between Shopping Campaigns and Performance Max
Performance Max for Retail campaigns have been enabling local products by default from the start. Google is now unifying behavior across both campaign types, offering advertisers one management experience instead of two different logics.
In a project for a brand with three branches, we noticed that Performance Max campaigns achieved higher returns than Shopping campaigns in areas near the branches. The reason was that Performance Max showed local inventory automatically, while Shopping campaigns were limited to online products. After this update, Google will close that gap for good.
Bridging the Gap Between E-commerce and Physical Stores on the Ground
Physical stores have an advantage that online selling doesn’t offer: immediate availability. When a user searches for a product available now, the ad showing in-stock availability at a nearby branch wins both the click and the visit.
Google wants to capture this type of purchase intent, and enabling local inventory by default is the broadest way to do that. However, this means advertisers without physical branches will bear the burden of manually stopping appearances. That’s a technical challenge we’ll now break down step by step.
Technical Steps Developers Must Take to Avoid System Errors (API)

Here is where the real work begins for those managing campaigns via the Google Ads API. The update forces developers to change how they think about campaign settings, because the field that once controlled local inventory is no longer valid.
Handling the Programmatic Error OPERATIONNOTPERMITTEDFORCONTEXT
In newer Google Ads API versions, any attempt to set enable_local to false will return the error ContextError.OPERATION_NOT_PERMITTED_FOR_CONTEXT. This isn’t a bug in your code; it’s a clear message from Google that the operation is no longer allowed in this context.
# Attempt to disable local inventory — will return an error after August 31
campaign.shopping_setting.enable_local = False
# ContextError.OPERATION_NOT_PERMITTED_FOR_CONTEXT
The solution is to delete this line from your code entirely and rely on the filtering mechanisms we’ll explain in the next section. In one project, an internal script was resetting the setting daily and nearly caused all syncing to stop after the update. We fixed the script before the deadline, and the update passed without a single interruption in product sync.
Updating Code for Previous and New Versions of the Google Ads API
In older versions of the Google Ads API, your current code will run without visible errors. But Google will ignore your attempts to disable and treat the value as true. This is the worst possible scenario because you think you’re in control while the system acts against your wish.
The first step is to check the Google Ads API version used in your environment, then review every call that touches ShoppingSetting. Second, replace the disabling logic with filtering logic via CampaignCriterionService or the inventory filter in the UI, so you don’t get surprised by campaigns showing local products unintentionally. This update only affects Shopping campaigns. In Performance Max and Demand Gen campaigns, the enable_local field will continue to work normally, which brings us directly to the alternative control mechanisms.
How to Control Your Local Product Appearances Without Relying on the Default Setting?

Losing the enable_local field doesn’t mean losing control; it means control moves elsewhere. Google is moving control from a simple campaign setting to the filtering layer, and there are two approved methods for separating local inventory from online.
Using the Inventory Filter to Filter Products
The inventory filter is available inside Shopping campaign settings in the Google Ads interface. It lets you exclude local products from appearing or include them as needed. You can also separate budgets between local and online products from the same place.
In a project for a client selling spare parts, we used the inventory filter to exclude products only available at the branch from the online sales campaign. The result was that the qualified click rate rose, and the cost per conversion dropped because ads no longer appeared to people looking for immediate purchases.
Setting the Listing Scope Programmatically via CampaignCriterionService
The programmatic method relies on creating a listing scope via CampaignCriterionService with product_channel set to ONLINE. This restricts campaign appearances to online products only, without touching local inventory settings.
# Create a listing scope that restricts the campaign to online products only
listing_scope = CampaignCriterion(...)
listing_scope.listing_scope.dimensions.append(
ProductChannel(channel=ProductChannelType.ONLINE)
)
This method is cleaner than the manual filter because it’s part of the code, so it repeats automatically with every new campaign. However, it requires updating your development environment and understanding the ProductDimension structure well before relying on it. After sorting out the technical side, the most important question remains: how do you turn this update into a competitive advantage in performance?
TwiceBox Strategies for Improving Your Ad Campaign Performance After This Update

At TwiceBox, we treated this update as an opportunity to restructure our clients’ campaigns, not as a technical obstacle. The approach we now apply rests on two pillars: smart budget separation and improving local inventory data quality. In the end, this update serves only one advertiser: the one who understands their data and separates their inventory consciously.
Restructuring Budgets Between Digital and Local Channels
The first decision we make with every client: is local inventory a commercial asset or an operational burden? If the physical store generates real sales, we allocate an independent budget for campaigns showing local products, with tight geographic targeting around the branches.
We then monitor metrics such as return on ad spend (ROAS), cost per click (CPC), and click-through rate (CTR) for each channel separately. This is exactly where reading reports with honesty becomes critical, because separating data between the two inventories reveals which channel deserves a larger budget.
Improving Local Inventory Data Quality to Increase Actual Sales
Local inventory ads don’t succeed with a poor product feed. We review with every client the availability, price, and product condition fields in the Local Inventory feed, because any error in them appears directly in the ad.
In one project, the product price in the local feed was older than the price in the physical store. This caused angry clicks and zero conversions. After syncing the feed with the point-of-sale (POS) system, the conversion rate rose within two weeks, and the campaign returned to a return that justified its budget. The rest — those who ignore these details — will pay for accidental impressions from their own budget.
When Is the Inventory Filter More Important Than the Toggle Button in a Shopping Campaign?
The first thing I learned after years of managing Shopping campaigns is that on-screen settings don’t always reflect what’s happening on the server. The “Local products” toggle in campaign settings looked clear, but it hid a deeper layer: the local inventory feed linked to your Merchant Center account.
In one project, a client ran five branches and insisted on keeping local inventory out of his online campaign. We set the inventory filter in the UI, but local products kept appearing. After a deeper audit, we discovered the Local Inventory feed was still active and linked to the account, and Google was pulling availability status directly from it.
The solution had two parts: excluding local products via the inventory filter in the campaign, and separating the local feed from online products in Merchant Center. After a week, unproductive clicks dropped by about a third, and cost per conversion returned to normal levels.
The lesson I walked away with: after August 31, the toggle button won’t tell you the truth, but the inventory filter and the feed always will. Check them before you touch any other setting, and you’ll save yourself weeks of wasted ad spend.
Frequently Asked Questions
What does auto-enabling local inventory ads in Shopping campaigns mean, and how does it affect my store?
Starting August 31, Google will enable local products by default in every Shopping campaign. That means your physical store’s products may appear to users searching near you if you have a local inventory feed linked to your account. If your business relies only on online sales, you’ll need to adjust the inventory filter or listing scope so you don’t show products that don’t serve your audience. I recommend checking your campaign now before the deadline, because adjusting after enablement is harder than preventing it beforehand.
Will this change increase campaign costs or impact the ad budget?
The default enablement doesn’t directly raise costs, but it expands the potential reach to include local searches you may not be targeting. I monitor cost per click, conversion rate, and return on ad spend weekly with my clients after any settings change. If you notice rising costs without corresponding conversions, that’s a clear signal to redistribute your budget between the two inventories.
How do I separate local inventory from online inventory after this update?
You have two options: the inventory filter inside Shopping campaign settings, or a programmatic listing scope via CampaignCriterionService with product_channel set to ONLINE. The first option is faster for those without a technical team, and the second is cleaner for those managing many campaigns via API. In all cases, make sure prices and availability status match between your physical store and your website.
Does my technical team need to make changes to the Google Ads API or feed integrations?
Yes. If you use the Google Ads API, you must stop trying to set enable_local to false, because newer versions will return the error ContextError.OPERATION_NOT_PERMITTED_FOR_CONTEXT. The alternative is to update your integration logic to rely on inventory filters or listing scopes, and to review your local product files to ensure accurate prices and quantities. Don’t postpone this adjustment until after August 31.
What metrics should I track to measure the success of local inventory ads?
Focus on return on ad spend, number of clicks, requests for directions to the store, and calls if you can track them. I usually compare local product performance against online products during the first two to four weeks after any change, to learn whether the enablement brings real results or needs targeting improvements. The data alone decides, not gut feeling.
Is it better to rely on an internal team or a digital agency to manage this change?
If your campaigns are simple and you have experience with Google settings, an internal team might be enough to follow up on the adjustments. But if you run a multi-branch store or depend on complex technical integrations, partnering with a specialized agency can save you from configuration errors and campaign conflicts. The decision depends on the level of complexity, not the size of your budget.
Summary of the Experience
The upcoming update on August 31 isn’t just passing technical news; it’s a turning point in how Shopping campaigns are managed. Those who separate their inventory consciously via the filter or listing scope will gain a real competitive advantage, while those who ignore the change will pay for unhelpful impressions from their own budget. Open one Shopping campaign today, check the local products setting and the inventory filter within 30 minutes, and you’ll know exactly where you stand before the deadline.
