What is schema?

Simply put, schema (Learn about Google’s review schema guidelines) is a way in which you can add “identifiers” to your content to let Google know about it so that they can add it to the structured data that they index from your page.

While Google generally crawls your page and it’s content, they may have a tough time getting data about – where you’re located, how many reviews you have, who you are – schema helps us tell the search engine where this information is.

Why should you be investing time in schema?

Though there is no conclusive evidence to support that adding schema improves ranking results, except maybe author markup and author rank.

But, it’s easy to get your schema markup done, and at the least:

  • You stand out in the SERPs with rich snippets for author and review schema markups.
  • Third party applications other than Google, Bing etc., can pull your data in structured format if you follow schema.org’s markup conventions
  • Over time, as more data needs to be ingested into applications and platforms, schema markup data will very easily be integrated and business’ that have it done stand to benefit

How does schema work?

Schema typically works based on identifiers; you tell the crawler what your data is about by adding a specific markup and they classify it accordingly.

There are different types of schema, including event, organization, localbusiness, person etc.,

You begin each block by mentioning what your schema is about – is it about a place? is it about a person? or, is it about an event? For all practical purposes, we’ll only be using the Person, Place, LocalBusiness, Product, Offer and HReview schema markup methods.

Once you tell the search engine what schema type you’re referencing, you talk about the different elements and attributes that you’re displaying.

For instance, here’s a schema for LocalBusiness:

<!-- start the localbusiness schema object -->
<div itemscope itemtype="http://schema.org/LocalBusiness">
	<!-- mark up the business name with the itemprop name attribute -->
	<span itemprop="name">Beachwalk Beachwear & Giftware</span>
	<!-- mark up the description for the business -->
	<span itemprop="description"> A superb collection of fine gifts and clothing to accent your stay in Mexico Beach.</span>
	<!-- start the address schema object -->
	<div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
	<!-- street address marked up -->
	<span itemprop="streetAddress">3102 Highway 98</span>
	<!-- city marked up -->
	<span itemprop="addressLocality">Mexico Beach</span>
	<!-- state marked up -->
	<span itemprop="addressRegion">FL</span>
	<!-- end postaladdress schema object -->
	</div>
	<!-- telephone marked up -->
	Phone: <span itemprop="telephone">850-648-4200</span>
	<!-- end localbusiness object -->
</div>

Once you’ve described this information, the search engine will automatically pick it up and classify your website accordingly.

Before you get started – checking your webpage for existing schema

Though there are a ton of tools out there that will help you identify whether you have schema markup on your website, I generally prefer using Google’s Structured Data Testing Tool for this.

What Google’s tool does for you is:

  • It automatically finds out if you have schema present on your webpage
  • It tells you if you’re missing portions of schema and whether Google found any errors in your schema markup

You can also check your site for schema page-wise with the Schema Scanner. It tells you which pages have missing or incorrect schema markup.

Identifying whether you have structured markup in your website:

The process of first identifying to see if you already have marked up data in your website is simple. As soon as you enter your webpage URL, you should see a tab like this giving you information about structured data if you have marked up data.

As you can see, Google uses schema.org’s markup format to find structured data.

The tool will also automatically tell you if it found any errors:

As you can see from the screenshot above, Google did find a ton of errors with the page that I asked it to analyze.

If you have existing schema markup with errors, I’d strongly suggest you either:

  • Kill all of that data and start from scratch if you have the time and resources at your disposal
  • Fix your existing schema and then look at marking up additional data.

Types of schema and getting them set up on your local business website

Now that you understand how schema works, it’s time to introduce you to the different types of schema and help you understand how to implement each of them.

Before you read on, please remember that what we’re discussing in this guide is simply “local” specific schema, and not all of them may be relevant for your business.

Core Business Information (Name, Address & Phone)

The first, most important piece of data you need to mark up is your core business data and information including:

  • Business Name
  • Business Address
  • Business Phone
  • Business Lat / Long
  • Business Logo
  • Business Description

Thankfully, you can add all of this data just using the “LocalBusiness” schema-type. Though you can also use the “Place” or “Business” types, I’d suggest you stick to LocalBusiness.

The only piece of data that you may have trouble finding is the latitude and longitude of your business, and an easy way to find lat/long is by adding your address on the latitude longitude finder tool.

Now, let’s get to the actual process of adding your data in properly marked up format:

<!-- Start by initiating the schema type -->
<div itemscope itemtype="http://schema.org/LocalBusiness"> 
<!-- Add the identifier for business name -->
<span itemprop="name">{Your Business Name Here}</span>
<!-- Add the identifier for business description -->
<span itemprop=”description”>{Your description here}</span>
<!-- Initiate the address sub-type -->
<div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<!-- Add street address -->
<span itemprop="streetAddress">{Your street address here}</span>
<!-- Add city -->
<span itemprop="addressLocality">{Your city here}</span>,
<!-- Add state and zip -->
<span itemprop="addressRegion">{Your state here}</span> <span itemprop="postalCode">{Your zip here}</span>
<!-- End address sub-type -->
</div>
<!-- Add the lat/long geo sub-type -->
<div itemprop="geo" itemscope itemtype="http://schema.org/GeoCoordinates">
<!-- Add Latitude -->
<meta itemprop="latitude" content="{Your Latitude here}" />
<!-- Add Longitude -->
<meta itemprop="longitude" content="{Your Longitude here}" />
<!-- End sub schema block -->
</div>
<!-- Add phone -->
<span itemprop="telephone">{Your telephone here}</span>
<!-- End schema block -->
</div>

While constructing the schema, you would have noticed that we had to split the address into three components – street address, city, state and postal code. This is the way in which schema.org needs you to archive the data.

Author Markup

Author mark up is not just important because it gives Google more data, but because a large part of the algorithm seems to be headed towards a point where author rank plays a very large factor in how well your pages rank in the search engines.

There are two ways in which you can enable schema authorship for your websites.

This is the easiest way to get your author data marked up, and it involves linking out to your Google+ profile from within your page to tell them who you are.

The process of doing this is as simple as adding this link anywhere in your page and replacing {google_url} with your Google+ profile URL:

<a href="[google_url]?rel=author">Google</a>
TIP: Read The Ultimate Guide To Google Authorship Markup for more useful info.

Second method – Use schema.org format to reference author information

If you don’t have a Google+ profile or for some reason don’t want to link to your G+ profile from your website, there is another way in which you can add author information as structured. This method isn’t as effective as including your Google+ profile URL, but is still better than having no author markup.

The code you’d have to insert in your page would be:

<!-- Initiate person schema -->
<div itemscope itemtype="http://schema.org/Person">
<!-- Add Author name -->
<span itemprop="name">Jane Doe</span>
<!-- Add Author image -->
<img src="janedoe.jpg" itemprop="image" />
<!-- Add your job title -->
<span itemprop="jobTitle">Professor</span>
<!-- Add your email (optional) -->
<a href="mailto:jane-doe@xyz.edu" itemprop="email">jane-doe@xyz.edu</a>

Review Markup

Adding your reviews in schema markup format allows you to display rich snippets that include both aggregate review rating as well as review count in the search engine result pages.

To markup this data, you’ll have to use two different schema objects – “aggregaterating” and “review”.

The aggregaterating method references your overall rating scores – including average rating across all reviews and total number of reviews. The review object references your actual review text and content.

Let’s look at an example:

<!-- Initiate the aggregaterating block -->
<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
<!-- Include average rating and total reviews -->
Rated <span itemprop="ratingValue">{insert average rating}</span>/5 based on <span itemprop="reviewCount">{insert review count}</span> customer reviews
<!-- End aggregaterating block -->
</div>
<!-- Start review block -->
<div itemprop="review" itemscope itemtype="http://schema.org/Review">
<!-- Include review title and author -->
<span itemprop="name">Not a happy camper</span> - by <span itemprop="author">Ellie</span>, 
<!-- Include review date -->
<meta itemprop="datePublished" content="2011-04-01">April 1, 2011
<!-- Start reviewrating object -->
<div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">
<!-- Add worstrating (usually 1) -->
<meta itemprop="worstRating" content = "1">
<!-- Add review’s actual rating and best rating (usually 5) -->
<span itemprop="ratingValue">5</span>/<span itemprop="bestRating">5</span>stars
<!-- End reviewrating object -->
</div>
<!-- Add review text / description -->
<span itemprop="description">{Actual review text}</span>
<!-- End review object -->
</div>

To include more reviews, you’ll just need to initiate a new “review” block with another review.

TIP: Mark up your testimonials page to make the whole experience seamless. And, add hidden schema on all of your other pages so that the rich snippets show up for all the pages on your website.

Products Markup

Do you have products or services that you offer? It’s a good idea to mark them up so that search engines can discover them.

Add the product schema object:

<!-- Initiate the block -->
<div itemscope itemtype="http://schema.org/Product">
<!-- Add product name -->
<span itemprop="name">{Name}</span>
<!-- Add product image -->
<img src="image.jpg" alt=’{alt text}’ />
<!-- End product block -->
</div>

Within the product schema object, you can reference the different services you offer, if you don’t sell specific products.

Offers Markup

The offers schema markup object hasn’t been used as effectively as other types of micro-data, but is still useful to have on your website.

You can use it to mark-up the prices for your different services and products. This isn’t the same as a “coupon”, and is simply an indicative price of services.

The object can be used as:

<!-- Initiate the object -->
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<!-- Add price -->
<span itemprop="price">$55.00</span>
<!-- Add availability -->
<link itemprop="availability" href="http://schema.org/InStock" />In stock
</div>

How does schema-ed content display to regular users?

Schema marked up content displays the same way other content in your website displays. What you’re simply doing is adding tags to your content that will not be visible to your users.

Displaying “invisible” schema

Sometimes, you’ll want to markup content, but not want to display it on the page. For example, you may want to display aggregaterating across all pages on your site without displaying it to users.

You can do this by adding the text within “content” and not making it part of the indexable content.

So, the aggregaterating block that is typically this:

<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
Rated <span itemprop="ratingValue">{insert average rating}</span>/5 based on <span itemprop="reviewCount">{insert review count}</span> customer reviews
</div>

Will be modified to this:

<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
Rated <span itemprop="ratingValue" content=”{insert average rating}”></span>
<span itemprop="reviewCount" content=”{insert review count}”></span></div>

As you can see from the two examples, the content which is within span and /span is instead adding to a new attribute called content.

Understanding how schema is associated with a page

Before finishing this guide, it’s important for us to understand how structured data is associated with a page. Schema that you add in a page is only associated with that particular page and not with your whole website.

For example, if you add your address as schema on your contact page, Google will only associate that data with your contact page and not with any other page in your website. Similarly for reviews, if they are referenced only in your testimonials page, users will only see rich snippets for the testimonials and not for any other page on your website.

In this scenario, it may be best to include your aggregaterating and author markup across all pages within your website. You can do this by including it in a common footer or header as an invisible schema block.

Tools & Additional Reading Material

Related Posts