Getting your whole roster in is the first real step after creating a workspace. It takes minutes, not an afternoon.
Where
Personnel → Import. Paste rows or upload a CSV. A preview shows exactly what will be created or updated before anything is saved.
CSV format
One row per person. Recognized columns (header row required):
- name — display name
- email — used for sign-in invites (optional; see below if you don't have emails)
- section — e.g. "First Violins", "Percussion" (created if new)
- instrument — optional, free text
Extra columns are ignored, so an export from your existing spreadsheet usually works as-is.
What gets deduped
Import is idempotent by email: a person who already exists is updated, never duplicated. You can safely re-run an import after fixing a few rows — you won't get doubles.
How members get in
If email is configured (Resend), each new member is automatically emailed a one-tap sign-in link.
If email isn't set up yet, use access codes instead — no email required:
- One member: Personnel → the member's row → Access code.
- The whole roster at once: Members settings → Bulk access codes (CSV). This generates a one-time code for every pending member and downloads a CSV (name · email · section · instrument · code · expires). Share it however you like — print, hand out, or message. Each member types their code into the Access code field on the sign-in screen.
Codes are single-use and expire (default 14 days). Regenerating replaces a member's previous unused code.
If some rows fail
The preview flags rows it can't parse (missing name, malformed email). Fix them in your source and re-import — the dedup means the good rows already imported won't double up.
Next
Once the roster is in: create a production, add its services (rehearsals + performances), and assign players. See [Getting started](/help/getting-started). Members who can't receive email → [Signing in](/help/signing-in).