Help center/Getting started

Moving your schedule off another system

What the importer reads, and what it refuses.

For owners, admins and schedulers

Read the transcript

Most clinics arrive with next month already planned in a spreadsheet. In this video you'll bring that rota straight in: upload the file, check exactly what was read, correct anything it couldn't know, and import it, with your team and their shifts, in one pass. On an empty schedule, press I have it in a spreadsheet. Once you have shifts, the same importer sits behind the Import schedule button above the grid. The importer reads three shapes of file. A rota grid, with names down the side, dates across the top, and a code or a time in each cell. One row per shift, which is what most scheduling systems export: a name or an email, a date, and the shift. Or a rotation by team, like Pitman or Southern Swing, where each row is a team on a shift and you then say who is on each team. Files from our free generators and templates go in as they are. Here's Riverside's rota, saved from Excel. Choose the file, or drop it onto the box. It's read right here in your browser and shown in the box below, so you can see exactly what was read. Nothing has been saved yet. This file has a few things worth watching: a code table at the bottom that says what D and N mean, an E code it doesn't explain, PTO and OFF days, a totals row, and one row somebody forgot to put a name on. Press Check it. It read the file as a grid of five people over seven days. The totals row was left out on its own. It also worked out that the dates are written month first. If it ever gets that wrong, change it here. Every code it found is listed with how many cells use it. D and N take their hours from the code table in the file. E had no times anywhere, so it offers the usual hours and says check them. At Riverside an evening shift runs eleven to eleven, so set E to start at 11 AM and end at 11 PM. Times are your site's own clock, and an end before the start simply runs overnight. PTO and OFF aren't shifts, so they're skipped and counted. The 12 is a stray number with no times, so it stays unticked and those cells are left out rather than guessed. Tick a code and give it times if you do want it imported. The line under the table adds up everything left out. Rows it can't read are listed by line and column, with what's wrong. Line 7 has shifts but no name, so there's nobody to put on them. The importer refuses rather than guesses. The same goes for two people with the same name: only an email can tell them apart, so a file with names alone stops and says so, instead of picking one. These five names aren't on your team yet. The tick, on by default, adds them as names only, and nobody is emailed. Read this list before you import: a misspelled name would become a second person. Untick it, and those rows are reported instead. Every shift is for a role, so choose one for anyone the file doesn't give one. This account has no roles yet, so choose A new role, and name it RN. You changed an answer, so press Update the counts. Now it says how many assignments are ready, for how many people, and how many shifts it will create. Press Import. Every row goes through the same checks as an assignment you make by hand: licences, rest, overlaps and time off. If the rules had refused any row, it would be listed first, with the reason, and never forced through. Underneath, every assignment that landed is listed by line, person and shift, so you can check it against the file. The new role and the five new people are already on your team. Press Go to the schedule. The imported week is there, with your people on their shifts, as a draft for you to check and then publish. That's your rota moved across: uploaded, checked line by line, and imported with your team. Next, check the week on the grid and publish it, so your staff can see their shifts. There's a video on publishing in the help center.

Filmed in the product on October 24, 2026. All video tutorials

Upload the rota you already have

Upload the spreadsheet (Excel, CSV and the rest) or paste it. You get a preview of exactly what would be created before anything is written.

The usual rota shape works as it is: names down the side, dates across, a code or a time in each cell (D, N, 07:00-19:00). Codes take their times from a Code / Start / End table if the file has one, then from your own shift types, and every code found is listed with its count so you can correct the hours or skip it. PTO, OFF and blank cells are skipped and counted. Totals, coverage rows and example rows are left out.

So does one row per shift, the shape most scheduling systems export: a name, email or first and last name columns, a Date column or a combined start cell like 2026-08-24 07:00, and a shift code or explicit times. A column called Area is read as the unit. The CSV from the free shift schedule generator and the free templates read as they are too.

A rotation by team reads too: the 12-hour (Pitman) and round-the-clock (Southern Swing) templates (Date, Team, Shift, Starts, Ends) and the CSV from the free rotating shift generator (Pitman, DuPont, Southern Swing). Each row is a team on a shift, so the preview asks who is on each team, filled in from the template's Team members block, or from a team name that is a list of people, for you to check. Everyone on a team works every shift that team has. A team with nobody on it still gets its shifts, created open so the gap shows, and the preview says how many.

It refuses rather than guesses

Every row it cannot read is listed by line and column with the offending value, and nothing is written until you have seen that list. A guessed row here would put a real nurse on a real shift she was never planned for.

Two people with the same name is the case worth knowing about: only an email can tell them apart, so a file with names alone will stop and say so rather than pick one.

People who are not on your team yet

Names the importer does not recognise are listed by name, with a tick (on by default) to add them and a role to give them. Untick it and those rows are reported instead. Read the list before you import: a misspelt name would otherwise become a second person.

In the app this lives at /app/schedule/import.

More on getting started

Not what you needed? Email helen@medicalstaffscheduling.com.

Already a customer? Sign in. Not yet? Open the live demo or start a free trial.