How to Manually Add Review Schema Markup to a Review Article

Last updated:

When you publish reviews of products on your website, it’s crucial to also include structured data markup along with the reviews.

Google will use that schema markup to reward you with the Review Snippet in the search results, which will greatly increase the CTR to your site.

You can either use a WordPress plugin to add that structured data to your content, or you can do it manually. This article explains the manual way, which is my preference.

Update October 2019:
The guidelines around the Review Schema type appear to have changed, causing product review articles on almost all websites to throw errors in the Structured Data Testing Tool.
I have updated this article with new Review Schema code that passes the test and doesn’t throw errors, but there are still warnings related to Product Schema type. Feel free to leave a comment, or email me directly, if you are still seeing errors.

Why Not Use a WordPress Plugin?

There are lots of plugins out there that can do this job for you, with very little hassle. But I personally prefer to do this manually.

Why add schema markup manually?

Here’s why:

1. Plugins Add Bloat and Risk

Okay, we all need and use plugins. I’m not a plugin hater. I use plugins too. But if I can avoid using a plugin for a specific task, then I will.

With each and every plugin you install, no matter how well-developed and lightweight they are, you are adding some level of bloat to your site. And not just that, you’re also adding risk.

Plugins are the number one reason why WordPress sites get hacked. Losers that hack sites are always looking for vulnerabilities in plugins to find back doors into your site.

This is why I will always say, the less plugins, the better.

2. HTML Issues

Plugins that generate a visual representation of the structured data markup often present this info in HTML that isn’t the cleanest, and often throws in header tags that break the page hierarchy.

I hear you say: “Dude, who cares?”

Well, I care, because I am super picky about the HTML that my content spits out. Some people are obsessed with Moz DA, others are obsessed with Google PSI, and I am obsessed with clean HTML.

I want to have clean HTML, to make it as easy as possible for the search engines to interpret my content. I also don’t want to break the H1/2/3/4/5 header tag hierarchy, because of that very same reason.

So if you prefer to use a plugin to generate and visually display Review Schema markup data, by all means, go ahead. Some plugins do the job really well, but I simply prefer to manage this manually.

How to Manually Add Review Structured Data

Follow these 3 simple steps to add Review structured data to your review blog posts.

Once you’ve successfully done this for one review article, it’s a rinse and repeat exercise for any new review articles you publish on your site.

I am using my GeneratePress review article as the example to explain the steps.

Step 1: Create a Simple HTML Table

Once you have completed your review article, manually add a simple HTML table that will include all the data that you want captured in the Structured Data markup output.

To keep things simple, create a table that includes the following:

  • The name of the product being reviewed
  • A short summary of the review
  • The author of the review
  • The rating of the product

Here’s a screenshot of the HTML that I have added to my review of GeneratePress:

Review Schema markup in table

I’ve also added some CSS styling to make the table look a bit prettier. As you can see, pretty basic stuff, but it looks nice and clean. At the end of the day, you’re free to make it look as fancy as you like, entirely up to you.

Note that the rating says “out of 5”. I do this on purpose because this is a required field in the Review Structured Data type and will ultimately be displayed in the SERPs.

The idea is, everything you include in your structured data markup, MUST be displayed somewhere in the content.

Step 2: Write Structured Data Code

The next step is to write a very simple piece of script that will add the Review data elements as Schema markup in the article.

The data elements in the Schema markup need to be the same as the data in the table you created in step 1.

For reference, check out Google’s documentation on the Review snippet with guidelines and several markup code examples.

It’s important to point out that if you violate any of their guidelines, you may end up with a manual penalty. There have been several cases of Review snippet abuse in the past, so make sure you don’t break any rules.

I am using the JSON-LD variant to write the Schema markup as opposed to Microdata, because JSON-LD is the preferred method.

Most WordPress themes will allow you to add script to Blog Posts. I am using the GeneratePress theme in my site, so I am using a Hook Element to insert script into my review post.

Here is a screenshot of that piece of script:

Review Schema markup JSON-LD script

As you can see, it’s not very complicated script at all. And I’ve formatted it such that it’s easy to copy and re-use for future review articles. Simply replace the values of the different data elements and you’re good to go.

Here is a copy/paste version of that same script:

<script type="application/ld+json">
{
  "@context":"http://schema.org",
  "@type": "Product",
  "name": "GeneratePress Premium",
  "review":
  {
    "@type":"Review",
    "reviewRating":
    {
      "@type":"Rating",
      "ratingValue":4.5,
      "bestRating":5
    },
    "author":
    {
      "@type":"Person",
      "name":"AJ Mens"
    },
    "reviewBody":"GeneratePress is a free WordPress theme plus..."
  }
}
</script>

Step 3: Validate the Schema Markup

It’s important to validate the structured data that you’ve just created, before publishing it as part of the review article.

Head over to the Google Structured Data Testing tool and submit the script that you created in the previous step. If there are no errors, it’s safe to publish.

Structured data testing tool results

You can also use the Google Rich Results Test tool.

It works in a similar way, but this tool also lets you see what the the structured data markup (provided it’s valid) would look like as rich results in the Google SERPs.

As mentioned above, the code still triggers warnings. Some of these warnings can be ironed out by including the missing fields. I will keep monitoring how the Review Schema type evolves, and make adjustments to the code where necessary.

Join Blog Pioneer

​JOIN BLOG PIONEER

​Subscribe now and learn how to grow your ​blog into a thriving business with effective SEO and monetization strategies.

​Bonus: My NR.1 trick to give your new blog post an immediate SEO boost!

The Results

To speed things up, I recommend you request a priority indexing of your review article in Google Search Console. This way you’ll see your Review Snippet appear sooner rather than later in Google’s search results.

If the item you’ve reviewed is a product, you will see it listed in Search Console under Enhancements – Products, like so:

Product review schema markup in Google Search Console

And this is what it looks like in the Google search results:

Review snippet in Google search results

Awesome!

Final Thoughts

Hopefully this article has motivated you to add structured data to your review articles. You’re selling yourself short if you don’t, as it’s becoming standard practice.

Whether you want to use a plugin to do this, or do it manually, that is of course entirely up to you. I prefer the manual way, which requires a bit more maintenance, but is the cleaner solution in my opinion.

Fun fact:
I’ve added HowTo Schema markup to this article. Manually, of course. Check it out in the Google Structured Data Testing tool!

Categories SEO
AJ Mens

I have been running an online business since 2015 and am using Blog Pioneer to help you achieve financial success online.

10 Comments
  1. Hi!

    I’m using GP and have some questions about implementing Schema Markup.
    I read in GP forum that GP adds basic Microdata by default, but you can turn it off with a PHP function.
    Do you did that before implementing the Review Schema Markup?
    If I’m talking nonsense, I apologize in advance. I just want to understand it (I’m very noob).

    Greetings from Ecuador!

    • Hey Ericka, good question.
      Yes I did turn off GP’s Schema, but only because the Schema that Yoast is outputting since their v11.0 is actually better.
      Hope this helps!

  2. Hi AJ,

    Thanks for a superb article.

    I would like to know whether we can add JSON-LD schema markup code to blog post in Thesis Framework and Effectus Skin. If the theme allows adding “script” to blog posts, can we add JSON-LD code without errors. BTW, how to display JSON-LD mark up code in the front end, in general.

  3. Unique post here explaining manual process for schema markup. I have not seen anything like this before and is as usual, high quality for explaining the process and reasons behind the method. Thank you AJ

  4. How did you turn the default generate press schema markup off manually?
    I am using rank math, it is also offering Schema markup, I want to turn off schema markup.

    And can you please guide me. I am getting an error in Schema testing tool.
    I was using other MyThemeShop theme earlier with Schema Pro plugin and Rich Snippets was coming in Google search, but suddenly after migrating to generate press, I am getting Error in google structured data testing tool:
    “Thing is not a known valid target type for the item reviewed property.”

    Please help.

  5. Hello AJ,

    First I was happy that I found the HTML code for Review articles here.
    But then I implemented on my review article and during the testing boom, I see ERROR:
    “One of offers or review or aggregateRating should be provided.”

    Actually when I tested this Structured Markup on your GeneratePress review article you got the same ERROR which should be visible also in your Search Console.

    Is there any fix for this?

    • Yes, you’re right Mario.
      It seems that the guidelines have changed this month, because that very same error is popping up on most sites that use the Review Schema type.
      This problem is on my todo-list to fix, so stay tuned.

      Edit: done!

Leave a Comment