Race volunteer schedule template

Volunteer shift grids tend to live in an email attachment sent a few weeks before the race. By race morning, some volunteers have the wrong start time and others don't know their shift exists.

This template makes the shift grid a live feed instead. Each row is one shift with a real start and end time, so it blocks the actual hours on a volunteer's calendar. When you rework shifts the week of the race, the calendar everyone subscribed to updates with you.

Opens a live preview of the sample events below — no account needed. Swap in your own rows when you're ready.

The columns

One row per event, headers in the first row. That's the whole format.

ColumnWhat it becomesExample
DateShift date. Packet pickup often lands the day before the race.10/10/2026
TimeShift start. Race-day shifts start early, so be exact.6:30 AM
End TimeShift end. With it filled in, the event blocks the full shift instead of a default hour.10:00 AM
EventThe role: station, crew, or shift name.Aid station 1 — mile 2
LocationThe exact corner or gate, so an early-morning volunteer's phone can navigate to it.Elm St at Park Ave

Sample data

This is exactly what “Use this template” loads into the preview — replace it with your real schedule.

DateTimeEnd TimeEventLocation
10/9/202612:00 PM4:00 PMPacket pickup — shift 1Runners Corner, 210 Main St
10/9/20264:00 PM8:00 PMPacket pickup — shift 2Runners Corner, 210 Main St
10/10/20265:00 AM7:30 AMCourse setup and signageStart line, Main St and 3rd Ave
10/10/20265:30 AM8:00 AMRace-day packet pickupRegistration tent, City Park
10/10/20266:30 AM10:00 AMAid station 1 — mile 2Elm St at Park Ave
10/10/20266:30 AM11:00 AMAid station 2 — mile 4.5River Trail gate
10/10/20267:00 AM11:00 AMCourse marshals — downtown loopMarshal check-in, Main St and 3rd Ave
10/10/20267:30 AM11:30 AMFinish line and medalsFinish chute, City Park
10/10/20268:00 AM12:00 PMFood tent and awardsCity Park pavilion
10/10/202610:30 AM1:00 PMCourse teardownStart line, Main St and 3rd Ave
  • Fill in End Time for every shift. That's what makes a 6:30 to 10:00 aid-station shift block those hours on a volunteer's calendar, so nobody double-books the morning or leaves early.
  • Use one row per shift, not per volunteer. Ten shifts is ten events, even if sixty people work them.
  • You can keep your volunteer-name and phone-number columns in the same sheet. Columns you don't map are ignored by the feed, so the sheet stays your full signup tracker.
  • Make Location something a phone can navigate to. “Elm St at Park Ave” gets a volunteer to mile 2 at 6 AM; “aid station 1” doesn't.

Questions

Does each volunteer see only their own shift?
No. One feed carries every shift, and each volunteer keeps track of theirs. Seeing the whole schedule is useful on race morning anyway, when you need to know who's at mile 4.5. If you want separate feeds per crew, like aid stations and marshals, Pro's 10 feeds cover that; the free plan is one feed.
We have 60 volunteers. Does that blow past the 50-event limit?
No. Events are shift rows, not people, so this whole race is 10 events. The free tier's 50-event cap fits several races' worth of shifts, and assignments stay in your sheet's unmapped columns.
Shifts always get reshuffled the week of the race. What happens then?
Edit the rows, and every subscribed calendar gets the updated shifts as changes to the same events, not duplicates. Pro's 15-minute sync helps during race week. Either way, try to finalize the night before rather than race morning, since Google Calendar refetches feeds on its own schedule and can take up to 24 hours.
Can I feed this from our signup tool instead of a Google Sheet?
Yes, if it can export or publish CSV at a URL. Sources are Google Sheet share links, CSV URLs, and pasted tables. Many race directors export the signup grid to a sheet, clean up the five columns above, and publish from there.

Start with the sample, finish with your schedule.

The preview is live in seconds. Your roster subscribes once and stays in sync.

Use this template