If you need to add more than a handful of staff accounts at once — opening a new location, onboarding a large team — you don't have to create them one at a time. Bulk Add Users lets you upload a CSV file and create many users in a single import, each with their own name, email, phone number, function, and permissions.
Where to find it
- From the Admin dashboard, go to Settings > Users.
- Click Bulk Add Users, next to the existing Add a User button.
To edit existing users, click Export CSV to download a file containing all current users. Make edits in the CSV file, then click Bulk Add Users to upload the edited file.
Chain admins have an additional option to Export entire chain, which downloads a list of users for all locations in a chain.
Importing users
- In the Bulk Add Users window, click Download CSV Template to get a spreadsheet with the correct columns already set up.
- Fill in one row per person: full name, email, phone number, function, and a Yes/No column for each permission you want to grant.
- Upload your completed file by clicking Choose CSV File, or simply drag and drop the file onto the upload area.
- Review the preview table. Each row is marked Ready or flagged with a specific error (see below) — only the rows marked Ready will be imported.
- Click Import [N] Users.
- Review the results summary, which shows how many users were created successfully and lists an error message for any row that failed (for example, a duplicate email).
- Click Done. New users will appear in your Users list right away.
| Full Name | Function | Status | |
|---|---|---|---|
| Maria Gomez | maria@example.com | Budtender | Ready |
| — | j.smith@example.com | Manager | Error Missing full name |
| Alex Chen | alexchen[at]example | Budtender | Error Invalid email address |
| Priya Patel | priya@example.com | Manager | Ready |
CSV format
Your file's columns are matched by their header names, so you can reorder or delete columns you don't need — but each row still needs the following to import successfully:
| Column | Requirement |
|---|---|
| Full Name | Required |
| Required, must be a valid email address, and not already in use | |
| Phone | Optional — automatically formatted to match your account's standard format |
| Function | Required, must match one of your account's recognized staff functions/roles |
| Permissions (Yes/No columns) | At least one permission must be set to Yes |
Which location new users are added to
Users created through a bulk import are added to the dispensary you're currently viewing — the same default used by the single-user Add a User flow. Assigning a user to multiple locations isn't part of the bulk import; you can still do that afterward from that user's individual edit screen.
Importing large lists
If your CSV has more rows than fit in a single import, the tool automatically splits it into smaller batches and submits them one after another, showing progress as it goes. If a batch fails partway through, the import stops there and tells you how many users were already created successfully before the error, so you know exactly where to pick up.
Frequently asked questions
What happens if one row in my CSV has an error?
Only that row is skipped. Every other valid row in your file is still imported normally — one bad row (like a duplicate email) won't stop the rest of your team from being added.
Do new users get a welcome email?
Yes, the same as users created one at a time through Add a User.
Can I use the template to set up different permissions for different people?
Yes — each row is its own user with its own function and its own set of permissions, so you can mix roles freely within a single CSV.
Can I assign users to more than one location during a bulk import?
Not directly. Bulk-imported users are created at the dispensary you're currently viewing. If someone needs access to additional locations, add that afterward from their individual user edit screen.
Is there a limit to how many users I can import at once?
You can upload a CSV of any size — larger files are automatically split into smaller batches and submitted in sequence, so you don't need to split the file yourself.