Importing Opportunities
When a season’s worth of shifts already lives in a spreadsheet, import it instead of typing each one. Every row becomes a new opportunity in the season you choose.
Preparing the spreadsheet
Section titled “Preparing the spreadsheet”- Go to Admin > Volunteer and click Import CSV
- Click Download CSV template (or Open in Google Sheets when offered)
- Fill in one opportunity per row and download it as CSV
The template columns are:
| Column | Notes |
|---|---|
title |
Required |
starts_at |
Required; e.g. 2026-06-15 17:00, in club time |
ends_at |
Optional; must be after the start |
description, location, category |
Optional text |
max_signups |
Capacity; leave blank for an uncapped interest list |
allow_waitlist |
yes/no (also accepts y, true, 1) |
hours_credit |
A number such as 2 or 2.5 |
skill_level |
1–5, or easy, light, moderate, difficult, hard |
Running the import
Section titled “Running the import”- Upload CSV — choose the Season for all rows, tick Publish all rows immediately if you don’t want them imported as drafts, then click Choose CSV file
- Map CSV columns — each column’s header is matched to a field automatically (“Spots” maps to capacity, “Difficulty” to skill level, and so on). Fix any mismatch in the Maps to dropdown; Title and Start time must be mapped. Click Review changes
- Review changes — check the Will create table and the badges (N to create, N errors, N warnings). Warnings flag rows that duplicate another row in the file or an existing opportunity with the same title and start time in that season; they don’t block the import. Errors (a missing title, an unparseable time, an end before the start) do — tick Import the N valid rows and skip N invalid rows to proceed without them
- Click Import N opportunities
The results screen shows Created and Failed counts. Click View all opportunities or Import another.