{"id":3473,"date":"2018-05-10T15:59:19","date_gmt":"2018-05-10T15:59:19","guid":{"rendered":"https:\/\/wpmudev.whitespark.ca\/how-to-use-aggregate-review-schema-to-get-stars-in-the-serps\/"},"modified":"2024-10-28T16:05:29","modified_gmt":"2024-10-28T22:05:29","slug":"how-to-use-aggregate-review-schema-to-get-stars-in-the-serps","status":"publish","type":"post","link":"https:\/\/whitespark.ca\/blog\/how-to-use-aggregate-review-schema-to-get-stars-in-the-serps\/","title":{"rendered":"Local Businesses: Get Review Snippets in Google with aggregateRating Schema"},"content":{"rendered":"<p><strong>Heads up:<\/strong> Unfortunately (although maybe for the best), Google is no longer going to show aggregate ratings in your snippets for LocalBusiness or Organization types (and their respective subtypes), regardless of how carefully you mark them up. In other words, this article is no longer useful. Sorry \ud83d\ude41<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-57988\" src=\"https:\/\/whitespark.ca\/wp-content\/uploads\/2024\/06\/giphy-2.gif\" alt=\"\" width=\"500\" height=\"214\" \/><\/p>\n<p>See <a href=\"https:\/\/whitespark.ca\/blog\/local-businesses-say-goodbye-to-review-snippets-in-google\/\">here<\/a> and <a href=\"https:\/\/webmasters.googleblog.com\/2019\/09\/making-review-rich-results-more-helpful.html\">here<\/a> for more info!Review star rich snippets are a rather poorly understood feature of Google\u2019s search results, especially for local businesses. There\u2019s not a lot of clear information about how to trigger them, and what rules and guidelines you should be considering in your implementation.<\/p>\n<p><a href=\"https:\/\/www.kingofcarstx.com\/in-house-financing\/\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-53999\" src=\"https:\/\/whitespark.ca\/wp-content\/uploads\/2024\/06\/kofc-review-rich-snippet-1024x283.png\" alt=\"\" width=\"1024\" height=\"283\" \/><\/a><\/p>\n<p>Part of the problem is that it has been a moving target for the past few years. At first, pretty much any site could achieve review stars in their snippet by simply adding the aggregateRating schema markup to their pages. Then, with the emergence of JSON LD, doing this got even easier &#8212; and implementation (and abuse) increased accordingly.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-54009\" src=\"https:\/\/whitespark.ca\/wp-content\/uploads\/2024\/06\/mr4pl.jpg\" alt=\"\" width=\"500\" height=\"375\" \/><\/p>\n<p>The results were as you\u2019d expect. SEO\u2019s and DIY-ers were marking every page on their sites up for review stars. And this worked\u2026 for a time.<\/p>\n<p>It\u2019s still possible to trigger review stars by simply adding the aggregateRating value to your <a href=\"http:\/\/schema.org\/LocalBusiness\">LocalBusiness schema markup<\/a> &#8212; but the likelihood that this will work for you out of the box is low. More importantly, this approach violates many of Google\u2019s guidelines and is just generally a spammy, junky practice that doesn\u2019t help users make informed decisions; so even if it\u2019s working on some sites right now, it&#8217;s not a recommended or sustainable approach.<\/p>\n<h1>The Rules<\/h1>\n<p>Google has clamped down on which sites\/pages get stars in their rich snippets. Even if you do everything properly, you still may not see stars on every (or any) of the pages you want them on. The best bet, though, is to try to keep your implementation as above board as possible by following these rules:<\/p>\n<p><strong>These ones are mandatory and somewhat enforceable:<\/strong><\/p>\n<ul>\n<li>Don\u2019t use aggregateRating on your home page (they just won\u2019t work and may be a spam signal)<\/li>\n<li>aggregateRating score must represent actual reviews that are all visible on your site<\/li>\n<li>If you don\u2019t show the actual reviews on a given page, but are using aggregateRating schema, that page needs to clearly show the review score and link to the page where the reviews are visible<\/li>\n<li>Pages you put the aggregateRating score on must be relevant to the reviews<\/li>\n<li>Reviews should be unique to your site (not pulled from Google, Yelp, etc.)<br \/>\n<em>Note: you can put 3rd party reviews on your website, you just can\u2019t mark them up for your rich snippet.<\/em><\/li>\n<\/ul>\n<p><strong>These ones are less enforceable, but still worth trying to oblige:<\/strong><\/p>\n<ul>\n<li>You shouldn\u2019t curate reviews (if you do, at least throw in a few 3\u2019s and 4\u2019s)<\/li>\n<li>You should have the user\u2019s permission to publish their words<\/li>\n<li>Users should be able to add reviews (or at least make it look like they can)<\/li>\n<\/ul>\n<p>Last but not least, it appears that <strong>in order for a page to trigger stars it needs to have some authority<\/strong>. Well linked\/trafficked pages typically stand a better chance of having review stars in the SERP.<\/p>\n<p>These rules are based on my interpretation of <a href=\"https:\/\/localu.org\/blog\/video-deep-dive-getting-review-rich-snippets-benefit-rich-snippets-single-location-websites\/\">Mike Blumenthal\u2019s interpretation<\/a> of the current <a href=\"https:\/\/developers.google.com\/search\/docs\/data-types\/review#review-snippet-guidelines\">Google Guidelines for review snippets<\/a> \ud83d\ude1b<\/p>\n<h1>Make it Happen<\/h1>\n<p>With the above parameters in mind, there are a couple ways to implement reviews on your site and remain above board while maximizing your chances of getting stars in your snippets.<\/p>\n<h2><span style=\"color: #e93753;\">Option A:<\/span> Use review software<\/h2>\n<p>Some review systems will handle all the heavy lifting for you. Popular examples include:<\/p>\n<ul>\n<li><a href=\"https:\/\/whitespark.ca\/reputation-builder\/\">Whitespark Reputation Builder<\/a><\/li>\n<li><a href=\"https:\/\/www.trustpilot.com\/\">TrustPilot<\/a><\/li>\n<\/ul>\n<p><strong>Whitespark\u2019s Reputation Builder<\/strong> is specifically built to help local businesses collect and monitor reviews, and makes displaying properly marked-up 1st party reviews on your site totally painless using the built-in Review Widget feature. This option is affordable, stress-free, and well worth considering. The alternative I describe below is actually based largely on mimicking Reputation Builder\u2019s output.<\/p>\n<p><a href=\"https:\/\/whitespark.ca\/reputation-builder\/\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-54000\" src=\"https:\/\/whitespark.ca\/wp-content\/uploads\/2024\/06\/Review-Widget-1024x839-1024x839-1.jpg\" alt=\"\" width=\"1024\" height=\"839\" \/><\/a><\/p>\n<p>TrustPilot is quite a bit pricier, and generally better suited to larger, national companies.<\/p>\n<p>These systems make implementation easy by simply letting you pop a widget or a code snippet into your site. They aren\u2019t free and do require a bit of commitment to implement and use, though, which might not be necessary if you\u2019re only looking to get review stars in the SERP.<\/p>\n<h2><span style=\"color: #e93753;\">Option B:<\/span> Roll your own review system<\/h2>\n<p>If you\u2019re motivated, it\u2019s pretty simple to whip up a basic review system for your website that adheres, for the most part, to Google\u2019s guidelines (or at least enough that no one will know the difference).<\/p>\n<p>This system could be anywhere on the complexity spectrum, based on your resources and needs. Here I\u2019m going to illustrate an <strong>easy and free<\/strong> way to get the basics in place.<\/p>\n<p>These instructions are based on using WordPress, but the general idea would apply to any platform. <a href=\"https:\/\/codelabs.developers.google.com\/codelabs\/structured-data\/#0\">Here&#8217;s more info about including schema markup in your web pages.<\/a><\/p>\n<h3>Step 1<\/h3>\n<p>Make a testimonials\/reviews page on your site, and fill it with customer reviews. Here\u2019s one I built for a client that we\u2019ll use as an example:<\/p>\n<p><a href=\"https:\/\/www.kingofcarstx.com\/testimonials\/\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-54002\" src=\"https:\/\/whitespark.ca\/wp-content\/uploads\/2024\/06\/King-of-Cars-Customer-Testimonials-King-of-Cars-2018-05-09-16-14-32-1024x737.png\" alt=\"\" width=\"1024\" height=\"737\" \/><\/a><\/p>\n<p>I used a custom post type for the reviews, but you could also just add them as static content.<\/p>\n<p><strong>Pro Tip:<\/strong> For a quick way to get those pretty review stars into your WordPress posts, <a href=\"https:\/\/en-ca.wordpress.org\/plugins\/universal-star-rating\/\">here\u2019s a handy plugin called Universal Star Rating<\/a>. Be careful using other plugins, as many of them will inject their own review schema into your site and make things messy.<\/p>\n<p>I give this plugin [usr 5] \ud83d\ude09<\/p>\n<h3>Step 2<\/h3>\n<p>Mark up each review with the <a href=\"http:\/\/schema.org\/Review\">review schema<\/a>. Google <a href=\"https:\/\/developers.google.com\/search\/docs\/guides\/intro-structured-data#structured-data-format\">recommends using JSON LD<\/a>, and so do we &#8212; so that\u2019s what we\u2019ll use here.<\/p>\n<p>Example:<\/p>\n<p><script src=\"https:\/\/gist.github.com\/npierno\/5e363445ae5736f46e249c5248a7356f.js\"><\/script> Wrap the reviews with the LocalBusiness schema (or a more specific option, if you prefer), and include the aggregateRating with the average of all the reviews on the page. Example: <script src=\"https:\/\/gist.github.com\/npierno\/6305ba0d79431eb87719f88b29544eff.js\"><\/script><\/p>\n<p><a href=\"http:\/\/schema.org\/LocalBusiness\">Refer to schema.org for more info on completing these properties.<\/a><\/p>\n<h4>Bring it all together<\/h4>\n<p>Here\u2019s the full JSON LD markup I used on the testimonials page (I only included two reviews in this example, but you\u2019d re-use the review snippet for however many reviews you have on the page).<\/p>\n<p><script src=\"https:\/\/gist.github.com\/npierno\/d25f598043cda6b4167ca6c8a3565590.js\"><\/script> Add the markup to your website&#8217;s &lt;head&gt;. To include the markup in WordPress, I\u2019m using a plugin called <a href=\"https:\/\/wordpress.org\/plugins\/per-page-add-to\/\">Per page add to head<\/a>. This allows you to easily add JSON LD to any page, but there are countless other ways to achieve this.<\/p>\n<h5>Use <a href=\"https:\/\/search.google.com\/structured-data\/testing-tool\">Google\u2019s Structured Data Testing Tool<\/a> to check your work. Warnings are OK (but don\u2019t disregard them), Errors must be corrected.<\/h5>\n<p>&nbsp;<\/p>\n<h3>Step 3<\/h3>\n<p>Add a \u201cleave a review\u201d form somewhere to the Testimonials page. <img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-54007\" src=\"https:\/\/whitespark.ca\/wp-content\/uploads\/2024\/06\/kofc-testimonial-form-1024x604.png\" alt=\"\" width=\"1024\" height=\"604\" \/> You <em>could<\/em> build a whole system that moderates submissions and then publishes them on the page (like <a href=\"https:\/\/whitespark.ca\/reputation-builder\/\">Reputation Builder<\/a> does)\u2026 or you could not. No one will know \u00af_(\u30c4)_\/\u00af<\/p>\n<h3>Step 4<\/h3>\n<p>Add your LocalBusiness and aggregateRating schema to other pertinent pages on your site. Common examples would be your Services page(s) and About us page. Avoid things like blog posts, resources pages, and anything else where the reviews aren\u2019t applicable. I\u2019d also just avoid putting it on too many pages in general. Example: <script src=\"https:\/\/gist.github.com\/npierno\/390d42ac3bab619030843d3b54ad6588.js\"><\/script><\/p>\n<p><strong>Again, don\u2019t put that on your home page.<\/strong> You can put the LocalBusiness stuff there, just remove the aggregateRating, like so:<\/p>\n<p><script src=\"https:\/\/gist.github.com\/npierno\/27c78c8afa984cc5f5b851a8e15054ce.js\"><\/script><\/p>\n<p><strong>Note:<\/strong> Every page with the aggregateRating score on it must either show all the reviews it references OR show the aggregated review score and clearly link to the page that contains the reviews.<\/p>\n<p>You can do this however you like. In my implementation, I added a block like this to all the pages I put the aggregateRating schema on:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-54003\" src=\"https:\/\/whitespark.ca\/wp-content\/uploads\/2024\/06\/kofc-rating-block-1024x408.png\" alt=\"\" width=\"1024\" height=\"408\" \/><\/p>\n<p>That\u2019s it!<\/p>\n<p>Did I miss anything? Any questions about implementing this on your site? Let me know in the comments!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Heads up: Unfortunately (although maybe for the best), Google is no longer going to show aggregate ratings in your snippets for LocalBusiness or Organization types (and their respective subtypes), regardless of how carefully you mark them up. In other words, this article is no longer useful. Sorry \ud83d\ude41 See here and here for more info!Review [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3482,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_seopress_robots_primary_cat":"none","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","footnotes":""},"categories":[1],"tags":[],"classification":[],"class_list":["post-3473","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"_links":{"self":[{"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/posts\/3473","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/comments?post=3473"}],"version-history":[{"count":2,"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/posts\/3473\/revisions"}],"predecessor-version":[{"id":5115,"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/posts\/3473\/revisions\/5115"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/media\/3482"}],"wp:attachment":[{"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/media?parent=3473"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/categories?post=3473"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/tags?post=3473"},{"taxonomy":"classification","embeddable":true,"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/classification?post=3473"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}