Skip to main content
The event document represents a scheduled event — a showcase, workshop, networking session, or lecture. Events appear in eventList page blocks and on dedicated detail pages at /events/[slug]. The Studio supports three orderings: by date descending, date ascending, and title.

Fields

Main group

title
string
required
Event name. Used as the display title in the Studio preview and as the source for the auto-generated slug.
slug
slug
required
URL slug for the event detail page (/events/[slug]). Auto-generated from title (max 96 characters).
site
string
Multi-site discriminator. Hidden on the production (Capstone) dataset. Required on the rwc dataset.
date
datetime
required
Start date and time of the event. Used for ordering and for the upcoming/past status fallback logic.
endDate
datetime
End date and time. Optional. Custom validation ensures endDate is after date when both are set.
location
string
Physical or virtual location (e.g. GITC 3rd Floor, Zoom). Displayed on event cards and the detail page.
description
text
Short description of the event. Displayed in event list items and the detail page.
isAllDay
boolean
When true, no time is shown alongside the date. Defaults to false.
category
string
Semantic event category. The front end maps categories to calendar colors in the eventList block.
ValueLabel
workshopWorkshop
lectureLecture
socialSocial
competitionCompetition
otherOther
eventType
string
Program format — describes the type of event from a program perspective. Use category for semantic classification that drives calendar colors.
ValueLabel
showcaseShowcase
networkingNetworking
workshopWorkshop
status
string
Explicit upcoming/past flag. Takes priority over date comparison in resolveBlockEvents(). Defaults to upcoming.
ValueLabel
upcomingUpcoming
pastPast

SEO group

seo
seo object
SEO metadata for the event detail page.

Filtering in the eventList block

The resolveBlockEvents() helper in sanity.ts filters the pre-fetched event cache based on the block’s filterBy setting and applies the limit:
FilterBehavior
upcomingEvents where status == "upcoming", or no status and date >= now (sorted ascending)
pastEvents where status == "past", or no status and date < now (sorted descending)
allAll events, sorted by date ascending
The status field takes priority over date comparison. Set status explicitly when an event’s date has passed but you want it to remain in the upcoming list (or vice versa).

Date range query

For calendar month navigation, EVENTS_BY_MONTH_QUERY is available for fetching events within a specific date range:
*[_type == "event"
  && dateTime(date) >= dateTime($monthStart)
  && dateTime(date) <= dateTime($monthEnd)
  && ($site == "" || site == $site)
] | order(date asc) {
  _id, title, "slug": slug.current, date, endDate,
  location, eventType, status, description, isAllDay, category
}