How to get your events into Google with event markup
Give each public, in-person event its own page, then add Event markup with the name, start date and the venue's address, plus recommended details like end time, description, image, ticket link and status. Since June 2025 Google's event feature covers only events at a physical location that the general public can book.
The short version
- One page per event, with that event’s markup on it.
- Required:
name,startDate,location(a Place) and the location’saddress. - Only public, in-person events qualify. Online-only events no longer do.
- Mark cancelled or postponed events with
eventStatusinstead of deleting them. - Event results are available in a limited set of countries, including the US.
How do I add event markup?
- Check the event qualifies. Google’s event guide says events must take place at a physical location and be bookable by the general public. Members-only or invitation-only events don’t qualify, and nor do student events on school grounds with minor participants.
- Give it its own page. Each event needs a unique URL. A calendar page that lists many events isn’t the target for this feature.
- Fill in the required properties:
name,startDate,locationwith@type: Place, andlocation.addressas a PostalAddress. - Add the recommended ones you can:
endDate,description,image,eventStatus,organizer,performer,location.name, andofferswith the ticket link, price, currency and availability. - Use proper dates. Include the time zone offset when you know the time. If the time isn’t set or it’s all day, give just the date. Don’t use a placeholder midnight.
- Test it in the Rich Results Test before and after publishing. See how to test your schema.
An example for a free workshop. The venue, its address and the event are all invented for illustration; use your own real venue.
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Example: Website basics workshop",
"startDate": "2026-12-03T18:00-05:00",
"endDate": "2026-12-03T19:30-05:00",
"eventStatus": "https://schema.org/EventScheduled",
"location": {
"@type": "Place",
"name": "Example Community Hall",
"address": {
"@type": "PostalAddress",
"streetAddress": "100 Example St",
"addressLocality": "Exampletown",
"addressRegion": "PA",
"postalCode": "00000",
"addressCountry": "US"
}
},
"organizer": { "@type": "Organization", "name": "E-3 Design", "url": "https://e-3design.com/" },
"description": "A free evening session on keeping a small-business website current.",
"offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD", "availability": "https://schema.org/InStock", "url": "https://e-3design.com/" }
}
On WordPress, most events calendar plugins output Event markup for each event page. Check what yours produces before adding more; see adding schema in WordPress. Our help article on updating your events calendar covers the day-to-day side.
What changed for events?
Google’s documentation updates record that on June 5, 2025, Google changed the event guide so events must be “bookable by the general public and held at a physical location,” and removed the properties for online events. Many older tutorials still show VirtualLocation and online attendance. Those no longer lead to Google’s event feature.
Google lists the feature as available in Australia, Brazil, Canada, Germany, India, Latin America, Spain, the UK and the US, in the languages it names for each.
Why use event markup?
People search for things to do: “craft fair this weekend,” “live music Somerset.” Event results can show your date, place and ticket link before anyone clicks, which suits community groups, venues, workshops and seasonal businesses. The same labeled facts help other tools read your event correctly.
What are the common mistakes?
- Marking up things that aren’t events. Google says not to mark up travel packages, business hours, coupons or vouchers, or short sales and “buy now” promotions as events.
- One page for a whole season of separate shows. Google says performances on different days with their own tickets should each be their own Event.
- Wrong or missing time zone, so the time shows hours off.
- Leaving a changed event marked as scheduled. Google’s event guide gives a status for each case:
- Cancelled: set
eventStatusto EventCancelled and keep the originalstartDate. - Postponed, new date not known yet: set EventPostponed and keep the original
startDateuntil you know the new one. - Rescheduled to a known date: set EventRescheduled, put the new date in
startDate(andendDate), and you can put the old date inpreviousStartDate. Don’t leave a new date under EventPostponed.
- Cancelled: set
- Markup that disagrees with the page, such as a different date or venue. Google’s general guidelines say markup must represent the page truthfully.
What if my event doesn’t show?
Valid markup makes an event eligible, not guaranteed. Check that the page is indexed, the event is public and in-person, and the Rich Results Test shows “Events” with no errors. In Search Console, the Events report lists problems across your site. Give Google time to recrawl after changes.
How much does it cost, and how long does it take?
The markup and Google’s testing tools are free; some calendar plugins are paid. With a calendar plugin it’s automatic once set up. By hand, each event needs its own markup and a test; how long that takes depends on your site and how complete the event details are.
How does E-3 handle this?
Event markup sits within our SEO and AI search service. The first step is checking what the client’s calendar plugin already outputs, and site changes are tested on a staging copy first.
Related questions
Next step
- Next: Is FAQ markup still worth adding?The next guide in Schema for owners.
- Free website checkPublic checks on your own site, then an action plan of what to fix first.
Still stuck? Ask E-3 for an answer from our help guides.
Rather we handled schema for owners for you?
It’s part of what we do every week for small businesses, as part of seo and ai search. Start with a free check of your site and profile, or call and ask.