---
title: "Importing your schedule from a CSV file"
description: "How to bring your existing schedule into the Ice Scheduler from a spreadsheet — supported columns, matching rules, conflicts, plan limits and undo."
category: "Ice Scheduler"
published: "2026-08-26 12:02:35"
updated: "2026-08-26 16:02:35"
url: "https://app.hockeyshare.com/support/kb/scheduler/importing-your-schedule-from-csv"
---

# Importing your schedule from a CSV file

If you already keep your ice schedule in a spreadsheet, you can bring it into the Ice Scheduler in one pass instead of typing every booking by hand. Open your organization's schedule grid, click the **More** menu, and choose **Import**. This option is available to editors, admins and owners.

## The three steps

Importing walks you through three steps: **Upload**, **Review**, and **Result**. Nothing is saved to your schedule until you click Import on the Review step — you can always back out before then.

### 1. Upload

Choose a `.csv` file. Files can be up to 5 MB and 5,000 rows. If you're not sure how to format your file, click **Download CSV template** on this step — it gives you the 16 supported column headers plus two sample rows to copy from.

Only **Start Date** is required. Every other column is optional. The full list of supported columns is:

- Booking
- Status
- FIC Confirmed
- Day
- Start Date
- Start Time
- End Time
- Facility
- Rink
- Program
- Team / Group
- Notes
- Staff / Coaches
- Dur (min)
- Ice Rate
- Ice Cost

Header matching is forgiving — it ignores case and punctuation and understands common aliases. For example, *Arena*, *Venue* or *Location* all map to Facility; *Sheet* or *Ice Sheet* maps to Rink; *Team*, *Teams* or *Group* maps to Team / Group; *Coach*, *Coaches* or *Instructor* maps to Staff; and similar aliases exist for Date, Start/End time, Rate and Cost columns. Any column the importer doesn't recognize is simply ignored, and it's listed on the Review step so you can double check nothing important was skipped.

### Multiple teams and staff in one cell

Separate multiple teams in a single cell with a semicolon — commas and slashes are kept as part of a team's name, so a cell like `12U A/AA` stays as one team. For staff, you can separate names with a semicolon, a slash, or a new line within the cell; commas are left alone, so `Smith, J.` is read as one person.

### Dates and times

Dates can be written in common formats such as `2026-09-14`, `9/14/2026` or `Sep 14 2026`. Times accept formats like `18:00`, `6:00 PM`, `6pm`, or `1800`. If the End Time is earlier than the Start Time, the entry is treated as running past midnight.

The **Day** and **Ice Cost** columns are checked rather than trusted at face value. The day of the week is always derived from the date you provide — if your Day column disagrees, it's flagged as a warning but doesn't stop the import. Ice Cost is always calculated as rate × minutes; if a row has an Ice Cost but no Ice Rate, the cost is left blank and the row is flagged.

## 2. Review

Before you see the row-by-row preview, any Facilities, Rinks, Programs, Teams or Statuses in your file that don't already exist in your organization are listed in a resolution box at the top. For each one you choose what to do: **Create new** (the default), **Use existing**, **Restore deleted** (if you'd previously removed it), or **Skip these rows**. If something close already exists, you'll see a "Use '…' instead" suggestion.

Below that, the Review step shows summary counts: Total, New, Updates, Invalid, Repeats, Conflicts, Duplicate bookings, and Warnings. Under the counts is a full row table (the first 1,000 rows for larger files) with a checkbox per row, plus toggles to **Show only rows with problems** and **Exclude all invalid rows**.

Two terms worth knowing: a **Repeat** is the exact same booking appearing twice in your file — only the first copy is imported. A **Duplicate booking** is a row that matches the same time slot, program and teams as another row in the file or an entry that already exists in your schedule. A **Conflict** is any other overlap on the same facility and rink on the same date. Conflicts and duplicate bookings are shown as warnings — they won't block your import, but they're worth a look before you proceed.

## 3. Result

Once you click Import, entries are created (or updated) and you land on the Result screen with a summary of what happened, along with an **Undo this import** option (see below).

## Re-importing an updated file

If you export your schedule, edit it, and re-import it, matching rows update the existing entries instead of creating duplicates. Rows are matched on the combination of Booking reference, date, start time, facility, rink, program and teams — so it's worth including a Booking reference in every export/import cycle. If you rename a facility, rink or program, or change the date or start time between exports, that row will import as a brand-new entry rather than update the old one. A row that matches an entry you had previously deleted is skipped, not restored.

A blank cell in a supported column clears that field on update. A column that's entirely missing from the file is left untouched, so you can safely re-import a file with fewer columns than your original export without wiping data you didn't include.

## Plan limits

On the free plan, your account is limited to 25 schedule entries in total across every organization you own. The importer only counts rows that would actually create new entries against that limit, and it checks the whole batch before writing anything — if importing would push you over the cap, the import is stopped before any changes are made, with a message telling you the numbers ("Import stopped — plan limit reached…").

## Large files

Big imports are processed in batches of 500 rows with a progress bar. If you need to stop partway through, Cancel becomes **Stop after this batch** — it finishes the batch already in progress rather than leaving things half-written. If a run stops early for any reason, you can safely re-upload the same file; nothing gets duplicated.

## Undo

If your import created any entries, an **Undo this import** button appears on the Result screen. It's only available from that screen — if you close the window, it's gone. Undo removes every entry that this specific run created, as long as nobody has edited it since; entries you or a teammate have since changed are left alone, as are pre-existing entries the import only updated. Any facilities, programs or teams the import created along the way are kept. Removed entries are soft-deleted, so if you undo too much you can still restore individual entries afterward.