-
Notifications
You must be signed in to change notification settings - Fork 8
Description
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:
- ✅ Event pages indexed before and up through the event date
- ✅ Pages to remain indexed forever for historical value
- ❌ Google not to keep re-crawling / re-indexing old events
- ❌ 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
robotsdirectives - 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 sitemapsLast-ModifiedHTTP 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, immutableThis 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.