Proposal: Event Schema for WordCamp.org

We have taken some great steps in improving the SEO of WordCampWordCamp WordCamps are casual, locally-organized conferences covering everything related to WordPress. They're one of the places where the WordPress community comes together to teach one another what they’ve learned throughout the year and share the joy. Learn more. sites by rearranging the URL structure. I think the next step should be outputting Event Schema, to allow WordCamp sites to get rich event snippets. Wordcamp.org should output event schema on event homepages as well as on the individual WordCamp centralWordCamp Central Website for all WordCamp activities globally. https://central.wordcamp.org includes a list of upcoming and past camp with links to each. event page.

What is “event schema”?

Event schema is metaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. data, in JSONJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML.+LD format, that tells Google, and other search engines and platforms, about our events. It gives them the most important event details in computer readable format, so they can use that when they highlight an event.

Schema examples

Below are the examples for event schema that should be shown on the WordCamp.org event homepage. When adding this Event schema to WordCamp Central (here, for example) we should add a url attribute at the top level, pointing to the WordCamp homepage URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org.

Note that this event schema can be left on the page after the event is done. The event schema can also stay on the previous homepage, so a 2019 version of a WordCamp could still have the 2019 schema.

Schema for online events

{
  "@context": "https://schema.org",
  "@type": "Event",
  "organizer": {
    "@type": "Organization",
    "name": "WordCamp Finland 2020 organizing team",
    "url": "https://finland.wordcamp.org/2020/about/organizers/"
  },  
  "name": "WordCamp Finland 2020",
  "description": "Join the Finnish, Nordic and European WordPress Community for a full day of learning, sharing and fun!",
  "image": "https://finland.wordcamp.org/2020/files/2020/09/wpfi2020-logo-black.png",
  "startDate": "2020-11-12T12:00+02:00",
  "endDate": "2020-11-12T17:00+02:00",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
  "location": {
    "@type": "VirtualLocation",
    "url": "https://example.com/"
  },
  "offers": {
    "@type": "Offer",
    "name": "Free ticket",
    "price": "0",
    "priceCurrency": "EUR",
    "validFrom": "2020-10-27",
    "url": "https://finland.wordcamp.org/2020/tickets/",
    "availability": "https://schema.org/InStock"
  }
}

Schema for offline events

{
  "@context": "https://schema.org",
  "@type": "Event",
  "organizer": {
    "@type": "Organization",
    "name": "WordCamp Alaska 2020 organizing team",
    "url": "https://alaska.wordcamp.org/2020/about/organizers/"
  },  
  "name": "WordCamp Alaska 2020",
  "description": "Join the Alaskan WordPress Community for a full day of learning, sharing and fun!",
  "image": "https://alaska.wordcamp.org/2020/files/2020/09/wp-alaska-2020-logo-black.png",
  "startDate": "2020-11-12T12:00+02:00",
  "endDate": "2020-11-12T17:00+02:00",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "location": {     
    "@type": "Place",
    "name": "Our WordCamp venue",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "Address line 1",
      "addressLocality": "City",
      "addressRegion": "AK",
      "postalCode": "12345",
      "addressCountry": "US"
    }
  },
  "offers": {
    "@type": "Offer",
    "name": "Regular ticket",
    "price": "25",
    "priceCurrency": "EUR",
    "validFrom": "2020-10-27",
    "url": "https://alaska.wordcamp.org/2020/tickets/",
    "availability": "https://schema.org/InStock"
  }
}

Schema for cancelled events

{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "WordCamp Finland 2020",
  "description": "Join the Finnish, Nordic and European WordPress Community for a full day of learning, sharing and fun!",
  "image": "https://finland.wordcamp.org/2020/files/2020/09/wpfi2020-logo-black.png",
  "startDate": "2020-11-12T12:00+02:00",
  "endDate": "2020-11-12T17:00+02:00",
  "eventStatus": "https://schema.org/EventCancelled",
  "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
  "location": {
    "@type": "VirtualLocation",
    "url": "https://example.com/"
  },
  "organizer": {
    "@type": "Organization",
    "name": "WordCamp Finland 2020 organizing team",
    "url": "https://finland.wordcamp.org/2020/about/organizers/"
  },  
  "offers": {
    "@type": "Offer",
    "name": "Free ticket",
    "price": "0",
    "priceCurrency": "EUR",
    "validFrom": "2020-10-27",
    "url": "https://finland.wordcamp.org/2020/tickets/",
    "availability": "https://schema.org/InStock"
  }
}

UIUI UI is an acronym for User Interface - the layout of the page the user interacts with. Think ‘how are they doing that’ and less about what they are doing. controls

A lot of this data comes from existing fields / settings in the system. I think these are the ones that we might need to be able to change manually:

Decisions still left to make

  • Should the organization bit refer to the organizing team or to the WordCamp foundation or something else?

Thanks to @francina, @sippis and @jonoaldersonwp for providing early feedback on this idea.