Import events and rosters in bulk
Upload one CSV to create many events with their shifts already built
Upload one CSV to create a batch of events with their shifts already on the roster board, the fastest way to set up a day of action across several locations. It is the same tool and the same template as Import events in bulk, covered here from the roster side.
Imported shifts arrive published
Shifts you build on the board start as Draft, and imported shifts arrive published. They are live to volunteers the moment the import finishes, with their spots open for self-signup on each event's sign-up form.
When to import
Importing creates the events and their shifts together, in one pass, from data you already hold in a spreadsheet.
- Import when the events do not exist yet and they share a shift pattern.
- Add shifts on the board when the event already exists.
- The import never assigns anyone. Assign volunteers on the board afterwards.
Before you start
Two things have to be true of every row you import.
- Only admins get Event imports. Captains and vice-captains do not see it.
- Every group you name must already exist, because the import matches on the group's name and skips a row it cannot place.
Start from the template
Download example-event-and-shift-import.csv and fill it in. It carries every column already named and in the order the importer expects, so you never map a column by hand. The same link sits on the Event imports page under "You can use this example CSV to get started".
Dates go in as 2026-09-14 and times as 9:00AM.
What each column expects
The tables below explain the columns in that template. Use them to fill it in, not to build a spreadsheet from scratch.
Event columns, one row per event.
| Column | Required | Notes |
|---|---|---|
| Group name | Yes | Matches an existing group, in any casing |
| Event name | Yes | |
| Status | Yes | Public or Private |
| Start date, End date | Yes | |
| Start time, End time | Yes | |
| Time zone | Yes | Also applied to the shift times |
| Event type | No | Falls back to your default event type |
| Venue name, Address 1, City / suburb, State, Postcode / zip | No | |
| Latitude, Longitude | No | |
| Tags | No | Comma-separated |
| Page content | No | Accepts HTML |
| Enable RSVP autoresponse | No | Uses the event type's own subject and body |
| Contact name, Contact email, Contact phone | No |
Shift columns repeat in numbered sets of five, so Shift 2 role name opens the second shift, and ten sets is the default with the exact number set per site. Check how far the numbering runs when you map your columns.
| Column | Notes |
|---|---|
| Shift 1 role name | Up to 100 characters |
| Shift 1 date | Can differ from the event's date |
| Shift 1 start time | |
| Shift 1 end time | Must be after the start time |
| Shift 1 number of volunteers | A whole number, and blank gives the shift two spots |
Leave a whole set empty for an event with fewer shifts, and know that a set missing a role name, a date or either time is dropped without an error.
Run the import
Open the import tool
In the left-hand menu, go to Imports > Event imports. Grab the template from here if you have not already.
Upload your file
Click Choose file, then upload a CSV or paste your spreadsheet data straight in.
Select the header row
Pick the row holding your column names from the preview.
Map your columns
Match each column in your file to the SupporterBase field beside it.
Fix what is flagged
Rows with a problem, such as a group name that matches nothing, are highlighted for you to correct.
Submit
Click Submit. The page confirms the file is importing, and the events take a few minutes to appear.
What the import creates
Each row becomes an approved event with a roster attached, and the shifts on it are already Published.
- No publish step is needed and no email goes out, because the import assigns nobody.
- Every imported shift takes self-signup, so its spots appear on the event's sign-up form. There is no column for Staff only.
- The number of volunteers becomes that many empty spots on the shift.
Check the roster afterwards
Open Roster & shifts on one imported event and read it against the row that made it.
- Count the shifts against the sets you filled in, to catch any the import dropped.
- Check the spot count on each shift, since a blank count becomes two spots.
- Set any shift to Staff only that volunteers should not claim.
Editing an imported shift behaves like editing any published shift: the change stages as Changes to publish, volunteers keep seeing the imported version, and it reaches them when you publish the roster.
Import two rows first
Run a couple of rows, open the roster and check the shifts landed the way you meant.