Today, we're going to talk about Microformats, a simple set of extensions to HTML, allowing us to add meaning to certain types of data found in our web pages. As SEOs, Microformats provide us with a wonderful toolbox to enhance our Google search snippets, particularly if you own a site with reviews, recipes, contact details or location data.

In this post we’ll talk about Microformat standards available to webmasters that have events listings data on their websites. Think conferences, festivals, theatre, even opera – they’re all events that can be described with components of the hCalendar Microformat.

What does an Events Based Rich Snippet Look Like?

This result, for "photography exhibitions London" shows an enhanced, hCalendar based rich snippet: An example hEvent rich snippet

The example ranking is taken from a site that lists things to do in London, and you can see that the events featured on the listings page have been pulled through into Google's (UK) SERPS.

What is the hCalendar Microformat? [Definition]

Brace yourselves for a mildly techie, but perfectly worded definition, courtesy of Microformats.org:

hCalendar is a simple, open, distributed calendaring and events format, using a 1:1 representation of standard iCalendar (RFC2445) VEVENT properties and values in semantic HTML or XHTML. hCalendar is one of several open microformat standards suitable for embedding in HTML, XHTML, Atom, RSS, and arbitrary XML. https://microformats.org/wiki/hcalendar

What Properties Should I be Interested in?

Google looks out for the following elements of the hCalendar Microformat in your web page mark-up. Not all of the elements listed are actually required, but if you have the data it's probably worth implementing as fully and correctly as you can. Here, Google break down exactly what they're watching out for:

Property Description
summary Required. The name of the event.
url Link to the event details page.
location The location or venue of the event. Can optionally be represented by nested organisation data, or nested Address data. Recommended (unless the page containing the markup is a page about the venue, and the location is the same for every event.)
description A description of the event.
startDate (dtstart) Required. The starting date and time of the event in ISO date format.
endDate (dtend) The ending date and time of the event in ISO date format.
duration The duration of the event in ISO duration format.
eventType (category) The category of the event, such as "Festival", "Concert", "Lecture".
geo Specifies the geographical coordinates of the location. Includes two elements: latitude and longitude. Optional.
photo A link to a photo or image related to the event.

A Before and After Example of an Event Implementation

On Saturday a few of us went to the Wireless festival to have a day in the sun with music and (of course) a few beers. Let's say you're describing that event listing on your website.

Your HTML might look a little like this:

<div>
<a href="https://www.wirelessfestival.co.uk/lineup/">Wireless 2010</a>
<img src="wireless.jpg" />World class acts playing across four stages -
but Wireless is about so much more than just amazing music...
When: Saturday 3rd July, 12:00pm - 11:00pm
Where: Hyde Park, London
Category: Concert
<div>

 

Now let's take a look at that same event, marked-up with our hCalendar elements:

<div class=”vevent”>
<a href=”https://www.wireless.co.uk/” class=”url summary”>Wireless 2010</a>
<img src=”wireless.jpg” class=”photo” />
<span class=”description”>World class acts playing across four stages -
but Wireless is about so much more than just amazing music</span>
When:
<span class="dtstart">
July 3rd, 2:00PM<span class="value-title" title="2010-07-03T1200Z00"></span>
</span>-
<span class="dtend">
~11:00PM<span class="value-title" title="2010-07-03T2300Z00"></span>
</span>
Where:
<div class="location vcard">
<span class="fn org">Hyde Park</span>,
<span class="adr">
<span class="street-address">Hyde Park</span>,
<span class="locality">Paddington</span>,
<span class="region">London</span>
</span>
<span class="geo">
<span class="latitude">
<span class="value-title" title="51.50716" ></span>
</span>
<span class="longitude">
<span class="value-title" title="-0.17066"></span>
</span>
</span>
</div>
Category: <span class="category">Concert</span>
</div>

This is usually a simple implementation, with only a few changes to the CSS stylesheet required. Have a chat with your web developer to get an idea of how much work it is to implement.

Testing and Go Live

Implementing Microformats can be reasonably easy, provided you already have the event data available on your site. To make using Microformats just a little easier, Google has provided a rich snippets testing tool to help make sure your mark-up is correct.

To get your rich snippets working in Google's results pages though, takes time and patience. Google are reviewing sites on a case by case basis, so the next step is to fill out this form and wait. Patience is a virtue though, and Google takes the semantic web and structured data very seriously. According to this write up of the Semantic Technology Conference in San Francisco, rich snippets are now available in 40 languages, and enhanced snippet impressions have grown four fold globally since October 2009. Google are planning more support for more formats, such as video, local businesses and shopping in the near future. How exciting!

If you'd like to learn more about Microformats, Joost De Valk has an excellent tutorial on implementing hReview in Wordpress. If you've got a spare 45 minutes or so, Joost and I recently discussed Microformats and their impact on SEO with Bas van den Beld on the State of Search show on WebmasterRadio.fm. Enjoy, and thanks for listening!