Bulk user upload format
To add many users at once, super_admins use the Bulk Upload feature at Users → Bulk upload. Wisteria provides a template .xlsx to fill in.
The template
Download from Users → Bulk upload → Download template. The file has columns:
| Column | Required | Type | Notes |
|---|---|---|---|
email | Yes | text | Must be unique across Wisteria (not just your workspace) |
full_name | Yes | text | The name on certificates |
role | No | text | Defaults to learner if blank |
department | Recommended | text | Must match an existing department exactly |
Fill in one row per user. Save as .xlsx. Upload.
Allowed values for role
Exactly one of:
super_admincontent_managertrainerauditorlearner
Wisteria validates the column. Typos or non-matching values fail the row.
Allowed values for department
Must match an existing department in your workspace exactly — case-sensitive, whitespace-sensitive.
If you spell “operations” and the department is “Operations”, that row fails. Check your departments at Settings → Departments before uploading.
You can leave department blank for learners (they’ll have no department; no auto-assignment). For trainers, department is required (a trainer needs to be scoped somewhere).
Common validation errors
The upload page shows which rows passed validation and which failed. Common errors:
“Email already exists”
The address is already registered in some Wisteria workspace. Two cases:
- Your workspace — the user already exists; you don’t need to re-add them.
- A different workspace — they belong to a different customer. Contact support if you need to move them.
”Invalid email format”
The value doesn’t look like an email. Check for missing @, missing domain, etc.
”Department not found”
Spelling mismatch with your existing departments. Check Settings → Departments for the exact name. Common gotchas:
- Trailing space (“Operations ” ≠ “Operations”)
- Different case (“operations” ≠ “Operations”)
- Hyphen vs space (“customer-service” ≠ “Customer Service”)
Fix by aligning the spreadsheet to the department name.
”Invalid role”
Spelling mismatch. The role must be one of the five exact values listed above. Common gotchas:
- “Admin” → use
super_admin - “Manager” → use
content_manager - “Reviewer” → use
content_manager - “Teacher” → use
trainer
”Required field missing”
email or full_name is blank. Fill it in.
What happens after upload
For each valid row:
- Wisteria creates a Supabase Auth account with a randomly-generated temporary password.
- The account is linked to a
profilesrow with the specified role + department. - A welcome email is sent to the user.
Each row takes about 100ms. A 1,000-row upload takes about a minute.
What if some rows fail and some succeed
The validation runs against ALL rows first. If any row fails:
- By default — Wisteria stops the whole upload. You fix the errors and re-upload.
- With “Skip errors” checked — Wisteria processes valid rows and skips invalid ones. The summary tells you which were skipped.
Recommended: leave Skip errors unchecked. A partial upload makes the data harder to track; full validation upfront is cleaner.
How big can the file be
The page handles up to 5,000 rows per upload. For larger uploads, split into batches.
Editing users after bulk upload
Bulk upload creates new accounts; it doesn’t update existing ones. To bulk-edit existing users:
- Currently not supported in the UI. Contact support; we can do it manually.
- Roadmap: a Bulk update feature that allows changes to existing rows by email match.
Bulk-deactivating users
Currently not a bulk feature. Deactivate one at a time from the Users page (each click is fast; not a bottleneck for typical workspace sizes).
For mass deactivation (e.g. a whole department leaving), contact support — we can run a script for you.
Template field tips
- Don’t put quotes around values. Excel sometimes adds them on save; remove if present.
- Don’t merge cells. Each row is one user.
- Don’t use formulas. Save the file with values, not formulas.
- UTF-8 names are fine. Wisteria handles non-ASCII characters in names correctly.
After upload — what learners experience
Each learner gets:
- A welcome email from
noreply@getwisteria.comwith their temporary password. - On first sign-in, they’re forced to set a real password.
- They land on their dashboard with whatever courses are auto-assigned to their department.
If a learner’s department is blank and no courses are manually assigned, they sign in to an empty dashboard. That’s not broken — they just have nothing to do yet.