Skip to content

Free referee scheduling spreadsheet template

Three CSV files you can open in Excel, Numbers or Google Sheets. The games sheet has one row per position, so you can filter for open slots.

  • No email address required
  • Excel, Numbers or Google Sheets
  • Yours to change

Three sheets, three files.

Separate CSV files rather than one workbook, because every spreadsheet program opens CSV, and so does most scheduling software if you move later.

  • Officials

    CSV

    Your pool: who you can assign, how to reach them, and which channel they actually answer on.

    5 columns · 4 example rows to overwrite

    Matches Ref Grid’s import columns

    Download officials
  • Availability

    CSV

    What each official has told you about specific dates, with the date they told you.

    7 columns · 4 example rows to overwrite

    Download availability
  • Games & assignments

    CSV

    The schedule, one row per position, with who has it and whether they have confirmed.

    14 columns · 4 example rows to overwrite

    Download games & assignments

Published August 27, 2026

How the template is set up

Many referee scheduling spreadsheets have one row per game and a column for each official. That makes it hard to answer the question you need on a Thursday: what is still open?You can’t easily filter, sort or count empty cells spread across columns.

So the games sheet here has one row per position. A three-official game is three rows. An unfilled position is a row with an empty official_name and assignment_status set to open— which means “show me everything still open next Saturday” is one filter.

Availability and contact details get their own sheets because they change on a different schedule from the game list.

Sheet 1 — Officials

Your pool: who you can assign, how to reach them, and which channel they actually answer on.

Columns in refgrid-officials-template.csv
ColumnWhat goes in it
namerequiredThe official’s full name. One row per person.
emailLeave blank if you only have a phone number.
phoneA mobile number that can receive texts. Any common format works.
preferred_channelrequiredsms, email, or both — the channel this person actually reads.
notesGrade, certification, travel radius, age groups — whatever you sort by.

Compatible with Ref Grid’s import format

These five column names, in this order, are the ones Ref Grid’s officials CSV import reads — name and preferred_channel are the two it requires, and preferred_channel must be sms, email or both. So a roster you build here is already in the shape Ref Grid reads, rather than something you would have to reshape later.

Why preferred channel is a required column

Some officials read email within the hour and ignore texts, and others are the reverse. Recording which channel each one answers on means assignments go where they will be read.

Sheet 2 — Availability

What each official has told you about specific dates, with the date they told you.

Columns in refgrid-availability-template.csv
ColumnWhat goes in it
official_namerequiredMust match the name on the officials sheet exactly.
daterequiredYYYY-MM-DD. One row per date.
statusrequiredavailable or unavailable. No row at all means they have not said.
earliest_startBlank means any time that day.
latest_endBlank means any time that day.
notesThe reason, if it matters — travel, another league, a wedding.
updated_onWhen they told you. This is what tells you whether the row is stale.

This one is yours, not ours

Unlike the officials sheet, these columns match nothing in Ref Grid. Ref Grid stores general preferences, not dates: officials set the days of the week, times of day and divisions they prefer from their own link. Nothing imports this sheet, so change its columns however you like.

The convention that makes this sheet work

No row means they haven’t told you.Treat that as unknown, not as “available”.

  • One row per official per date they have said something about.
  • status is available or unavailable. Anything else goes in notes.
  • Leave earliest_start and latest_end blank unless they gave you a time. A blank means “any time that day”.
  • updated_on is the date they told you, not the date you typed it. It shows you which answers are old.

If you are collecting this for the first time, how to collect referee availability before the season covers what to ask for and how to keep it current.

Sheet 3 — Games & assignments

The schedule, one row per position, with who has it and whether they have confirmed.

Columns in refgrid-assignments-template.csv
ColumnWhat goes in it
daterequiredYYYY-MM-DD.
start_timerequiredKickoff or first pitch. 9:00 AM or 09:00.
end_timeOptional. Useful for spotting back-to-back assignments.
locationrequiredField, court, gym or rink — specific enough to drive to.
divisionAge group or level. This is what drives who is eligible.
home_teamrequired—
away_teamrequired—
positionrequiredCenter, AR1, AR2, plate, base, referee 1 — whatever your sport calls it.
official_nameBlank means the position is open. This is the column you filter.
assignment_statusrequiredopen, offered, confirmed, or declined.
notified_onWhen you sent it. Blank plus “offered” means you have not actually sent it.
confirmed_onWhen they replied yes. This is the column you chase.
feeOptional. Keep it here and your pay run is a pivot table.
notesField change, doubleheader, anything the official needs to know.

The two columns people leave out

notified_on and confirmed_on. Together they give you your follow-up list: filter for rows where notified_on is filled and confirmed_on is empty.

The game columns — date, start_time, end_time, location, division, home_team, away_team — use the same names as Ref Grid’s games import. The assignment columns after them do not have an equivalent: Ref Grid tracks assignment state itself rather than importing it.

Two related sheets live with the guides they belong to: a pay sheet with approval and payment columns in how to pay referees, and a schedule with game numbers for bracket games in how to schedule referees for a tournament.

Getting it running

  • Open each file, delete the example rows, and keep the header row exactly as it is.
  • Build the officials sheet first. The other sheets refer to official_name, and a name typed two ways counts as two people in any filter.
  • Enter dates as YYYY-MM-DD, which sorts correctly even when a program treats it as text.
  • If you use Google Sheets, import each CSV as its own sheet in one spreadsheet and you can look names up across them.
  • Keep one copy. With two, it’s hard to tell which is current.

A note on formulas

Values starting with =, +, - or @ are executed as formulas when a CSV is opened in Excel or Sheets. These files escape those so they open as text — worth knowing if you later export from somewhere else and the phone numbers come out strange.

When the spreadsheet stops being the right tool

Plenty of organizations run a season on exactly this. With a small pool, a schedule that rarely moves and one assignor, a spreadsheet is fast, free and under your control.

What it can’t do is send anything. If eleven assignments have no reply, you still text eleven people, read eleven replies, and type eleven dates into confirmed_on.

For when a spreadsheet is still the better choice, see referee scheduling software vs. spreadsheets.