Can you have multiple Schema.org Products on a page?

Duplicate Products are allowed, but you need to ensure they are set up correctly. Learn how and avoid common pitfalls in this guide.

David

Founder, retailQ

Mar 12, 2026

It's common to find duplicate Product entities in your structured data. In this guide, we use Google's Rich Results Test to show that, as long as they are correctly linked, duplicate Product entities get merged together. Without the link, they Google will only use one Product listing, potentially impacting your SEO.

Common causes

Most often, multiple Product entities are created due to conflicting plugins from your ecommerce platform or content management system (CMS). Based on our recent audits (over 300 ecommerce sites in the last month), we've found that the most common cause is review plugins which insert a second Product entity containing review and rating information, instead of adding the data to the existing entity.

Do duplicate Product snippets impact SEO and GEO?

Having duplicate Products is not necessarily a problem for enabling rich results in Google searches, depending on how they are set up.

Linking via '@id' solves the issue

As long as your Product snippets, have the same '@id' value, Google will merge them and treat them as a single entity.

Google and other search engines create a 'graph' of your schema markup when they crawl your website. Each Product, Review and AggregateRating in your data becomes a node in the graph, which are linked based on their relationship.

When Google finds two Products which have an identical '@id' attribute, it knows that they represent the same node in the graph, and will merge the data from both the Products together.

You must specify the '@id' attribute on both Product items for this to work.

Avoid clashing data, where the same attributes (like name or description) are different on the two Products, because Google may not merge these or pick one.

Let's prove this! Copy the following code into Google's Rich Result Testing tool. Press the 'Code' option, and paste it in. After submitting, you will see that it finds only one Product snippet (it merged them).

1[{
2  "@context": "https://schema.org",
3  "@type": "Product",
4  "@id": "Product1",
5  "name": "Example Product With Offer",
6  "image": "https://image.com",
7  "offers": {
8    "@type": "Offer",
9    "price": "29.99",
10    "priceCurrency": "GBP",
11    "availability": "https://schema.org/InStock",
12    "url": "https://example.com/product-with-offer"
13  }
14},
15{
16  "@context": "https://schema.org",
17  "@type": "Product",
18  "@id": "Product1",
19  "name": "Example Product With Rating",
20  "aggregateRating": {
21    "@type": "AggregateRating",
22    "ratingValue": "4.6",
23    "reviewCount": "124"
24  }
25}]
Rich result testing tool results, showing 1 Product Snippet Found
With the "@id" attribute set, Google merges the different Product snippets into one

Without the same ID, Google will pick only one Product

When there are multiple competing Product snippets (i.e. they do not share the same '@id' attribute), then Google's rich results will still work - but it will only display the data from one of the Products - negatively impacting your SEO.

For example, when we remove the '@id' attribute from the example code and run it through the testing tool again, it finds two different products. Only the Product with the 'Offer' is selected for the Merchant Listing.

Screenshot of the rich result testing tool with the '@id' attribute removed. Google finds multiple Products
Removing the "@id" attribute means the Products are not linked, and Google treats them separately. It finds two Product snippets, and only uses on for the Merchant Listing

Generally, it will prioritise based on:

  1. Product snippet which meets the minimum criteria for a Merchant Listing (it has a name, an image, and an Offer)
  2. Most complete Product snippet (based on the recommended, but not required) criteria

Use the Rich Result Tool to test which Product is being used

Use Google's Rich Result Testing tool to test which Product is being selected for rich results. You should see multiple Products, but only one Merchant Listing. The Merchant Listing contains data from the selected Product.

For in-depth validation (including flagging when products are unlinked), use retailQ. Our tool crawls your site, finds your product snippets, and validates them against 200+ more thorough checks than the Rich Results Tool.

Handle Product Variants with a ProductGroup snippet

Often, a product page on your website is actually showing many different products, depending on the different colours, sizes or fits. You should create multiple Product snippets for these, but they must be linked together through a ProductGroup snippet. This is Google's preferred way and will enable rich results where users can see different colour/size options within Google Shopping.

Ideally, you place all the Product snippets nested within the ProductGroup's hasVariants attribute. Alternatively, you can link to the ProductGroup using the productGroupID attribute.

It also helps AI understand that the products are linked, and offer the different variants to the user.

Can you have multiple Schema.org Products on a page? | retailQ