You did it – you finally did it! You’ve implemented all recommended schema.org types and properties throughout your Magento store only to see Google Merchant Center warning you for “Insufficient match of microdata price information”. Let’s admit it – we’ve all been there at least once.
Although we don’t usually face this issue on simple product pages (since product markup on these pages is pretty straightforward), we can often find it on product variants.
Since setting up correct structured data markup on grouped and configurable products isn’t always easy as it seems, I’ve prepared this short guide that should serve you for both SEO and PPC purposes.
What are product variants?
As the name says, product variants are the same (or very similar) products that vary by size, color, condition, material, etc. In Magento, those are usually simple products with custom options, configurable products, grouped products, and bundle products.
As you can see in the example above, each variation can have a different price, making it difficult for GMC (Google Merchant Center) crawlers to match the price with a specific variation. In that case, it’s essential to implement correct schema.org to avoid Google Merchant Center issues and get the most out of your structured data markup.
If it fits – I sits… or not?
If structured data markup helps search engines understand the website’s content better, shouldn’t a correct schema.org implementation for the SEO also work for the PPC? Well, when it comes to product variants, the answer isn’t that simple.
The main cause of this complexity is that Magento has several product types that can be used simultaneously. Since Google recommends adding product details markup only on one product page, schema.org implementation with different product types visible on the frontend can be challenging.
Another issue is that Google Merchant center has strict rules for product data quality. If you want to enable automatic item updates (and you usually do), the prices in your feed need to match prices in the structured data markup, which isn’t always possible if your markup is SEO driven.
Thereby, just because something fits – it doesn’t mean it’s right.
Since structured data markup requirements for product variant pages can be very contradictory (depending on if you’re looking from the SEO or PPC perspective), it’s essential to look from both sides to find the best implementation for your store.
How to optimize product variants structured data markup for search engines?
When it comes to SEO, things are pretty much straightforward. An optimal way to implement product schema markup on product variants is to use Aggregate Offer to display the range of prices in rich results.
If everything is ok, the end result on search engine result pages should look like this:
It looks great, right? But as we said before, this is where the SEO and PPC implementation of structured data markup differs. If you try to send these product pages to Google Merchant Center, you’ll likely receive the following warning:
As a quick fix, you can pause Automatic items updates, but only until you implement a better, long-term solution to your site. Turning off automatic updates might result in many unsatisfied users that came to your site because they’ve seen great deals on Google Shopping, only to find out that the prices have changed.
So, what should you do?
Start adjusting your Google shopping feeds and structured data markup to match Google Merchant Center requirements
Since you don’t want to lose all the benefits you get from correct schema.org implementation for the SEO, the best way to do structured data markup on product variants is to tweak your google shopping feed configuration.
The first step would be to adjust your feed to add a simple product identifier in the URL (such as SKU) on product variant pages. Don’t forget that these “new” pages should always have a rel canonical that points to the main page to avoid duplicate content issues.
Since each product variant should now have a unique URL in the shopping feed, the next step would be implementing a product schema with a specific Offer for that exact item.
Let’s take a look at an example.
Suppose www.example.com/black-grumpy-cat-tshirt.html
is a configurable product whose price varies by size. The first step is to configure your shopping feed to form a unique URL for associated products.
After that, each product variant should have its specific identifier in the URL:
www.example.com/black-grumpy-cat-tshirt.html?att=8343-S
www.example.com/black-grumpy-cat-tshirt.html?att=8343-M
www.example.com/black-grumpy-cat-tshirt.html?att=8343-L
www.example.com/black-grumpy-cat-tshirt.html?att=8343-XL
Since all these pages are copies of their parent, they should have a www.example.com/black-grumpy-cat-tshirt.html
as a rel canonical.
Additionally, keep in mind that each child product should have only its own schema.org markup assigned (one Offer per product), since their parent (www.example.com/black-grumpy-cat-tshirt.html
) will represent all variants within the AggregateOffer.
Don’t forget to test!
The best way to ensure you did everything right – is to test your products in Rich Results Tester, Google Merchant Center, and Google Search.
Bear in mind that you won’t be able to see the rich snippets if your product isn’t among the top 10 results, so make sure to check the well-ranked products.
If you need any advice or assistance with structured data markup implementation, please let us know. I’m confident we’ll find the best solution for your business specifically.