Practice schedule template

Most teams practice on a fixed weekly pattern, but real seasons don't stay fixed. Fields close, and start times shift as the days get shorter. A recurring calendar event handles that badly. A spreadsheet with one row per practice handles it fine.

This template is that spreadsheet. Type your dates once (the fill handle in Sheets can generate the Tuesdays for you), share it through CalRelay, and the whole team subscribes to one feed. When something changes, you edit the row.

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
DateOne row per practice. There are no repeat rules.9/8/2026
TimeStart time. Edit it when practice has to move earlier.5:30 PM
EventThe event title. “Practice” is fine; note scrimmages and photo days when they happen.Practice — scrimmage
LocationField or gym. Phones turn this into a map link.Riverside Park, Field 2
NotesOptional. What to bring, or what's different this week.Indoor — field closed

Sample data

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

DateTimeEventLocationNotes
9/8/20265:30 PMPracticeRiverside Park, Field 2Cleats and water
9/10/20265:30 PMPracticeRiverside Park, Field 2
9/15/20265:30 PMPractice — scrimmageRiverside Park, Field 2Split squads
9/17/20265:30 PMPracticeRiverside Park, Field 2
9/22/20265:30 PMPracticeLincoln Rec CenterIndoor — field closed for aeration
9/24/20265:30 PMPracticeRiverside Park, Field 2Team photos after
9/29/20265:15 PMPracticeRiverside Park, Field 2Earlier start — sunset
10/1/20265:15 PMPracticeRiverside Park, Field 2
TBD5:30 PMMakeup practiceRiverside Park, Field 2Waiting on field permit
10/6/20265:15 PMPractice — last before playoffsRiverside Park, Field 2Bring both jerseys
  • There are no repeat rules, so it's one row per practice. In Google Sheets, type the first two Tuesday dates, select both, and drag the fill handle down. The whole season takes a minute or two.
  • To cancel a practice, delete its row and it disappears from subscribed calendars. If you'd rather keep the slot visible, retitle it “CANCELED — practice” instead.
  • When sunset pushes practice earlier in October, edit the Time cells for those rows and leave everything else alone.
  • A makeup practice with a TBD date isn't guessed or dropped. The row is held in feed health until you fill in a real date, and then it shows up on everyone's calendar.

Questions

We practice every Tuesday and Thursday. Can I just set it to repeat?
No. CalRelay doesn't do recurrence rules; you write one row per practice. Seasons drift enough that this ends up simpler. A rainout or an earlier start is a normal edit to one row instead of an exception on a repeat rule, and the fill handle in Sheets generates a season of dates quickly.
How do parents find out practice is canceled?
Edit the sheet, either by deleting the row or marking it canceled. The feed updates from your sheet automatically, hourly on the free plan and every 15 minutes on Pro. For a change less than an hour before practice, send the group text too. The calendar is the schedule of record, not an emergency broadcast.
Can practices and games live in the same feed?
Yes. Same sheet, same columns, one feed. On the free plan (1 feed, up to 50 events) that's the setup that makes sense, and parents only have to subscribe to one link.
What can I use as the source besides a Google Sheet?
A Google Sheet share link, a CSV URL, or a pasted table. If your schedule lives in Excel today, export it to CSV or paste the rows in. Direct Excel-file sync isn't supported yet.

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