Tips and tricks to enable review snippet for your website

This is a complete guide to help you add reviews, ratings, and votes to your pages. These rich snippets help with CTR and improve your page rank over time due to user engagements. Here are some of the best tips and tricks to add AggregateRating or directly Review schema markup to your pages.

What are the reviews, ratings, votes schema markup, and why do they matter?

The moment we see an article with 5/5 star reviews attached to the search result, we tend to click on it immediately before considering the other options; this is called CTR (Click-Through-Rate). 

Note: if you are not sure what schema markup is, or how to add the JSON LD code to your website, then I highly recommend that you read the complete schema markup guide first.

Suppose you have read about schema markup or structured data. You understand that adding Review rating and AggregateRating to your pages would likely give you the Rich Results (also known as Rich Snippets) with star ratings.

 

In this guide, we will go through the requirements, restrictions, and sample JSON LD code to help you with page reviews implementation. Some people don't realize that you cannot have reviews/ratings on your website's home page. 

 

⭐ How do I determine if my page is eligible for review snippet? ⭐

 

Google uses the term Review Snippet when talking about reviews or ratings. Many schema.org types have support for review snippets. To know if your pages are eligible for rich snippets, visit Google Review Snippet guide and see if your page falls into any supported type or subtype.

 

In this article, I will focus on the two most known types, such as Product and LocalBusiness:

 

 

Keep in mind that Local Business reviews were limited after google marked it as self-serving. Thus even if you have Local Business with aggregate rating and reviews, your page might not be eligible to display rich snippets. What you can do is to add schema markup on your products or services pages.

 

⭐ How to apply AggregateRating schema to LocalBusiness⭐

 

Below is an example of one of my websites dupaws.com. I used AggregateRating directly on Local Business, and the page received rich snippets, even though the reviews were added directly on the site.

As you can see, the LocalBusiness aggregateRating field requires an AggregateRating duh… this is how JSON LD with schema.org code works. Once you get used to it, then things become a bit easier with time.

If you notice that my search result has 342 votes instead of 342 reviews, the reason for this is that by mistake when I originally built my schema markup, I added ratingCount instead of reviewCount 

Below is google definition of each:

ratingCount Number The total number of ratings for the item on your site. At least one of ratingCount or reviewCount is required.

reviewCount Number Specifies the number of people who provided a review with or without an accompanying rating. At least one of ratingCount or reviewCount is required.

 

<script type="application/ld+json"> 
	{ 
		"@context": "http://schema.org", 
		"@type": "LocalBusiness", 
		"@id": "https://www.dupaws.com/pub/reviews", 
		"name": "Dupaws Pet Sitters", 
		"image": "https://www.dupaws.com/services/images/site/petsbag.jpg", 
		"sameAs": "https://www.dupaws.com/pub/sitters/united-arab-emirates", 
		"priceRange": "$", 
		"address": { 
			"@type": "PostalAddress", 
			"streetAddress": "Dubai, Dubai", 
			"addressCountry":{ 
			"@type": "Country", 
			"name":"United Arab Emirates" 
		} 
		}, 
		"geo": { 
			"@type": "GeoCoordinates", 
			"latitude": "25.2791343", 
			"longitude": "55.3623323" 
		}, 
		"aggregateRating": { 
			"@type": "AggregateRating", 
			"ratingValue": "5", 
			"bestRating": "5", 
			"worstRating": "1", 
			"ratingCount": "342" 
	} 
} 
 
</script>

 

To give some context. This website connects pet sitters to pet owners; these reviews are for each pet sitter, not for our business; that's why having them doesn't violate Google policy for self-serving reviews.

 

Simply adding AggregateRating with 1000 reviews without having any page with Review or Rating means google will ignore your page markup. At dupaws.com, we had a Review schema markup for each pet sitter. Thus the AggregateRating count was adding up with the numbers of Reviews on each page. Therefore Google decided to give this main review page the rich snippet results.

 

Below is an example of a review received from a customer to one of the pet sitters:

 

<script type="application/ld+json"> 
	 { 
	 	"@context":"https://schema.org", 
	 	"@type":"Review", 
	 	"author":{ 
	 	"@type":"Person", 
	 	"name":"Katarzyna H", 
	 	"image":"https://www.dupaws.com/services/images/profiles/defaultProfilePic.png" 
	 	}, 
	 	"url":"https://www.dupaws.com/pub/sitters/united-arab-emirates/dog-boarding-in-dog-boarding-in-dog-boarding-in-dog-boarding-in-dubai/mirdif-a-k-i-love-dogs-", 
	 	"datePublished":"7/22/2018", 
	 	"dateCreated":"7/22/2018", 
	 	"dateModified":"7/22/2018", 
	 	"publisher":{ 
	 	"@type":"Organization", 
	 	"name":"Dupaws", 
	 	"sameAs":"https://www.dupaws.com" 
	 	}, 
	 	"description":"Alessandra was great! Im, very satisfied with her service! ", 
	 	"itemReviewed": 
	 	{ 
	 	"@type":"LocalBusiness", 
	 	"image":"https://www.dupaws.com/services/images/profiles/d472096d-429f-4fda-991a-829f918580ba.png", 
	 	"address":{ 
	 	"@type":"PostalAddress", 
	 	"name":"Mirdif" 
	 	}, 
	 	"name":"Alessandra" 
	 	}, 
	 	"reviewRating":{ 
	 	"@type":"Rating", 
	 	"ratingValue":5, 
	 	"worstRating":"1", 
	 	"bestRating":"5" 
	 	} 
	 
	 } 
</script>

 

Suppose you have more reviews for this pet sitter. In that case, it's best to create a LocalBusiness schema markup and add a group of Review objects to it instead of creating a Review schema markup and adding ItemReviewed as we did here.

The code will look like this, notice we have a list (array) of review type, each object inside the review is of type schema.org Review:

 


<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": "LocalBusiness",
    "review": [
        {
            "@type": "Review",
            "reviewRating": {
                "@type": "Rating",
                "ratingValue": "5",
                "bestRating": "5",
                "worstRating": "1"
            },
            "author": {
                "@type": "Person",
                "name": "Pet owner 1"
            },
            "description": "This is the first review, the pet sitter was great.",
            "publisher": {
                "@type": "Organization",
                "name": "Dupaws FZE",
                "logo": "https://www.dupaws.com/logo.jpg",
                "url": "https://www.dupaws.com"
            },
            "datePublished": "2020-08-26"
        },
        {
            "@type": "Review",
            "reviewRating": {
                "@type": "Rating",
                "ratingValue": "5",
                "bestRating": "5",
                "worstRating": "1"
            },
            "author": {
                "@type": "Person",
                "name": "Pet owner 2"
            },
            "description": "This is the second review, the pet sitter was awesome.",
            "publisher": {
                "@type": "Organization",
                "name": "Dupaws FZE",
                "logo": "https://www.dupaws.com/logo.jpg",
                "url": "https://www.dupaws.com"
            },
            "datePublished": "2020-08-26"
        }
    ]
}
</script>

 

I used SchemaBoost schema markup generator to generate this schema, notice that I can duplicate the Review, and change name/description directly, which saves a lot of time compared to writing this in code manually.

 

SchemaBoost Schema Builder 

 

⭐ How to apply AggregateRating schema to Product⭐

 

If your website has any product (physical or service), then it's vital to add reviews and ratings to it. Not only you increase your CTR and user engagement, but your content becomes eligible for additional keywords. 

 

If you add review schema markup to product xx, and a user searches for "product xx reviews.", your product will have a better chance of showing up compared to other products that don't have schema markup. Keep in mind that you don't have to focus on review or reviews keyword in your content.

 

Let's take a look at product search results rich snippet, the result directly below it is from amazon.com, and you can see that reviews results are 10x times better and will convert 1000% more.

 

The in-stock and price details come from offers markup; It is a type that you can add on Product schema. Once you add this schema markup, your products will also show up in Google Images! Take a look at the rich snippet for image:

 

Remember that Adidas didn't have to add anything extra for google images. 

 

⭐ What are the required fields for AggregateRating?⭐

 

For simplicity, I added a screenshot from SchemaBoost Schema Builder to show the AggregateRating required fields (marked in red): 

 

 

The yellow fields are recommended by Google, bestRating, and worstRating typically have a value of 5 and 1 respectively. However, if your reviews are different, such as 10 bestRating and 0 worstRating, then you can override those fields. If omitted from your code, then Google will consider they are 5 and 1.

itemReviewed can be required depending on the schema. For example, if you initially used a Product schema and added AggregateRating to it, you do not need to add itemReviewed. However, if you created an AggregateRating schema originally, you must add itemReviewed. Otherwise, the schema markup code will be invalid.


Below is a sample JSON LD code similar to the one Adidas uses for their all star shoe:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Product",
  "sku": "XYZ",
  "brand": "adidas",
  "image": [
    "image1.jpg",
    "image2.jpg"
  ],
  "name": "Adidas Superstar",
  "color": "White and Black",
  "category": "Shoes",
  "description": "The best selling shoes by adidas",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": 4.7,
    "reviewCount": 1000,
    "bestRating": 5,
    "worstRating": 1
  },
  "review": [
    {
      "@type": "Review",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": 5
      },
      "author": "Meme",
      "name": "Great shoes, I love them",
      "reviewBody": "Loved those shoes, they are awesome",
      "datePublished": "2020-08-07"
    },
    {
      "@type": "Review",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": 5
      },
      "author": "Nancy",
      "name": "Sexy shoes, I always wear them",
      "reviewBody": "Very comfortable shoes",
      "datePublished": "2020-08-07"
    }
  ],
  "offers": {
    "@type": "Offer",
    "priceCurrency": "USD",
    "price": 100,
    "availability": [
        "InStock"
    ]
  }
}
</script>

 

What happens if you don't have the actual reviews on your pages? In some cases, a link to external website reviews might be enough to grant your page rich snippet results. However,  it will be easier for google bot to analyze your pages if the reviews are directly on your website.


I hope you enjoyed this article, remember to visit https://www.schemaboost.com to learn more about building schema markup for your website.