Skip to content

SEO for Events that are past #1632

@geoff-maddock

Description

@geoff-maddock
i have an events site where i post local events of interest. i want google to index the pages and update them up through the date of the event. the pages will still exist for historical purposes, so I would like them to still be on google. but the google indexing service should not go back and re-index them how to handle this case?

This is a very common (and very solvable) events-site SEO problem, and Google actually gives you all the primitives you need. The trick is to separate “discoverability” from “freshness signaling.”

Below is a clean, battle-tested approach that works well for event archives like yours.


Goals recap

You want:

  1. ✅ Event pages indexed before and up through the event date
  2. ✅ Pages to remain indexed forever for historical value
  3. ❌ Google not to keep re-crawling / re-indexing old events
  4. ❌ No accidental “thin content / stale content” penalties

The Core Strategy (TL;DR)

Keep old event pages indexable, but make them “crawl-cold.”

You do this with:

  • Correct robots directives
  • Last-modified discipline
  • Structured data lifecycle
  • Sitemap segmentation
  • Optional archive canonicalization

1️⃣ Never noindex Past Events (Important)

Do NOT do this:

<meta name="robots" content="noindex">

Why:

  • Google will drop the page entirely
  • You lose long-tail search value (“Band X Pittsburgh 2022”)
  • You lose internal linking authority

Keep:

<meta name="robots" content="index, follow">

2️⃣ Stop Signaling “Freshness” After the Event

Google re-indexes pages primarily because it thinks something changed.

🔑 Rule

Once an event is over, the page should become immutable.

Practical steps

a) Freeze lastmod

  • Do not update:

    • <lastmod> in sitemaps
    • Last-Modified HTTP header
    • JSON-LD dates

If you keep touching these, Google will keep coming back.


b) Serve Cache-Control aggressively (for past events)

For past events only:

Cache-Control: public, max-age=31536000, immutable

This is a huge crawl-budget hint.


3️⃣ Use Structured Data Lifecycle Correctly (Critical)

Use Event schema, but transition it cleanly after the event.

Before & During Event

{
  "@type": "Event",
  "name": "Artist Name Live",
  "startDate": "2026-02-28T19:00:00-05:00",
  "endDate": "2026-02-28T23:00:00-05:00",
  "eventStatus": "https://schema.org/EventScheduled"
}

After Event Ends

Change ONLY:

"eventStatus": "https://schema.org/EventCompleted"

🚫 Do not:

  • Remove schema
  • Update timestamps
  • Re-emit new JSON

This tells Google:

“This page is valid, complete, and done.”


4️⃣ Split Your Sitemaps (This Is the Big Win)

Create two sitemaps:

🔥 events-upcoming.xml

  • Only future events
  • Updated frequently
  • Submitted in Search Console
  • <lastmod> changes allowed

🧊 events-archive.xml

  • Past events only
  • Submitted once
  • <lastmod> = event end date
  • Never touched again

Example:

<url>
  <loc>https://yoursite.com/events/nana-grizol-pittsburgh-2026</loc>
  <lastmod>2026-02-28</lastmod>
</url>

Google strongly respects sitemap segmentation.


5️⃣ Internal Linking: De-emphasize Old Events

Google crawls what you link to.

Recommended pattern

  • Homepage / main feeds → future events only

  • Past events:

    • Linked via artist pages
    • Linked via year/month archives
    • Linked via search results

This lowers crawl priority without removing indexability.


6️⃣ Optional: Archive Canonicals (Advanced)

If you have many nearly identical event pages (same venue, same artist multiple years):

<link rel="canonical" href="/artists/nana-grizol">

Use sparingly — this is optional and strategic.


7️⃣ What NOT to Do

noindex
robots.txt blocking
❌ Constant timestamp updates
❌ Removing schema entirely
❌ Auto-editing old descriptions
❌ Re-submitting old URLs to Indexing API


8️⃣ How Google Behaves After This

If done correctly:

  • Google will:

    • Index event pages once
    • Re-crawl lightly after completion
    • Eventually crawl very infrequently (months or years)
  • Pages stay searchable

  • Crawl budget stays focused on new events

This is exactly how Ticketmaster, Songkick, Resident Advisor, and Bandsintown behave.


9️⃣ Bonus: Status Banner (User + SEO Friendly)

Add a non-index-affecting banner:

<div class="event-status past">
  This event has already happened.
</div>

This helps users without touching metadata.


If you want…

I can:

  • Audit your current event page template
  • Give you exact JSON-LD blocks for before/after
  • Propose a sitemap structure tailored to your API
  • Suggest crawl-budget-safe pagination patterns

Just say the word.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions