Feed Optimization
Product ID Splitting: When Online and In-Store Products Need Separate IDs
Google recommends separate product IDs when an item's attributes differ online vs. in store. What changed, who is affected, migration steps and item_group_id.
What changed
Google has changed how it handles multi-channel products — items sold both online and in physical stores. A multi-channel product should now carry the same core attribute values in both channels. If you need different attribute values online and in store (for example a different condition, or different custom labels for ad targeting), Google recommends two separate products: a product that used ID SKU-1234 for both its online listing and its Local Inventory Ad listing then uses two distinct IDs, one for the online channel and a different one for the local/in-store channel.
This applies to merchants running both Shopping ads (online) and Local Inventory Ads (in-store), where the same SKU appears in both a primary product feed and a local inventory feed. A different in-store price alone does not need a separate ID: local inventory data can override the price per store. If you run only online Shopping ads with no Local Inventory Ads program, this change does not affect you.
Why Google made this change
When the same product ID is used for both online and in-store inventory, Google’s bidding system receives mixed signals. Performance data from both channels is attributed to one product ID, making it difficult for the algorithm to optimize each channel independently:
-
A product that converts well in-store but poorly online will have blended performance signals that Smart Bidding can’t act on correctly
-
Attributes can differ between channels — for example a different condition in store, or different custom labels for ad targeting (a different in-store price such as €34.99 vs. €29.99 online can instead come from local inventory data)
-
In-store pickup conversions and online delivery conversions require different optimization signals
Splitting IDs allows Google’s system to treat each channel as a distinct product for bidding and attribution — even though the physical product is identical.
Who is affected
You are affected if you:
-
Submit a primary product feed to Merchant Center for online Shopping ads
-
Also submit a local inventory feed (or use Local Inventory Ads)
-
The same product SKU/ID appears in both feeds
-
Those products need different attribute values online and in store (other than price)
Online-only merchants are not affected.
Migration guide
Step 1: Audit your ID overlap
# Find overlapping IDs across feeds
online_ids = set(primary_feed['id'])
instore_ids = set(local_inventory_feed['id'])
overlapping = online_ids.intersection(instore_ids)
print(f"Products requiring ID split: {len(overlapping)}")
Step 2: Define your naming convention
Common patterns:
-
SKU-1234-onlinevs.SKU-1234-store -
online_SKU-1234vs.store_SKU-1234 -
SKU-1234-W(web) vs.SKU-1234-S(store)
Critical constraint: product IDs cannot exceed 50 characters and must not contain spaces. Verify your new IDs comply before bulk implementation.
Step 3: Update your primary product feed
Change all affected product IDs to use the new online-channel convention. All other attributes (title, price, GTIN, images) remain unchanged — only the id attribute changes.
Step 4: Update your local inventory feed
Change all affected product IDs in the local inventory feed to use the in-store convention. The IDs must now correspond to the new store-channel IDs, not the online-channel IDs.
Step 5: Handle item_group_id
If your products use item_group_id to group variants, you need a consistent strategy. Google’s current guidance is to use the same item_group_id for the same product across channels — they’re still the same physical product, just different channel representations. This maintains consistent variant grouping and simplifies feed management. See the item_group_id attribute guide for details.
Step 6: Submit and verify
After updating both feeds, monitor Merchant Center’s Needs attention tab. You should see online products with new channel-specific IDs and no “conflicting product ID” warnings.
Impact on Smart Bidding performance
Changing a product ID creates a new product entity in Google’s system. The performance history associated with the old ID is not transferred. Smart Bidding will need to build new models for the updated IDs — typically a 2-4 week learning period. Budget slightly conservatively during the transition; ROAS may fluctuate.
Important: don’t delete old IDs immediately
When you introduce new IDs, don’t immediately remove the old ones if any Google Ads campaigns or product groups still reference them. First update campaign product group filters to reference the new IDs, then remove old ones from the feed. Removing a referenced ID causes the campaign to serve nothing for that product group until the filter is updated.