How to build your own Event Snippet with data from the Event Calendar Plugin

The Events Calendar Plugin is a very popular plugin when it comes to create event pages on your WordPress site. It also outputs schema.org data on the frontend (that is not visible to the end user). However in the past the developers did not update their code according to the search engines needs.

Why should you create your own Event snippet

Theme and plugin authors in the past did not react fast enough to the changes Google and other search engines want to see. In this particular example, The Events Calendar plugin did not integrate the performer property for the Event. This leads to an error in Googles Rich Snippet Test Tool:

Googles Test Tool shows a performer error on Event schema
The Event schema has a missing field: the performer

This problem leads to the fact that the Rich Snippet for the Event does not appear in search results.

How to create your own snippet

Instead of waiting when the developers integrate this missing property you can easily create your own with my Rich Snippets WordPress Plugin (SNIP).

Step 1: Deactivate snippets from the Events Calendar plugin

First of all, you need to deactivate the snippets that are created from the Events Calendar plugin. Otherwise this will lead to two snippets on the same page. To avoid that, please follow the instructions found here: How to deactivate JSON+LD schema output of “The Events Calendar” plugin.

Step 2: Create your own global snippet with SNIP

If you’re new to SNIP, please to to the Start here page in order to learn how to create Global Snippets.

Further readings in this step:

  1. What are Global Snippets?
  2. Can I create structured data automatically from post content?
  3. How to add Rich Snippets to a blog post

If you have created your own Global Snippet, click on the “Event” button on top of the page. This will load some predefined properties for you. However you can always add more (what we’ll do later on):

Step 3: Check what properties should be added

Now take a look at the property list that Google wants to see. Some of them are marked as required, so you need to integrate them. As of writing this post, these are.

  • location
  • location.address
  • location.name
  • startDate

Others are recommended. That means you don’t need to integrate them but you should. My experience showed me that you should integrate all the properties that you can possibly fill with meaningful content.

So please take a look at the official Event property list over at schema.org to check what properties are possible.

Step 3: Add properties to the Event schema

Now add your properties step-by-step and fill them with content. We’ll start with the startDate property:

  1. Click on “Edit”
  2. Select “Postmeta” from the drop down list
  3. Enter “_EventStartDate” into the textarea.
startDate property with content from a postmeta field
Add content from a postmeta field

That’s it for the startDate property.

Now you can go on with all the other properties you want to add. Here are the fields, that the Event Calendar plugin saves to the postmeta database table that can be used out of the box:

  • _EventStartDate
  • _EventEndDate
  • _EventStartDateUTC
  • _EventEndDateUTC
  • _EventDuration
  • _EventCurrencySymbol
  • _EventCost
  • _EventURL
  • _EventTimezone
  • _EventTimezoneAbbr

For the following fields, The Event Calendar only saves a link to another blog post and cannot be used out of the box:

  • _EventVenueID
  • _EventOrganizerID

For example, to add the location.address and location.name properties you need to integrate your own PHP logic as it is not possible to add this data with SNIP for now.