Optimize Shopify SEO & Ads with ProductGroup structured data

By Ilana Davis

Now that the ProductGroup structured data has rolled out to all stores using JSON-LD for SEO, let's talk about what this all means for you.

Before I get too far, there is a lot of information so if I confuse you, please let me know so I can clarify.

The structured data battle between SEO and Ads

Google has two different ways of promoting products.

  1. Organic
  2. Ads.

These two options have different structured data needs and serve two different purposes.

For organic, structured data is used to help you win Rich Results.

For ads, structured data is used to validate your product feed with the landing page.

Then there is this crazy crossover piece where some data comes from Merchant Center to help populate organic Rich Results. So structured data becomes this ball of data used cross-functionally for various purposes.

The unfortunate reality of it all, was that Google didn't specify how variants should be displayed in the structured data. Google and Schema.org have been discussing and trying to figure this out for many years!

So many of us had to guess and see what worked. Then others started to copy what worked and it caught on.

Before the ProductGroup markup, our customers had product data that listed out all your variants (Offers) under one single product.​​​​

Graphical represenation showing Product (main parent) -> Offer (variant A), Offer (variant B), Offer (variant C)

This worked great for Rich Results to ensure you qualify for price ranges and the correct availability for each variant in Rich Results.

The problem is that many merchants (we're talking about all merchants across every platform) were running into issues with structured data when it came to Google Shopping. Merchant Center wanted data to be one way, and organic results wanted it to be the other.

Merchant Center preferred your variants to be individual Products with individual Offers.

Many SEO apps and themes didn't care or understand the impact this change would have on SEO. They only cared about Merchant Center. So they rolled out changes to only show the first available or selected variant.

Pay attention to that last part: only show the first available or selected variant.

That means if a variant wasn't selected the structured data would show only the first available variant. Google doesn't interact with your site. So for search, Google would only ever see the first available variant's data.

That then meant you couldn't qualify for the price ranges in Rich Results and you'd risk Google showing the wrong product availability in search results.

Additionally, if your product feed app didn't use the full variant URL (e.g. example.com/products/name?variant=123456), you'd have a price mismatch in Merchant Center.

As you can see, we were often at odds with how the structured data should be presented to Google because Google wanted it differently for SEO and ads.

Do you create structured data for Rich Results, or do you create structured data for ads?

We had options for both ways and it was working for most of our customers, but not all. It seemed like some customers who used a specific product feed (not to be named) continued to have issues with Merchant Center.

Google has known this was an issue for years going back to 2017.

Only now, 8 years later do we have a solution... and it works.

The benefits of ProductGroup

Google finally released this new ProductGroup update earlier this year. After a few months of extensive tests, we've demonstrated successful Rich Results for multiple stores with no negative impacts AND it meet Merchant Center's needs to validate the product feed. ​​​​

The biggest benefit of moving to ProductGroup is that this is Google's expectation for product markup for variants.

What this means for you?

If you are running ads, the ProductGroup markup should help provide accurate product data for what Merchant Center needs. ​​​​

When you run a Rich Results Test, the ProductGroup structured data will show all variants as individual Products with individual Offers.

Graphical represenation of ProductGroup (main product) => Product (variant A) = >Offer (variant A), Product (variant B) = >Offer (variant B), Product (variant C) = >Offer (variant C),

In Search Console, you should also see an increase in Merchant Listings because each variant is its own product.

This has zero impact on what happens visually on your storefront. It only changes how the structured data is displayed.

The future of product structured data and Google

Going forward, I'm expecting some big things from Google on product structured data.

Not too long ago, Google improved the website scan to use structured data in place of a product feed. At the time, there were a lot of questions on how this would work, but that was before ProductGroup markup was a thing.

Today, I'm seeing more signs from Google that using structured data in place of a product feed is only going to get better.

Some customers are already linking custom data to JSON-LD for SEO so Merchant Center can see and use more data than what's available in Shopify.

If you haven't installed JSON-LD for SEO yet or are still relying on your Shopify theme structured data, you're going to want to install JSON-LD for SEO to take advantage of this new format.

Feel free to reach out to me with any questions or concerns using the help icon on the bottom right of this page or via email.


Get more organic search traffic from Google without having to fight for better rankings by utilizing search enhancements called Rich Results.

Linking Llama

Link discontinued products to their best substitute. Keep discontinued products published on your website and continue to benefit from traffic to these pages.