All Collections
Structured data for product pages
Structured data for product pages
C
Written by Celina
Updated over a week ago

Introduction

We will take the following page https://www.montresandco.com/p/montre-fossil-fs4552.html of the site Montresandco.com as a guideline for this document and whose excerpt in the Google results pages is the following:

1. Type "Product" : required properties

Google gives the details of what it requires in the below link

For the complete documentation, go to: https://schema.org/Product

In a nutshell, the mandatory properties are the following:

  • A name, the name field

  • An image, ideally in the three formats 16/9, 4/3, 1/1:

<script type="application/ld+json">

{

"@context": "http://schema.org",

"@type": "Product",

"name": "Watch Machine",

}

</script>

2. The other properties of the "Product" type

There’s a set of other optional properties that can be added to a product, including the following list that we strongly recommend you to implement:

  • aggregateRating: Consumer rating (such as Trustpilot for example, or your own rating tool)

  • Offers or AggregateOffer : Price information (price, or price range)

  • Brand : Name of the product brand

  • Description: Description of the product

  • Review : Excerpt of a review

Above is the list recommended by Google, but on the schema.org site there are several others: https://schema.org/Product, such as weight, height, etc. We will see them at the bottom of the document.

2.1. Showing rating stars on search results: AggregateRating

The stars on the Google results page are displayed thanks to the AggregateRating property, which according to the official documentation requires 4 elements:

  • ratingCount: Number of ratings

  • ratingValue: Average rating

  • worstRating and bestRating: Minimum and maximum ratings so that Google can understand the average rating

The property must of course be "nested" in the Product schema.

2.2 Showing excerpts of reviews on search results: Review

Google may choose to display relevant review extracts. To do so, you have to implement the Review property, also well "nested" in the Product schema.

All the details are here:

Important: Provide review details

Here is an example of the implementation of AggregateRating and Review:

{

"aggregateRating": {

"@type": "AggregateRating",

"ratingValue": "4.75",

"ratingCount": "2"

},

"review": [

{

"@type": "Review",

"author": "Michael Hammer",

"datePublished": "2017-03-05",

"reviewBody": "The staff is friendly and were able to answer my questions without pause. I’m very happy with the trans am and would do business with them again and recommend them to friends and family. I would say if you’re looking for a car this should be your first and only stop. Arron did a great job helping through the buying experience. He was a great salesman and would be the guy I would talk to.",

"reviewRating": {

"@type": "Rating",

"bestRating": "5",

"ratingValue": "5",

"worstRating": "1"

}

},

{

"@type": "Review",

"author": "Katrina Flowers",

"datePublished": "2016-10-17",

"reviewBody": "With the staff, the cleanliness and quality of the vehicles sold by King of Cars. I would highly recommend to a friend. We experienced a little equipment hiccup during my process but it was rectified. Thank you Pedro Herrera for your professionalism and assistance. I look forward to future purchases from King of Cars. I purchased a 2013 Chrysler 200 Touring.",

"reviewRating": {

"@type": "Rating",

"bestRating": "5",

"ratingValue": "4",

"worstRating": "1"

}

}

]

}

2.3 Price, so that it is directly displayed on search results

Here basically it is a question of indicating if a product is in stock, and at what price.

To do so, you need to fill in the following Price fields :

- Mandatory :

  • availability

  • price

  • priceCurrency

-Optional fields :

  • itemCondition: is your product new?

  • Url

  • priceValidUntil: useful for promotion periods!

Code example :

"offers": {

"@type":"Offer",

"availability":"http://schema.org/InStock",

"price":"189.0",

"priceCurrency":"EUR",

'

"priceValidUntil":"2020-06-23"

},

Read more on the Google doc specific to products: https://developers.google.com/search/docs/data-types/product

For any e-commerce site on its product page, or even a marketplace (to detail all the offers), it is necessary to use the Offer schema:

More information on the Schema website: https://schema.org/Offer

2.4. Going even further: weight, width, etc.

Here is an example of other features that Google can display thanks to structured data:

You can find this data here: https://schema.org/Product

And, if you display them in a feature block, on a table, like Cdiscount, without necessarily structuring them in Schema.org markup, you can get them too: https://www.cdiscount.com/maison/achat-meuble-literie/confort-design-matelas-160x200-ressorts-30-cm/f-11755200103-mrholu205ab.html

Also, on Google search results :

and look at the result of the analysis in Google's structured data testing tool:

<script type="application/ld+json">

{

"@context": "http://schema.org",

"@type": "Product",

"name": "Watch Machine",

"sku": "FOSI-FS4552",

"gtin13":"4048803856352",

"brand":{"@type": "Brand", "name": "Fossil"},

"description":"<p><strong>Fossil Men's Watch - Machine&nbsp;FS4552</strong></p> <p>The flagship model of the American brand known for its signature style, this men's watch couldn't have lived up to its name. With its virile and urban look... it is a massive production machine! Entirely made of black steel with matte finishings, it is distinguished by its thick guilloche bezel. At the heart of its large dial, the chronograph hour markers and counters are dressed in contrasting white to ensure perfect legibility of the time. Ultra trendy and masculine, the&nbsp;<a href="/bc/montres-fossil-homme.html">Fossil watches for Men</a>&nbsp;are a must-have for any good dressing room! </p> <ul> <li>guillochine watchband</li> <li>date window</li> <li>total urban black look&nbsp;</li> </ul>",

"offers": {

"availability" : "http://schema.org/InStock",

"itemCondition" : "http://schema.org/NewCondition",

"prix" : "189.0",

"priceCurrency" : "EUR",

"priceValidUntil":"2020-06-23"

},

"aggregateRating": {"@type": "AggregateRating", "ratingValue":5, "reviewCount":8},

"review":[

{"@type": "Review", "author": "Anonymous", "description": "Tr\u00e8s bon", "reviewRating":{"@type": "Rating", "bestRating": "5", "ratingValue":4, "worstRating": "0"}},

{"@type": "Review", "author": "Nadege", "description": "I received it within 48 hours ! Just perfect! It is superb and my husband liked it. ", "reviewRating":{"@type": "Rating", "bestRating": "5", "ratingValue":5, "worstRating": "0"}},

{"@type": "Review", "author": "Jos\u00e9", "description": "nice watch but hands not very visible at night and in the sun", "reviewRating":{"@type": "Rating", "bestRating": "5", "ratingValue":4, "worstRating": "0"}},

{"@type": "Review", "author": "Diana", "description": "Tr\u00e8s beautiful watch. Refined, robust and durable. ", "reviewRating":{"@type": "Rating", "bestRating": "5", "ratingValue":5, "worstRating": "0"}},

{"@type": "Review", "author": "Olivier", "description": "Watch conforms to the description, nice price, fast delivery. Only downside: I had opted for the strap adjustment which was not done. Too bad. ", "reviewRating":{"@type": "Rating", "bestRating": "5", "ratingValue":4, "worstRating": "0"}},{"@type": "Review", "author": "Pascal", "description": "Nice watch for a good value ( gr\u00e2ce \u00e0 your site otherwise you have to pay a little more between 40 and 50 euros shipping included )", "reviewRating":{"@type": "Rating", "bestRating": "5", "ratingValue":5, "worstRating": "0"}}

{"@type": "Review", "author": "Elodie", "description": "Fast shipping (order Wednesday received Friday). \Free gift wrapping, very convenient.", "reviewRating":{"@type": "Rating", "bestRating": "5", "ratingValue":5, "worstRating": "0"}},

{"@type": "Review", "author": "Abdeljalil", "description": "thanks", "reviewRating":{"@type": "Rating", "bestRating": "5", "ratingValue":5, "worstRating": "0"}}

]

}

</script>

Did this answer your question?