How to Improve SEO for Events with Structured Data

What’s the secret to getting your events to show up in search results? For the most part, it’s the same SEO principles that apply to your website. There’s no substitute for good content, using semantic markup in your code, and remembering to do the small things, like adding alt text to non-decorative images.

But you can also go beyond traditional SEO best practices to optimize your events to appear in search results. One way to do this is with structured data. Below, we’ll walk through what structured data is, how it works, and how you can use it on your own calendar.

Structured huh?

Structured data is metadata that helps search engines interpret the content on your site. In most cases, that refers to the code language, or syntax, that is being used to structure the data. In the case of websites — and, by extension, online calendars — that specifically refers to schemas.

Schemas are the code formatting options for structured data. There’s an entire community over at Schema.org that consists of search and tech giants like Google, Microsoft, Yahoo and Yandex. This team manages and maintains schema standards to develop standards and best practices.

I know, I know. That’s a lot of tech jargon already. At the end of the day, this is all you need to know:

Structured data provides search engines with additional information about your content.

That’s the reason it’s such a big deal. Search engines like Google even use it to improve search results in the form of rich snippets.

You’ve probably interacted with rich snippets, even if you didn’t realize it. You know how a typical search produces a giant list of results?

A standard search results page for why WordPress is awesome.

Rich snippets take extra information from schema to provide more interesting results. Look at what we get when searching for a yummy recipe:

Showing search results for spicy guacamole recipes where a row of three recipes from different sites is at the top of the list.
Holy guacamole, check out those recipes right at the top! 🥑

That’s what we mean when talking about rich snippets. They’re the little modules that are located toward the top of search results. They’re more engaging, and when you know how to leverage structured data, they give us opportunities to surface our content in new ways!

Using structured data on your website calendar

Plugins can do a lot of the heavy lifting to optimize structured data for events on your WordPress site.

The ideal route is to use a calendar plugin that supports JSON-LD for structured data right out of the gate, like The Events Calendar plugin. (Wondering what the heck JSON-LD is? Check out the additional info and resources at the bottom of this post!)

Not only does The Events Calendar integrate JSON-LD into each event, but it does so automatically. It’s baked into the product without any configuration, coding, or management required.

Here’s the JSON-LD that’s injected into an event pulled straight off of our demo calendar.

Showing a browser window with DevTools open where the event is shown on the left and the JSON-LD code is highlighted in orange on the right.
That’s right, publish an event then pour a drink as you kick back and let the JSON-LD goodness do its thing.

You can also use plugins like Yoast SEO, Schema, All in One Schema Rich Snippets, WP SEO Structured Data Schema, and WPSSO Add-on.

If you’re going to use one of those plugins, consider creating a custom post type specifically for events. That way, events stay separated from other types of posts, like your blog. WordPress has a ton of documentation on creating custom post types, and there are plugins that can help as well.

A few gotchas to watch for

Before you jump straight into the structured data waters, there are some things you’ll want to consider.

Is one of your installed plugins already handling structured data?

First off, you’ll want to see which plugins are currently installed on your WordPress site. Some of them may already be handling schema for you! It’s not always obvious, though. For example, W3 Total Cache is billed as a plugin that optimizes the performance of a WordPress site, but it is also capable of handling structured data. After all, performance is a metric used in search results.

Are there two plugins battling it out?

This is a common issue. If two plugins are attempting to handle structured data on your site, chances are they’ll conflict with one another and you’ll wind up with no structured data at all.

For example, The Events Calendar already accounts for structured data on event posts. But if you have Yoast SEO, that plugin might be trying to do the same. Thankfully, there’s a solution that ties the two together for optimal performance! 💪

How are you handling recurring events?

A recurring event is an event that repeats. It can be occur daily, weekly, monthly, annually, or whenever. The way these events are created impacts how they are parsed by search engines. The key is making sure that there is a way to distinguish one event in the series from another. If you use The Events Calendar, that’s already taken care of. The plugin ensures each event page has a unique and canonical URL.

Is this an in-person or virtual event?

Virtual events are all the rage right now, and for good reason. That said, it’s important to indicate if your event is virtual because search engines can distinguish between in-person and online events. Check out The Event Calendar’s Virtual Events add-on, which is not only indicates which events are virtual, but also offers features that are specific to virtual events, like Zoom integration.

Has the status of the event changed?

If so, that can be indicated in JSON-LD. This is useful for search engines showing the event status in search results.

Guess I’ll just have to catch you on the next tour, Tay.

Again, the Virtual Events add-on for The Events Calendar has this feature covered. Even so, it’s also a good idea to inform search engines of the change. Submitting an updated sitemap is a good way to handle this when events are canceled or postponed.

A deeper dive: Schemas 101

Now that we’ve covered the nitty gritty of how to use structured data, here’s additional info about schemas for those who are wondering how it works behind the scenes.

You’ve probably heard of code languages like HTML, CSS, and JavaScript. Well, schemas are different types of languages that can be used to structure data. There are lots of languages included, but the three most common ones are:

  • JSON-LD
  • Microdata
  • RDFa

In this post, we didn’t look at Microdata or RDFa. These two languages are both injected directly into a site’s HTML. Here’s just a snippet of what’s documented on Schema.org:

<div itemscope itemtype="http://schema.org/Product">
  <span itemprop="name">Kenmore White 17" Microwave</span>
  <span itemprop="priceCurrency" content="USD">$</span
  <span>itemprop="price" content="1000.00">1,000.00</span>
  <link itemprop="availability" href="http://schema.org/InStock" />In stock
</div>

As you can see, this can make HTML a little bloated and tough to read.

That’s why decided to focus on JSON-LD instead. It’s often nested inside a <script> tag somewhere on the page in a single block. This way, it doesn’t interfere with the HTML:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Product",
  "name": "Kenmore White 17\" Microwave",
  "offers": {
    "@type": "Offer",
    "availability": "http://schema.org/InStock",
    "price": "55.00",
    "priceCurrency": "USD"
  }
}
</script>

Much easier to read! And, JSON-LD is actively developed — and preferred — by Google.

How does schema relate to calendars and events?

Events are actually a schema property, just like the product and recipe examples we just saw. And there’s a lot of information we can pack into JSON-LD for search engines to include in their rich snippets. Here’s just a few:

  • about: the event description
  • actor: people associated with the production of the event, if there are actors in the event
  • audience: the intended type of people who would attend the event
  • duration: how long the event will run
  • endDate: the day and time that the event is scheduled to end
  • eventStatus: used to indicate an event that is canceled or rescheduled
  • location: where the event takes place, which can be a place, address, or even a virtual location
  • organizer: the organization or person running the event
  • startDate: the day and time the event is scheduled to start

There are even different types of events, like BusinessEvent, ComedyEvent. ExhibitionEvent, Festival, MusicEvent, SocialEvent, SportsEvent and TheaterEvent, among many others.

Check out the Event type documentation for a full rundown of properties and types.

Wrapping up

Hopefully all of this gives you a better idea of what structured data is, how it’s used by search engines, and how you can use it with your WordPress calendar. While some plugins, like The Events Calendar, can be a one-stop solution for improving event SEO, there are indeed lots of additional plugins that can help.