Structured Data & SEO: Essential Tools for Publishers and Event Organizers in the AI Era
- June 7, 2024
- General

AI Summary
Publishers and event organizers need different structured data types but the same discipline: declare the entity, fill the properties that carry meaning, and verify the result in a tool that reports what Google can actually use. Events need name, startDate and location at minimum; publishers need accurate dates, a real author and a resolvable publisher.
- Online events need
eventAttendanceModeplus aVirtualLocation, not a blankPlace. - FAQ rich results were restricted to government and health sites in 2023, so keep FAQPage for extraction, not for rich results.
- Paywalls need
isAccessibleForFreeplus ahasPartblock with a matchingcssSelector. - The Rich Results Test reports eligibility; validator.schema.org reports correctness. Use both.

Structured data is where a lot of SEO effort goes to die quietly. Markup gets added once during a build, validates on the day it ships, and then drifts: a CMS upgrade changes a date format, a ticketing integration stops emitting prices, an events template starts outputting last year's timezone. Nothing errors visibly, the rich results just stop appearing.
Publishers and event organizers feel this more than most, because both depend on structured data for surfaces that have no plain text equivalent. An event without valid markup is not eligible for the event experience at all. This page covers the properties that actually carry weight for each, the tooling that tells you the truth, and the failure modes worth building checks around.
Understanding AI Content Consumption
It is worth starting here because it reframes what markup is for. For a decade the justification for structured data was the rich result: stars, dates, prices rendered into the SERP. That payoff still exists but it has narrowed, and Google has withdrawn features more than once.
The durable justification is different. Structured data states facts in a form that requires no interpretation. When a system needs to know when an event starts, who wrote an article, or what a ticket costs, prose forces inference and markup does not. Extraction systems behind AI answers are confidence limited: they repeat what they can attribute cleanly and skip what they cannot. A page that declares startDate as an ISO 8601 value with a timezone offset is answerable; a page that says "doors at 7" is a guess.
This is why the FAQ rich result restriction is not a reason to strip FAQPage markup. The visual treatment went away for most sites, but the structural clarity, question mapped to answer, is exactly the shape extraction wants. Treat markup as machine readable meaning first and rich results second, and the withdrawal of any single feature stops being a strategic problem. That framing is expanded in schema markup for AI search.
Event markup: the properties that matter
Google requires three properties on an Event. Everything else is optional in the specification and close to mandatory in practice, because a listing with three fields tells a user nothing.
| Property | Status | What it must contain | Common failure |
|---|---|---|---|
name | Required | The event title alone | Padding with the venue or city |
startDate | Required | ISO 8601 with timezone offset | Date only, so the time is ambiguous |
location | Required | Place with a full PostalAddress, or VirtualLocation with a url | Venue name with no address |
endDate | Recommended | ISO 8601, after startDate | Omitted, so duration is unknown |
eventAttendanceMode | Recommended | Offline, Online or Mixed attendance mode | Missing on virtual events |
eventStatus | Recommended | Scheduled, Cancelled, Postponed, Rescheduled or MovedOnline | Cancelled events left as scheduled |
offers | Recommended | price, priceCurrency, availability, url, validFrom | Price present, currency absent |
performer / organizer | Recommended | Person or Organization objects, not strings | Plain text names with no entity |
image | Recommended | High resolution, multiple aspect ratios | A logo instead of event imagery |
The status properties deserve particular attention because they are the ones that go stale. eventStatus and availability describe a moment in time, and an events calendar that never updates them will advertise sold out shows as available indefinitely. If your markup is generated from a ticketing system, these two fields are the ones to wire to live data rather than to a template default.
A minimal but genuinely complete online event looks like this:
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Structured Data Clinic",
"startDate": "2026-09-14T18:00:00+01:00",
"endDate": "2026-09-14T19:30:00+01:00",
"eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
"eventStatus": "https://schema.org/EventScheduled",
"location": {
"@type": "VirtualLocation",
"url": "https://example.com/clinic/join"
},
"organizer": {
"@type": "Organization",
"name": "Example Events",
"url": "https://example.com/"
},
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "GBP",
"availability": "https://schema.org/InStock",
"url": "https://example.com/clinic/",
"validFrom": "2026-08-01T09:00:00+01:00"
}
}For pages listing many events, wrap the items in an ItemList rather than emitting a wall of unrelated Event objects, so the relationship between the page and its items is explicit. Implementation detail is covered in event schema markup, and if you are hand building payloads the event schema generator handles the boilerplate.
Publisher markup: authorship, dates and paywalls
Publishers have a smaller property surface but a higher accuracy bar, because the properties they use are trust signals rather than display features.
Dates. datePublished and dateModified should reflect reality. A CMS that rewrites dateModified on every cache rebuild produces an archive of articles all modified this morning, which is worse than no date at all. Reserve the modified date for substantive edits.
Authorship. author should be a Person object with a name and a url pointing at a populated author page, ideally with sameAs references that disambiguate the individual. An author string is markup that technically validates and communicates nothing.
Publisher. An Organization with a name and logo, consistent across every article, and consistent with the organization entity on your homepage. Inconsistency here fragments the entity.
Paywalls. Subscription content needs isAccessibleForFree set to false plus a hasPart describing the gated section with a cssSelector that actually matches the element in the rendered DOM. This is the mechanism that separates a declared paywall from cloaking, and a selector that no longer matches after a template change silently reintroduces the risk.
Optimization Approaches
The tooling question is really a question about which failure you are hunting.
| Tool | Answers | Blind spot |
|---|---|---|
| Rich Results Test | Is this eligible for a Google feature, on the rendered page | Silent about valid markup with no feature attached |
| validator.schema.org | Is this markup correct against the vocabulary | Says nothing about Google eligibility |
| Search Console enhancement reports | What is broken across the whole site, over time | Lags, and only covers crawled URLs |
| URL Inspection, live test | What Google sees after rendering this specific URL | One URL at a time |
| Site crawler with extraction | Which templates emit which properties at scale | Needs configuring to parse JSON-LD |
The workflow that catches drift is the loop in the diagram: validate on build, monitor in Search Console continuously, then fix and request validation. The step teams skip is the middle one, and it is the only step that runs without being triggered by a human. Set the enhancement reports as a recurring check rather than something consulted after a problem is already visible. For debugging when a result disappears despite valid markup, see how to validate and debug structured data.
Two habits prevent most incidents. First, validate the rendered DOM rather than the source, because markup injected by JavaScript is the most common source of "it works locally" reports. Second, treat markup as code: if a template emits it, a change to that template should require revalidation before deploy.
Strategic Implications
For publishers and event organizers, structured data is not a growth tactic, it is eligibility infrastructure. There is no partial credit: an event that fails validation is absent from the event experience entirely, and a paywalled article without the correct declaration risks being treated as something other than a paywall.
That makes ownership the real question. Markup breaks during CMS upgrades, ticketing migrations and template refactors, which are all engineering events that nobody currently routes past SEO. The organizations that keep rich results stable are the ones that put structured data validation into the deployment pipeline instead of into a quarterly audit.
The second implication is about durability. Features get withdrawn, as FAQ and HowTo results both demonstrated, so a markup strategy justified purely on current SERP treatments is fragile by construction. Markup justified on making your facts unambiguous survives feature changes, because the underlying need, machines understanding what your page asserts, keeps growing.
Frequently asked questions
Google requires name, startDate and location on an Event. Everything else is recommended rather than required, but an event with only the minimum rarely produces a useful result. Adding endDate, image, description, offers and organizer is what turns a valid item into an informative one.
Set eventAttendanceMode to OnlineEventAttendanceMode and give location a VirtualLocation object whose url points at the joining page. Hybrid events use MixedEventAttendanceMode and supply both a Place and a VirtualLocation in an array. Omitting the mode on a virtual event is one of the most common causes of a confusing listing.
For most sites, no. Google restricted FAQ rich results to well known authoritative government and health websites in August 2023, so ordinary publishers no longer see the visual treatment. The markup is still worth keeping because it structures your answers for extraction, but it should not be justified as a rich result play.
Use isAccessibleForFree set to false on the article, then describe the gated portion with a hasPart entry that carries a cssSelector matching the paywalled element and its own isAccessibleForFree false. This is how Google distinguishes legitimate paywalls from cloaking, so getting the selector right genuinely matters.
They answer different questions. The Rich Results Test only reports on features Google can actually display, so it stays silent about valid markup with no rich result attached. The Schema Markup Validator at validator.schema.org checks your markup against the vocabulary itself, which is what you want when debugging structure rather than eligibility.
It helps indirectly but meaningfully. Markup does not force a citation, but it states entities, dates, prices and authorship unambiguously, which is exactly what an extraction system needs to be confident enough to repeat a claim. Pages whose facts can only be inferred from prose are easier to skip than pages that declare them.
Source: https://wordlift.io/blog/en/structured-data-for-events/
Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.







