Tutorial

How Do I Add Event Schema to a Webflow Event Page?

Written by
Pravin Kumar
Published on
Jul 15, 2026

Why do my Webflow events not show up as rich results in Google?

Your Webflow events likely lack Event schema, the structured data Google reads to understand them. Without it, Google sees a normal page and cannot show the date, place, or ticket details in search. Add Event schema in JSON-LD, and your listings become eligible for richer, more eye-catching results.

I run into this a lot on client sites. The events page looks great to a human. To a search engine, it is just text. There is nothing that says 'this is an event, here is when it starts, and here is where it happens.' Structured data fixes that gap.

In this guide, I will show you how I add Event schema to a Webflow site. We will cover single pages, dynamic CMS events, online events, and how to test the result. It is simpler than it looks once you know where the pieces go.

What is Event schema, and what does it do?

Event schema is a block of structured data that labels a page as an event. It uses the Event type from schema.org and is written in JSON-LD, the format Google recommends. It tells search engines the event name, start time, location, and more, in a way machines read cleanly.

Think of it as a hidden label on your page. Your visitors never see it. Search engines and AI tools do. When Google understands your event clearly, your page becomes eligible for event rich results, which can show the date and place right in the search listing.

This helps beyond Google too. AI answer engines like ChatGPT and Perplexity read structured data to understand pages. Clean Event markup gives them the facts in a form they trust. That is a small edge when someone asks an AI about events in your space.

Which Event properties does Google actually require?

Google requires three properties for Event rich results: the event name, the start date, and the location. Google's Search Central documentation is clear that each event must describe the name, start date, and location to be eligible. Everything else is recommended, not required, but the recommended fields help a lot.

The start date uses ISO 8601 format, which looks like 2026-08-15T18:30 with a time zone. Google's docs call out that a correct date and time format matters, so the engine knows exactly when your event runs. A vague date is a common reason markup fails.

For location, you describe a Place with a name and a PostalAddress. Recommended extras include an image, a description, an offers block for tickets and price, and a performer or organizer. I add these when the data exists, because richer markup gives a better result.

Where do I put Event schema in Webflow?

You put Event schema inside an HTML Embed element or in the page's custom code, wrapped in a script tag. Webflow does not have a built-in schema field, so you add the JSON-LD yourself. For one event, page custom code works. For many events, an Embed inside a Collection template scales better.

The script tag looks like a script element with a type of application slash ld plus json. Google reads the JSON inside it. You can place it in the page head or in the body. Both work for Google, though I usually keep it in the head for static pages and in an Embed for CMS pages.

If you already built an events collection, you are halfway there. I covered building one in my guide on a Webflow event calendar with CMS filters. Once the data lives in the CMS, you can feed it straight into your schema.

How do I add Event schema to a single Webflow page?

For a single event, open the page settings and find the custom code section. Add a script tag with your JSON-LD inside it. Set the type to Event, then fill in the name, startDate, endDate, and a location object. Save, publish, and the markup goes live with the page.

This is the fastest route for a one-off event, like a launch or a webinar you run once. You type the values by hand, so it takes a couple of minutes. The trade-off is that it does not update itself. If the date changes, you edit the code again.

I use this method when a client has a single flagship event and no events collection. It is quick, clean, and needs no CMS setup. For anything recurring, I switch to the dynamic approach in the next section.

How do I make Event schema dynamic for a CMS events collection?

To make it dynamic, add an HTML Embed inside your event Collection template page. Then bind CMS fields into the JSON-LD, so each event fills its own name, date, and location. Webflow swaps in the right values for every item. You write the markup once, and it works for every event.

Inside the Embed, you type the JSON-LD structure and drop in field values where they belong. Webflow lets you insert a CMS field into an Embed, so the event name field feeds the name, the date field feeds startDate, and so on. I explain binding data into embeds in my tutorial on using code embeds with dynamic data.

The key is making your date field output ISO 8601. If your CMS date does not match that format, the markup can fail Google's checks. I keep a dedicated date field formatted for schema, so the output is always clean. This one detail saves a lot of debugging later.

How do I handle online and hybrid events?

For online and hybrid events, add the eventAttendanceMode property from schema.org. It tells search engines whether an event is in person, fully online, or mixed. For online events, you also add a VirtualLocation with the URL where people join, instead of a physical Place.

This became standard once remote events grew common. A webinar has no street address, so a physical location alone is wrong. Instead, you set the attendance mode to online and point the location at the join link. Hybrid events use the mixed mode and can list both a venue and a URL.

Getting this right matters for accuracy. If you mark an online webinar as a physical event, the markup misleads both Google and your visitors. I always match the attendance mode to how the event actually runs, because honest markup is the only markup worth adding.

How do I show the right status for canceled or moved events?

Use the eventStatus property to signal changes. Schema.org defines statuses like EventCancelled, EventRescheduled, EventPostponed, and EventMovedOnline. When plans change, you update this field so search engines show the current state instead of stale details. This keeps your listing truthful when an event does not go as planned.

Events change more than we like. A speaker drops out, a venue falls through, or a date shifts. If your page still shows the old plan, visitors get frustrated and trust drops. The status field is how you tell search engines what really happened.

For a rescheduled event, schema.org says to set the new startDate and record the old one as previousStartDate. That small habit keeps your markup accurate through the messy parts of running real events. It is a detail many sites skip, and it quietly hurts them.

How do I test that my Event schema works?

Test your markup with Google's Rich Results Test. Paste your live URL or the code, and it shows whether the Event schema is valid and eligible for rich results. It flags missing required fields and format errors. I never publish event markup without running this check first.

The test tells you two things. First, is the JSON-LD valid and readable. Second, does it qualify for rich results, or is it just present. A page can have valid schema that still misses a required field, so I read the warnings, not just the pass or fail line.

After launch, I keep an eye on structured data health over time. Broken or missing fields creep in as content changes. I wrote about catching these in my guide on auditing structured data errors in Webflow, which pairs well with this setup.

Should I add Event schema to every event page?

Yes, add Event schema to every real event page where you have accurate details. It costs little time and makes your listings clearer to Google and AI search. The only rule is honesty. Never mark up an event you cannot back with true dates, places, and status. Wrong markup does more harm than none.

Start with your most important event, get the markup valid in the Rich Results Test, then roll it out across your events collection. Once the dynamic setup is in place, every new event you add gets schema for free. That is the payoff of doing it once, properly.

If you want help wiring this into your Webflow CMS the right way, or checking why a listing is not showing rich results, reach out. This is the kind of technical SEO work I do every week, and I am happy to walk through your setup with you.

Get found, cited and the back office automated

Let's make your site the source AI engines quote and wire up the systems behind it.

Contact

Let's get your website found and cited by AI

Tell me what you're working on, whether AI search is skipping your product, your back office is buried in manual work, or you need a build that does both.

Got it, thanks. I read every message personally and reply within 1-2 business days.
Oops! Something went wrong while submitting the form.