Skip to content
Issue docs

No Event schema on an event page

Importantevent_schema_eventIssue 95

What is this issue?

This issue reports an Event schema block your page already declares that is missing a required property or carries an invalid date, location or offer — not a page describing an event with no Event schema at all.

Checked once a page declares Event schema:

  • name, startDate and location are present
  • startDate and endDate, when present, are valid ISO 8601 dates
  • location is a well-formed Place (name and address) or VirtualLocation (url)
  • any declared offers carry a valid price, priceCurrency and availability

What this issue is not: it does not guess that a page under /events/ or /webinar/, or one mentioning "Register now" or ticket prices, ought to declare Event schema. A page with none declared is never reported. eventStatus and eventAttendanceMode are not part of this check.

Why it matters

Event schema is critical for event visibility and user engagement:

  • Google Events carousel: Events with proper schema can appear in Google's dedicated Events carousel
  • Rich results: Enables event details (date, time, location, price) to appear in search results
  • Google Maps: Events are listed in Google Maps event listings
  • Calendar integration: Users can add events to their calendars directly from search results
  • Ticket sales: Ticket links and pricing can appear in search results
  • Voice search: Voice assistants can provide event details and ticket information

Resolving this issue improves your SEO health score by ensuring events are properly structured for maximum visibility and user engagement.

How to fix it

If this issue was raised, your page already declares an Event schema missing a required property or value — open the finding for specifics. The steps below are for a page that declares none yet: worthwhile to add, and never reported as a defect while absent.

  1. Identify event pages: Look for pages with event URL patterns (/events/, /conference/, /webinar/) or visible date/time/location information

  2. Add Event JSON-LD structured data to the page's <head> or before </body>:

    For in-person events:

    {
      "@context": "https://schema.org",
      "@type": "Event",
      "name": "Annual Tech Conference 2024",
      "startDate": "2024-09-15T09:00:00-05:00",
      "endDate": "2024-09-16T18:00:00-05:00",
      "eventStatus": "https://schema.org/EventScheduled",
      "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
      "location": {
        "@type": "Place",
        "name": "Austin Convention Center",
        "address": {
          "@type": "PostalAddress",
          "addressLocality": "Austin",
          "addressRegion": "TX",
          "addressCountry": "US"
        }
      },
      "offers": {
        "@type": "Offer",
        "price": "299",
        "priceCurrency": "USD",
        "availability": "https://schema.org/InStock"
      }
    }

    For online events: Use "@type": "VirtualLocation" with a url property

  3. Include required properties:

    • name: Event name
    • startDate: ISO 8601 format with timezone
    • location: Place or VirtualLocation
  4. Add recommended properties:

    • endDate: Event end date/time
    • eventStatus: Scheduled, Cancelled, or Postponed
    • eventAttendanceMode: In-person, online, or mixed
    • offers: Ticket pricing and availability
    • description: Event description
    • image: Event image URL
  5. Validate with Google's Rich Results Test

Examples

Example 1: No Schema Declared — Not This Issue

<!-- Event page with visible date, location and price, but no Event schema -->
<html>
  <head>
    <title>Annual Tech Conference 2024</title>
  </head>
  <body>
    <h1>Annual Tech Conference 2024</h1>
    <p><strong>Date:</strong> September 15-16, 2024</p>
    <p><strong>Location:</strong> Austin Convention Center</p>
    <p><strong>Price:</strong> $299</p>
    <button>Register Now</button>
  </body>
</html>

Nothing is reported, however clearly the page describes an event.

Example 1b: The Same Event, Declared and Valid (passes)

{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "Annual Tech Conference 2024",
  "startDate": "2024-09-15T09:00:00-05:00",
  "endDate": "2024-09-16T18:00:00-05:00",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "location": {
    "@type": "Place",
    "name": "Austin Convention Center",
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "Austin",
      "addressRegion": "TX",
      "addressCountry": "US"
    }
  },
  "offers": {
    "@type": "Offer",
    "price": "299",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}

eventStatus and eventAttendanceMode are good practice but are not checked by this issue today.

Example 2: Online Event with VirtualLocation

Corrected state (webinar):

{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "SEO Webinar: Advanced Techniques",
  "startDate": "2024-04-10T14:00:00Z",
  "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
  "location": {
    "@type": "VirtualLocation",
    "url": "https://zoom.us/j/123456789"
  }
}

Example 3: Incomplete Event Schema (fails)

Problematic state:

{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "Workshop"
}

Reported: startDate missing, location missing.

Corrected state:

{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "SEO Workshop",
  "startDate": "2024-05-20T10:00:00Z",
  "location": {
    "@type": "Place",
    "name": "Conference Room A",
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "Austin",
      "addressCountry": "US"
    }
  }
}

A Place location needs both name and address — a name-only location still fails with location.address missing.

How PixyScan detects this

  1. Read the declared structured data: every JSON-LD block is parsed, and @graph wrappers are flattened.

  2. Select declared Event entities: any schema block whose @type is Event. A page that declares none is not examined — this check does not infer an event page from its URL, or from visible dates, calls to action ("Register now") or ticket text.

  3. Check the required properties: a declared Event must have name, startDate and location.

  4. Check the value rules, when present:

    • startDate / endDate — each, if present, must be a valid ISO 8601 date
    • location — a Place needs a name and an address; a VirtualLocation (an online event) needs a url instead, and is not asked for a street address
    • offers — validated the same way as a Product's offers: price, priceCurrency and availability must be present and well-formed (an AggregateOffer carries lowPrice instead of price)
  5. This is reported when: the page declares an Event missing a required property, or whose declared startDate/endDate, location or offers fail the rules above. A page describing an event with no Event schema at all is never reported. eventStatus and eventAttendanceMode are not checked at all today.

What we store

Storage Level

Page Level — This issue is evaluated for each individual URL that contains structured data.


Database Table / Prisma Model

PageStructuredData


Stored Fields

Field Type Description
schemaType SchemaType The type of schema (e.g., Organization, Person)
schemaFormat SchemaFormat The format of the schema (JSON-LD, Microdata, RDFa)
schemaIdentifier String? Unique identifier for the schema
rawJson Json? The raw JSON-LD or structured data content
schemaErrors Json? Array of validation errors found in the schema
isValidSchema Boolean? Whether the schema is valid according to validation
missingFields Json? Reserved for future use — the crawler always writes null here today; no check currently populates it

Detection Dependencies

  • The following data sources are required to evaluate this issue:
  • HTML Document — The crawler parses the HTML to find structured data (JSON-LD, Microdata, RDFa)
  • Structured Data Validation — The extracted schema is validated against Schema.org definitions
  • Schema Parser — JSON-LD scripts, Microdata attributes, and RDFa markup are parsed

Further reading