Promoting events without Event Schema = Google hides your date + location. Event Schema = rich card with "Get tickets" in search.

In this tutorial, you'll add Event Schema to Blogger event posts. Follow along and you'll get Google event rich results with date, time, venue, and price in 2025.

Step 1: Why Event Schema Gets More Registrations 2025

Google shows events in search + Maps + Google Events tab when Schema is present.

  1. Rich snippets: Google shows date, time, venue, price under title
  2. Event carousel: Schema required for "Events near me" carousel
  3. Google Maps: Physical events appear in Maps with Schema
  4. 60% higher CTR: "Free" or "Oct 15" badges beat plain results

Image: Google search showing "Blogger SEO Webinar" with Oct 15, 7PM, Free, Online

Step 2: Add Event Schema to Blogger Event Post

Paste this in post HTML editor for your event announcement.

  1. Posts → Edit Event Post → Switch to "HTML" view → Paste at BOTTOM:
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "Blogger SEO Masterclass 2025 - Live Webinar",
  "startDate": "2025-10-15T19:00:00+01:00",
  "endDate": "2025-10-15T21:00:00+01:00",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
  "location": {
    "@type": "VirtualLocation",
    "url": "https://zoom.us/j/123456789"
  },
  "image": [
    "https://yourblog.blogspot.com/seo-webinar-banner.jpg"
  ],
  "description": "Free 2-hour live webinar. Learn Blogger SEO, Schema markup, and AdSense optimization. Q&A session included. Limited to 500 seats.",
  "organizer": {
    "@type": "Organization",
    "name": "Your Blog Academy",
    "url": "https://yourblog.blogspot.com"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://yourblog.blogspot.com/p/seo-webinar.html",
    "price": "0",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "validFrom": "2025-09-01T00:00:00+01:00"
  },
  "performer": {
    "@type": "Person",
    "name": "Your Name",
    "jobTitle": "SEO Expert"
  }
}
</script>
  1. Replace placeholders:
FieldReplace WithFormat
nameEvent titleBlogger SEO Masterclass 2025
startDateStart date + time ISO 86012025-10-15T19:00:00+01:00
endDateEnd date + time2025-10-15T21:00:00+01:00
locationVirtualLocation or PlaceSee Step 3 below
price0 for free, or ticket price"0" or "49.00"
imageEvent banner URL1200x600px minimum

Step 3: Online vs Physical Event Schema Examples

Google needs different location blocks for virtual vs in-person events.

For Online Webinar/Zoom Event:

"eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
"location": {
  "@type": "VirtualLocation",
  "url": "https://zoom.us/j/123456789"
}

For Physical Event/In-Person Workshop:

"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"location": {
  "@type": "Place",
  "name": "Lagos Tech Hub",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Allen Avenue",
    "addressLocality": "Lagos",
    "addressRegion": "Lagos State",
    "postalCode": "100001",
    "addressCountry": "NG"
  }
}

For Hybrid Event - Online + In-Person:

"eventAttendanceMode": "https://schema.org/MixedEventAttendanceMode",
"location": [{
  "@type": "VirtualLocation",
  "url": "https://zoom.us/j/123456789"
},{
  "@type": "Place",
  "name": "Lagos Tech Hub",
  "address": { ... }
}]

Step 4: Add Visible Event Card to Match Schema

Schema must match visible content. Add this event box in your post:

<div style="background:#e6f4ea;border:2px solid #34a853;padding:20px;border-radius:8px;margin:20px 0;">
<h2>Blogger SEO Masterclass 2025 - Live Webinar</h2>
<p><strong>Date:</strong> Wednesday, October 15, 2025</p>
<p><strong>Time:</strong> 7:00 PM - 9:00 PM GMT+1</p>
<p><strong>Location:</strong> Online via Zoom</p>
<p><strong>Price:</strong> Free - Limited to 500 seats</p>
<p><strong>Host:</strong> Your Name, SEO Expert</p>
<p><strong>What you'll learn:</strong> Blogger SEO, Schema markup, AdSense optimization, Live Q&A</p>
<a href="https://zoom.us/j/123456789" style="background:#1a73e8;color:#fff;padding:12px 24px;text-decoration:none;border-radius:4px;display:inline-block;margin-top:10px;">Register Free</a>
</div>

Step 5: Event Status Updates - Cancelled or Postponed

Update eventStatus if event changes. Google removes from search fast:

Event Scheduled: "https://schema.org/EventScheduled"
Event Cancelled: "https://schema.org/EventCancelled"
Event Postponed: "https://schema.org/EventPostponed" 
Event Moved Online: "https://schema.org/EventMovedOnline"
Event Rescheduled: "https://schema.org/EventRescheduled" + new startDate

Step 6: Test Event Schema + Fix Common Errors

  1. Rich Results Test: search.google.com/test/rich-results → Enter URL → Must show "Event" valid
  2. Search Console: Enhancements → Events → Monitor impressions
  3. Fix: "Missing field startDate" = Use ISO 8601: YYYY-MM-DDTHH:MM:SS+TZ
  4. Fix: "Invalid location" = Use VirtualLocation for online OR Place with full address for physical
  5. Fix: "Event in past" = Delete Schema after event ends or set eventStatus to EventCancelled
  6. Fix: No rich results = Add offers block even if free. Price "0" required

Bad practice to avoid: Adding Event Schema to blog posts or news articles. Only use on dedicated event pages with registration link. Google gives manual action for fake events.

Important: Event Schema only works for future dates. Remove or update to EventCancelled after event ends. For recurring events, use eventSchedule with multiple dates. Combine with Video Schema from Post #57 if event has replay video. Update availability to "SoldOut" when tickets finish.