Structured data, often called Schema Markup, is a standardized format for providing search engines with information about your content. For eCommerce websites, this can be particularly useful for showcasing product information directly within search results, potentially leading to higher click-through rates. However, in this article, we will discuss from the perspective of Google Merchant Center.
If you add products to Google Shopping, you might encounter an error saying that prices cannot be updated dynamically, mismatch availability, etc…
This is because something on your website is causing an issue.
Typical Google Merchant Warnings :
- Mismatched value (page crawl) [price]
- Mismatched value (page crawl) [availability]
- Automatic item updates active [availability]
- Automatic item updates active [condition]
- Automatic item updates active [price]
Possible Causes :
- You have enabled Automatic item update
- You can disable this feature in Settings > Automatic Improvements, however I would recommend keeping this enabled
- Having multiple prices on the website, which confuses Google
- Prices are in the wrong currency
- Only showing VAT exclusive prices
- No structured data
Structured data is essentially an extra tag you must add using JSON-LD. This speeds up the web crawling process for Google Merchant and avoids collecting the wrong data. This article is referenced from Google Shopping FAQ.
If you are looking to add structured data to a eCommerce platform please have a look at the pre-made codes from the list below.
Here are some examples for developers. Make sure to replace the values with your specific product information.
<script type="application/ld+json"> { "@context": "http://schema.org/", "@type": "Product", "name": "Awesome Sneakers", "image": [ "https://example.com/photos/1x1/photo.jpg", "https://example.com/photos/4x3/photo.jpg", "https://example.com/photos/16x9/photo.jpg" ], "description": "A pair of high-quality sneakers.", "sku": "12345", "mpn": "98765", "brand": { "@type": "Brand", "name": "Nike" }, "review": { "@type": "Review", "reviewRating": { "@type": "Rating", "ratingValue": "4", "bestRating": "5" }, "author": { "@type": "Person", "name": "John Doe" } }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.4", "reviewCount": "89" }, "offers": { "@type": "Offer", "url": "https://example.com/product", "priceCurrency": "USD", "price": "89.99", "priceValidUntil": "2024-11-20", "itemCondition": "http://schema.org/UsedCondition", "availability": "http://schema.org/InStock", "seller": { "@type": "Organization", "name": "Nike" } } } </script>
Important
If you have existing schema data, you need to delete the old schema data or copy elements you need from the code above into your existing schema. If you don’t do this, then Google will see two product listings, resulting in errors.
For Example, if I already have the price, priceCurrency and availability, but do not have itemcondition. Then, you need to copy the one-line itemcondition and paste it inside the offers container. And not create a new offer container.
"itemCondition": "http://schema.org/UsedCondition",
Checking The Results
You can use Google’s Structured data testing tool, to check if everything is done correctly. The below image shows an example of a correct listing.