Import the roster from a CSV and export the published schedule
Updated October 10, 2026 · 3 min read
Fill in Capillary's roster template with each person's first_name, last_name, email and role (MD, DO, NP, PA or RN). Upload it, then review every row before anything saves. Importing the same people again adds no duplicates. To get the schedule out, use Export CSV on a published month. You get one row per shift.
The roster template
On the Clinicians tab, Download template saves ed-roster-template.csv. It holds only the header row. Add one row under it for each person.
| Row | A | B | C | D |
|---|---|---|---|---|
| 1 | first_name | last_name | role | |
| 2 | Ava | Reyes | ava.reyes@example.org | MD |
| 3 | Ben | Okoro | ben.okoro@example.org | DO |
| 4 | Cara | Lind | cara.lind@example.org | PA |
| 5 | Dev | Shah | dev.shah@example.org | NP |
| 6 | Eli | Brooks | eli.brooks@example.org | RN |
- Keep the header row exactly as the template writes it, in lowercase. The columns can come in any order. A file with any other column is refused.
- Write each role in capitals, exactly as MD, DO, NP, PA or RN. MD and DO fill physician shifts. NP and PA fill APP shifts. RN fills nurse shifts.
- Every person needs an email address. Each address can appear only once in the file. Capital letters in an address don't matter.
- First and last names can be up to 100 characters each.
- Save the file as UTF-8 CSV. Names with accents, such as José, come through only from a UTF-8 file.
- One file holds up to 200 people and up to 100 KB.
Review every row before it saves
- 1
Choose the file
Under Import a roster, choose your CSV. Capillary checks it and lists every person with their role and email. Nothing is saved yet.
- 2
Fix what it flags
A problem stops the review with a message. For a bad name, email or role, the message gives the row, as in "Check names, email and the MD, DO, NP, PA or RN role on row 4." Row 4 is the third person.
- 3
Confirm
Confirm import saves everyone you reviewed. The page then shows "Roster imported."
Importing the same people again
Capillary matches each row to the roster by email address. A row with the same name and role as the person already there changes nothing and adds no duplicate. A row with a new email address adds a person.
A row whose email matches someone with a different name or role stops the whole import. So does a row for someone marked inactive. Nothing from the file is saved, including the rows above it.
| Row in the new file | On the roster | Result |
|---|---|---|
| Ava Reyes, MD | Ava Reyes, MD | Matches, no change |
| Noor Haddad, RN | Nobody with her email | New person |
| Benjamin Okoro, DO | Ben Okoro, DO | Different first name. The import stops. |
The review lists all three rows. When you confirm, the import stops with "ben.okoro@example.org already exists with different details or inactive status." Change Benjamin to Ben, as the Clinicians tab shows him, then import the file again.
Exporting a published month
On the Published schedule tab, Export CSV saves the month you're viewing. For December 2026 the file is ed-schedule-2026-12.csv. If you choose physicians, APPs or nurses, the file holds only that group. Its name then ends in -physician, -app or -nurse, as in ed-schedule-2026-12-nurse.csv.
| Column | What it holds | Example |
|---|---|---|
| shift | The shift's name | Night shift |
| role | Physician, app or nurse | physician |
| start | Start, in the department's local date and time | 2026-12-01T23:00:00 |
| end | End, in the department's local date and time | 2026-12-02T07:00:00 |
| timezone | The department's time zone | America/New_York |
| clinician | The person working the shift | Jordan Lee |
A night shift's end carries the next day's date.
Clinicians export their own month from My schedule with Export my shifts. Their file, such as my-shifts-2026-12.csv, has the same columns without clinician.
A value that starts with =, +, - or @ gets an apostrophe in front of it. That way a spreadsheet reads it as text instead of running it as a formula.
What it does not do yet
- An import can't change a name or a role, or remove anyone. The Clinicians tab has no edit button either.
- Only the roster comes in by CSV. You can't import shifts or a past schedule.
- A department's roster holds up to 200 people in all, counting physicians, APPs and nurses together. An import that would take it past 200 saves nothing.
- Export covers published months only.
- It reads and writes CSV files only, not Excel workbooks.
Try it
In the demo, open a sample month and choose Export CSV to see the file. It needs no account. To import your own roster, sign in or create an account, set up your department and open the Clinicians tab.
Common questions
- Can I import a roster exported from another scheduling app?
- Yes, once you rearrange it into the template's four columns.
- What if two people share an email address?
- The file is refused with "Each email must appear only once." Give each person their own address.
- Why does a value in my export start with an apostrophe?
- The value began with =, +, - or @. Capillary adds the apostrophe so a spreadsheet treats it as text.
Build your ED schedule with rest checked on every save.
Capillary checks role, overlapping shifts and rest, including shifts at other sites, before anything is published or traded.