How do I fix duplicate Product schema on my Shopify store?

Duplicate Product schema means one product page carries two or more blocks of structured data about the same product. The blocks often disagree on the price, the brand or the return policy. On Shopify the extra blocks come from the theme and from apps that add their own markup. Find every block first, keep one source, make the change in a copy of your theme, and test the page before you publish it.

By Margareta Petrovic, CISA, CISSP, founder of Visibility Mesh. As of October 4, 2026, our engine has scored 957 websites.

On September 23, 2026, a merchant asked on the Shopify Community why every product showed duplication. The reply that solved it found 4 separate Product blocks on each page, all with the same product id. Two spelled the brand differently, and the return policies disagreed, 30 days in one and 14 in another. The blocks came from the theme code, so every product page carried the same problem.

What is Product schema?

Product schema is a block of code that states a product's facts in a format machines read. It holds the name, brand, price, availability and return policy. Shoppers never see it. On Shopify it is almost always written as JSON-LD. JSON-LD is a script tag in the page's code that lists those facts as labeled values.

Why do my theme and my apps both add it?

Shopify gives themes a Liquid filter called structured_data, which turns a product into schema.org Product markup, or ProductGroup markup when the product has variants. Many themes print a block this way on every product page.

Apps add their own. Shopify's help pages say an app embed can add code to your store that customers never see. Some apps go further and inject code directly into your theme's code. An app that adds a Product block does not always check whether the theme already printed one.

Every app that adds Product markup is written as if it were the only app in the store, a belief that rarely survives the next install.

What does duplicate schema cost me?

Google Merchant Center can update the price and availability in your free listings and Shopping ads from the structured data on your product pages. Google's help page says this automatic update is on by default. If one block carries an old price, Merchant Center may read that one.

Google's structured data guidelines say the markup must be a true representation of the page. A page that breaks those guidelines can lose its eligibility for rich results, the search listings with stars, prices and stock. Google says such a manual action does not affect how the page ranks in web search. Google's product documentation does not say which block it trusts when two disagree.

AI assistants read product facts as well. OpenAI lists structured metadata such as price and product description among what ChatGPT considers when it picks products. Two prices on one page give an assistant no clear reason to believe either of them.

Our scanner scores a layer called Entity Integrity, which covers the machine readable product and brand data that AI systems read. In our study of 216 Shopify storefronts, published June 28, 2026, it was the weakest layer, and 72% of those stores failed it.

How do I tell if I have it?

Paste a product page address into Google's Rich Results Test. It renders the page the way Google does, so it also shows blocks that an app adds with JavaScript. If it lists more than one Product or ProductGroup item for a single product, you have duplicates. The Schema Markup Validator from Schema.org shows every item on the page, including the ones Google does not use for rich results.

Open each item and compare the values with what the page shows a shopper: the price and currency, the brand name, availability, and the return and shipping terms. Fix any value where two blocks disagree, and fix any value where a block disagrees with what the shopper sees.

You also need to know where each block comes from, since that tells you how to remove it. View the page source and search for "Product". A block in the source comes from the theme or from code an app wrote into it. A block that appears only in the Rich Results Test was most likely added by JavaScript after the page loaded, which usually points to an app embed.

What is the safe order for fixing it?

Work in this order, since a change to a live product template reaches every product page at once.

  • In your admin, open Online Store and then Themes, choose Duplicate from the menu next to your live theme, and make every change in that copy. Shopify allows 20 themes in the admin, so you may need to delete an old one first.
  • List every block with its source and its values before you remove anything.
  • Choose one block to keep. We recommend the theme's own block. Shopify builds it from your product data, so it updates when you change a price and it does not depend on an app staying installed.
  • Add the facts the kept block is missing, such as the brand or the return policy, and make every value match the visible page.
  • Switch off the extra blocks in the copy. Some apps have a setting for their markup, and app embeds have a toggle under App embeds in the theme editor. If the option sits in the app's own settings, it may change the live store at once, so leave that step until you publish the copy.
  • Check the theme code for leftovers from apps you removed. Shopify says some apps add code that is not removed automatically when you uninstall them.
  • Test the copy with the Code option in the Rich Results Test, using the page source from the theme preview. Publish only when one Product or ProductGroup item remains for each product.
  • Test the live product page again after you publish, and write down what you changed and on which date.

Can I do this myself, or should I hire help?

If one app adds the extra block and has a switch for it, an owner can fix this alone with the steps above. Hire help when the duplicate is written into theme files or when more than one app adds markup. Get help as well if your products have variants and you cannot tell whether the theme prints Product or ProductGroup. A mistake in a product template reaches every product page you have.

A checklist you can work through yourself

  • Run 3 product pages through the Rich Results Test and count the Product and ProductGroup items on each one.
  • Compare the price, currency, brand, availability and return policy in each block with what the page shows a shopper.
  • Search the page source for "Product" to see which blocks come from the theme.
  • List the apps that add markup and find where each one can be switched off.
  • Duplicate your theme before you change anything.
  • Test the copy, publish it and test the live page again.
  • Write down each change with its date.

Questions owners ask

Is duplicate schema bad for SEO on Shopify?

Google does not say that two blocks are penalized on their own. The risk is that the blocks disagree with each other or with the page. Google's guidelines say structured data must be a true representation of the page. A page that breaks them can lose its rich results, though Google says that does not affect its ranking in web search.

How do I check for duplicate Product schema on my store?

Paste a product page address into Google's Rich Results Test and count the Product or ProductGroup items it finds. The test renders JavaScript, so it shows app blocks as well as theme blocks. Then compare the price, brand and return policy in each block with the page.

Should I keep my theme's schema or my app's schema?

Keep the block that is most accurate and easiest to maintain. We recommend the theme's own block, since Shopify builds it from your product data and it does not disappear if you uninstall an app. Add any missing facts to that block, then switch the others off.

Will uninstalling an app remove its schema?

Uninstalling does not always remove it. Shopify's help page on uninstalling apps says some apps add code to your theme that is not removed automatically. Check the theme code for leftovers, and ask the app developer which extra steps are needed before you uninstall.

Can duplicate schema change my price in Google Shopping?

It can. Merchant Center's automatic item updates can change the price and availability in your listings from the structured data on your product pages. Google says the feature is on by default. If one of your blocks carries an old price, Merchant Center may read the wrong one.

Does ChatGPT read the schema on my product pages?

OpenAI does not say whether ChatGPT reads the markup on your page directly. Its shopping help page says ChatGPT considers structured metadata from first party and third party providers, such as price and product description. If you keep one accurate block, Google, Merchant Center and any assistant that reads your page all see the same price.

Find every Product block on your key pages

The free scan reads the structured data and text of 5 key pages. It emails you what it found, with the fix for each problem. When duplicate or broken markup comes from your theme, Foundation removes it at the template level, so one fix covers every product page built from that template. We work in a copy of your theme, never the live one, and you approve every change before it goes live. You receive a log of each change and a second scan at the same depth. If your products also need their structured data built from your own catalog, Schema Mesh includes everything in Foundation.

Scan my product pages free

See what Foundation fixes and costs

Sources

We opened every source below on October 5, 2026.

See whether this applies to your site

This article is about what AI can read; the scan checks your structured data page by page.

The free Visibility Mesh scan checks whether AI crawlers can reach your website and reads the structured data and text of 5 key pages. The scorecard has 3 complete findings, and each one names the page and the fix. No install, no call, no card.

Run the free scan