10 Common Schema Problems and How to Fix Them

10 Common Schema Problems and How to Fix Them

by Rob Newhouse
Analytics & Measurement Consultant

16 September 2016

We recently talked about rich snippets, aka structured data or schema.org, and how implementing them can benefit your website by attracting more visits.

Google’s documentation on how it uses schema has significantly improved over the years, but it still leaves many searching in the murky waters of micro-data for solid answers to some very common questions.

We know what it’s like to ask a fairly technical question and get a heap of industrial-strength jargon in return, only confusing us more. So we’ve scoured the internet’s forums and our own archive of client emails for the most commonly asked questions that leave people positively puzzled. Hopefully some of these answers will clear things up, bring you out of the murky waters and invite you into the cool shower of schema heaven.

Feel free to post your own schema woes in the comments and we’ll do our best to answer those too.

Note: any words or phrases written in italics refer to schema objects or properties. 

1. Should I use HTTP or HTTPS?

The first problem we often face is knowing how to reference the schema.org that we’re using. Is it http or https? Is it www or not?


Schema.org states that either http or https protocol is fine, however using “www” as a subdomain is wrong. Here’s an example in the code for the movie ‘Rogue One: A Star Wars Story’:

<div itemscope itemtype ="http://schema.org/Movie">
  <h1 itemprop="name"> Rogue One: A Star Wars Story</h1>
<span>Director: <span itemprop="director">Gareth Edwards</span></span>
<span itemprop="genre">Science fiction</span>
<a href="../movies/rogue-one-teaser.html" itemprop="trailer">Trailer</a>

Check that your slashes are in the right place and remember that the URLs (all properties) are case sensitive.

Check your mark-up against this list to make sure you’ve not made any typos: https://schema.org/docs/full.html 

2. If I use more than one date for my Article which one will Google pick?

There are several kinds of date mark-up available which can all apply to Articles but have different functions. The most common types are:

  • datePublished
  • dateModified

You can even use both of these but it’s important to understand how Google treats them.


Google will use the datePublished by default.

For most ‘static’ content this would be fine but, if you like to update your content with new and relevant information, sticking to this original date isn’t ideal. You could update a particular article over the course of a year and it would only show the original date in the SERPs.

Example mark-up on page:

<div itemprop="datePublished" content="2015-01-09">Published: 9th Jan 15</div>
<div itemprop="dateModified" content="2016-08-12">Updated: 12th Aug 16</div>

How to use dateModified

Google will prioritise the content that is present in the actual HTML of the page. To make sure your dateModified is used remove the original date from the page itself and display only the modified date. You can then use a meta tag to keep your datePublished in the code:

<meta itemprop="datePublished" content="2015-01-09">
<div itemprop="dateModified" content="2016-08-12">Updated: 12th Aug 16</div>

These methods give you a bit more flexibility when telling search engines about the timeliness of your article. 

3. Can I use more than one language?

Everyone has a preference for which language they use to mark-up structured data and so it’s common for different developers and SEOs to try to put JSON-LD, Microdata and RDF all on the same page. Is that ok?


This is a bad idea as we know search engine crawlers can’t handle it.

Stick to one language and if you’re using any plugins to implement your structured data it might be best to double check what language the plug-ins use as well.

4. What else can I do to help my local results?

In other words, “I’ve implemented NAP and my info isn’t displaying, what next?”


Your page will need some inherent authority for the rich snippets to appear. This mostly comes from external links and local citations, but there is more you could do to encourage your snippet to appear.

The Thing object (and all the types within it) in schema has a little known secret up its sleeve in the form of a property which can help to connect your web page to the local citations that contribute to your local SEO:

  • sameAs – URL of a reference web page that unambiguously indicates the item’s identity, e.g. the URL of the item’s Google Plus/My Business page, Yell listing, Wikipedia page, etc.

This is a good way to make explicit connections between your webpage and your citations and help search engines to understand them.

Example for marking up a local business:

<div itemscope itemtype=”http://schema.org/LocalBusiness”>
<span itemprop=”name”>Touch Point Digital Marketing Agency</span>
<link itemprop=”url” href=”http://www.touchpointdigitalmarketing.com/”>
<link itemprop=”sameAs” href=”https://plus.google.com/+TouchPointDigitalMarketingAgencyNewOrleans”>

5. Can I mark-up text that is hidden from the user?

More specifically, “The numerical rating isn’t part of my current design, can I mark up the number using micro-data and then hide it using CSS?”


This question gets asked frequently and we always refer back to Google’s quality guidelines which state:

Mark-up should not be used to hide content not visible to users in any form, since it might create a misleading or deceptive search experience. 

 This sentence isn’t Google’s best work, but in short the answer is no – Google will only display a rich snippet in the SERPs for marked up website content that is visible to the user.

6. Why does my aggregate rating not appear on our home page?

The rating snippet is by far the most desirable to have displayed in the SERPs whether you’re an ecommerce brand or providing a service. Just look at how bright and friendly and orange they are!

However, many websites have trouble displaying them in the SERPs. More often than not it’s the pages that they don’t target that end up with the review snippet, not the ones they intended, and no matter what they try it just ends in crushing defeat…

Well, much of this struggle comes down to the ranking strategy and understanding how the AggregateRating property should be used. It’s extremely difficult to use AggregateRating to display a rating for a category page or home page when based on a series of unrelated product reviews.

The ratings aggregated must apply to a single item and may appear as values for the following properties:

  • Brand (sounds perfect for your ‘adidas shoes’ category page, but actually intended for review websites and directories for reviews of a particular brand)
  • CreativeWork
  • Event
  • Offer
  • Organization
  • Place
  • Product (must be a single product)
  • Service (must be a single service)

This is the correct use for AggregateRating applied to a product page where reviews are present:

<div itemscope itemtype="http://schema.org/Product">
<img itemprop="image" src="dell-30in-lcd.jpg" alt="A Dell UltraSharp monitor"/>
<span itemprop="name">Dell UltraSharp 30" LCD Monitor</span>
<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
   <span itemprop="ratingValue">87</span>
   out of <span itemprop="bestRating">100</span>
   based on <span itemprop="ratingCount">24</span> user ratings

 All that said, you can get away with it sometimes. Though this page doesn’t perform particularly well in the SERPs, it has been granted the ratings rich snippet:

<div class="slp-review-header" itemscope="" itemtype="http://schema.org/AggregateRating">
<h2 itemprop="itemReviewed">Reviews for: Men Running Shoes</h2>
<div class="slp-review-header-in"><meta itemprop="ratingValue" content="4.7">
<meta itemprop="bestRating" content="5"><span class="outofviewport">5</span>
<div class="review-count"><span itemprop="reviewCount">24 reviews</span>

 7. My business has multiple locations; how should I handle this?

You might have multiple locations for your business tucked away neatly in your footer or on your contact page, but things can get messy when you start introducing structured data. Which address are the search engines going to use?


Optimising for multiple locations is a lot more straightforward than it seems. There are two main properties to be concerned with:

  • Organization
  • Location

Organization refers to ratings, contact details, logos and other company info, but location refers specifically to geographical locations. Here’s an example of how to correctly mark-up the addresses in that footer, all you have to do is mark up each address separately using a new itemprop for each location:

<div itemscope itemtype=”http://schema.org/Organization”>
<a itemprop=”url” href=”www.yourcompany.com”><div itemprop=”name”><strong>Your Company</strong></div>
<div itemprop=”description”>This is a description of our company</div>
<div itemprop=”address” itemscope itemtype=”http://schema.org/PostalAddress”>
<span itemprop=”streetAddress”>123 Easy Street</span><br>
<span itemprop=”addressLocality”>Flitwick</span><span itemprop=”addressRegion”>Bedfordshire</span><span itemprop=”postalCode”>MK45 1DP</span><br>
<span itemprop=”addressCountry”>England</span><br>
<div itemprop=”address” itemscope itemtype=”http://schema.org/PostalAddress”>
<span itemprop=”streetAddress”>12 The Other Street</span><br>
<span itemprop=”addressLocality”>~Atlanta</span><span itemprop=”addressRegion”>GA</span><span itemprop=”postalCode”>30302</span><br>
<span itemprop=”addressCountry”>United States</span>

Remember that sameAs property we mentioned earlier? You could also use multiple locations, referencing their corresponding Google+ profiles in the sameAs property to improve your local visibility and the accuracy of your local SEO.

8. None of the itemtypes apply to my business, what should I do?

There’s an array of different types of organisation or local business available, from AnimalShelter to DryCleaningOrLaundry, to RecyclingCenter. But not every business falls into one of the available categories. So, should you settle for a vague itemtype to describe your business?


The answer is no! We can actually use schema to tell Google what exactly your business is.

Your current NAP code probably starts out looking something like this:

<div itemscope itemtype=”http://schema.org/LocalBusiness“>

All we need to find is the right word to replace LocalBusiness.

First, use this spreadsheet on Google Drive to search for words that describe your business and see what the corresponding Schema /itemtype would be:

Grab the word that comes after the domain in the URL. That’s what you’ll want to replace LocalBusiness” within your code.

But if we are dermatologists and physician isn’t specific enough, we can use schema to tell Google exactly what we do. This should only take a few minutes and we need to introduce a supplementary schema, called www.productontology.org.  Just like the sameAs property we’ve discussed, productonology.org can be used to reference a Wikipedia page that describes what you do.

Step one:

Find the Wikipedia page that accurately describes what you do: http://en.wikipedia.org/wiki/Dermatology

Step two:

Now we have to turn it into a Productontology URL. Productonology URLs follow this structure:


Step three:

We take the last string in the Wiki URL, http://en.wikipedia.org/wiki/Dermatology and append it to the Productontology URL like this:


Step four:

Next, we have to add it to the mark-up. In order to do that we have to use the “additionalType” property. So, the mark-up for our dermatologists would look something like this:

<div itemscope itemtype=“http://schema.org/Physician”>
<link itemprop=”additionalType” href=“http://www.productontology.org/id/Dermatology” />
<span itemprop=”name”>Name of Clinic</span>
<div itemprop=”address” itemscope itemtype=“http://schema.org/PostalAddress”>
<span itemprop=”streetAddress”>5 Our Street</span>
<span itemprop=”addressLocality”>Atlanta</span>,
<span itemprop=”addressRegion”>GA</span>
<span itemprop=”postalCode”>12345</span>
<span itemprop=”telephone”>01234 567 891</span>

That’s all there is to it!

9. Can I use multiple itemprops in a single element?

Long version – “What’s the correct way of marking up a single element with multiple properties?”


One itemprop with values separated by a space, simple!

I am based in Tokyo

10. How do I check my schema mark-up is correct?


There are two ways you can check if your schema mark-up is working. One way is by accessing webmaster tools and going to the structured data report.

It will show you a breakdown of all the structured data on your site, as Google sees it, and alert you to anything it believes is an error.

This is great for keeping an eye on the overall health of your schema but, to check a specific page, Google also provides an online tool that allows you to paste your URL in and get instant feedback.

Get our news, insights & advice delivered to your inbox

Related articles

New Partnership with LiveScore Bet banner

Exciting New Partnership with LiveScore Bet

We are thrilled to announce an exciting new partnership with LiveScore Bet, a company that has the ambition of becoming a leader in the sports betting industry.

Read now


Four key takeaways from Google’s API leak

Four Key Takeaways from Google’s API Leak  This is for marketers focused on organic search This month an anonymous source shared thousands of leaked Google search documents. Our friends at SparkToro analysed all 2,500 pages. Our SEO team has pulled out the key lessons… 1. Brand is Paramount It’s no surprise to discover that Google […]

Read now

Kambi testimonial feature image

Case Study – Our Work With Kambi

Our Work With Kambi We partnered with Kambi to increase the number of high quality leads and registrations and enhance awareness for the festival of sportsbook event through paid media activity. The Client Kambi is the leading B2B sports betting platform provider of premium sports betting technology and services to the regulated global betting and […]

Read now

Contact us

Call us on 01525 715 520 or complete the form below, and one of the team will get back to you.