Event Schema Generator

Type in your event's name, start time, venue address and tickets, and this generator writes schema.org Event JSON-LD you can paste into the page. It follows Google's Event rules: name, startDate, a Place location with an address are required, and it warns about missing time zones or online-only events.

Required Event properties in Google's documentation (October 2026)
PropertyWhat goes in it
nameThe full title of the event
startDateStart date and time in ISO-8601, ideally with a UTC offset
locationA Place for the venue
location.addressThe venue's full street address

Updated

Running a workshop, a gig, a tasting night or a class? Event markup is a short block of code that tells search engines the date, place and ticket details in a form they can read reliably. You do not need to write it by hand: fill in the form and copy the result into your page or your builder's custom code box.

Build your Event markup

Your JSON-LD

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "Sourdough Basics Workshop",
  "startDate": "2026-11-14T10:00:00-05:00",
  "endDate": "2026-11-14T13:00:00-05:00",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "eventStatus": "https://schema.org/EventScheduled",
  "location": {
    "@type": "Place",
    "name": "Corner Bakery Studio",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "12 Mill Street",
      "addressLocality": "Springfield",
      "addressRegion": "IL",
      "postalCode": "62701",
      "addressCountry": "US"
    }
  },
  "image": [
    "https://example.com/img/sourdough-16x9.jpg"
  ],
  "description": "A three-hour hands-on class: starter care, shaping and baking your first loaf.",
  "offers": {
    "@type": "Offer",
    "price": 45,
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "url": "https://example.com/events/sourdough-basics"
  },
  "organizer": {
    "@type": "Organization",
    "name": "Corner Bakery",
    "url": "https://example.com"
  }
}
</script>

Warnings

No problems found against Google's Event rules.

A complete example

This is what the generator writes for an in-person workshop with paid tickets. Swap in your own details.

Event JSON-LD for an in-person workshop

Required fields come first; image, offers and organizer are recommended extras.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "Sourdough Basics Workshop",
  "startDate": "2026-11-14T10:00:00-05:00",
  "endDate": "2026-11-14T13:00:00-05:00",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "eventStatus": "https://schema.org/EventScheduled",
  "location": {
    "@type": "Place",
    "name": "Corner Bakery Studio",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "12 Mill Street",
      "addressLocality": "Springfield",
      "addressRegion": "IL",
      "postalCode": "62701",
      "addressCountry": "US"
    }
  },
  "image": ["https://example.com/img/sourdough-16x9.jpg"],
  "description": "A three-hour hands-on class: starter care, shaping and baking your first loaf.",
  "offers": {
    "@type": "Offer",
    "price": 45,
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "url": "https://example.com/events/sourdough-basics"
  },
  "organizer": { "@type": "Organization", "name": "Corner Bakery", "url": "https://example.com" }
}
</script>

eventStatus values

Google documents four values. Leave the field out and Google assumes the first one.

eventStatus values and when to use them
ValueUse it when
EventScheduledThe event is going ahead as planned (the default)
EventCancelledThe event has been called off
EventPostponedIt will happen later but the new date is not known
EventRescheduledIt moved to a new date; add previousStartDate

Required versus recommended

Google needs only four things: name, startDate, location and location.address. Everything else, such as description, endDate, image, offers, organizer and performer, is recommended and makes the listing more useful.

If you leave eventStatus out, Google treats the event as EventScheduled, so you only need it when plans change.

Time zones without the guesswork

Google asks for the UTC or GMT offset on start and end times, like 2026-11-14T19:00:00-05:00 for 7pm in New York in winter. Without one, it uses the time zone of the event location.

Remember that offsets change with daylight saving time, so check the offset for the event date, not for today.

How it works

  1. Enter the event name, start and end time, and the time zone offset of the venue.
  2. Choose whether people attend in person, online or both, and add the address or the stream link.
  3. Add ticket details if you sell or give away tickets, including the price and currency.
  4. Read any warnings, copy the script tag and paste it into the event page's HTML.

Tips

Frequently asked questions

Are online events eligible for Google's event results?

Google's Event documentation currently says virtual experiences with no real-world component are not supported, and events must take place in a physical location. You can still describe an online event with schema.org, but do not expect Google event features for it.

What if my event has no fixed start time?

For an all-day event, or when the start hour is unknown, Google says to give only the date, such as 2026-11-14. Avoid putting a fake midnight time in.

How do I mark a rescheduled event?

Set eventStatus to EventRescheduled, put the new date in startDate, and add the old date in previousStartDate. For a postponed event with no new date yet, use EventPostponed and keep the original startDate.

Which currency code should I use?

priceCurrency takes a three-letter ISO 4217 code such as USD, GBP, EUR or CAD.

Where do I paste the code?

Inside the HTML of the event page, in the head or the body. Most site builders have a custom code or header code setting per page.

Related: Schema markup generator, Schema markup validator, On-page SEO checklist, How to get your business on Google.

Start for free or see all free tools. We.Inc is free to start, with no card needed. AI building is on paid plans from $20 a month.

More in Free Tools

We.Inc is an AI-powered website builder you can resell under your own brand. Launch a branded client dashboard, bill on Stripe Connect, and deliver AI-generated websites in minutes. White-label plans start at $99 a month for 25 client sites, with a 7-day free trial and no per-site fees.

Product

Who It's For

Features

Resources

Company

View Sitemap