Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.jitera.ai/llms.txt

Use this file to discover all available pages before exploring further.

Bulk Member Import lets you reconcile your entire organization’s member list, team assignments, and roles by uploading one CSV. Every existing member and team is reconciled against the file: rows you add create new invitations, rows you change update existing members, and anyone or any team missing from the file is removed.
Bulk Member Import is a replace operation, not a merge. After a successful import, the organization’s membership matches the uploaded file exactly. Any active member, team, or team assignment that is not present in the file is deactivated. Always start from the current member list export.
All values shown on this page are examples. Replace them with the actual values from your organization.

Prerequisites

  • A Jitera organization on the Enterprise plan (Bulk Member Import is an Enterprise-only feature)
  • Owner or Admin role in that organization
  • A CSV file that follows the format below, ideally produced by downloading the current member list first

Step 1: Open the Bulk Member Import page

Go to Organization Settings > Members and click Bulk Member Import. Members page with Bulk Member Import entry The page is split into three sections:
SectionPurpose
Current member listDownload a CSV snapshot of your current active members, pending invites, and team assignments
Upload areaDrop a new CSV here to reconcile the organization against it
Past importsHistory of previous imports with status, stats, and downloadable error reports
Bulk Member Import page sections

Step 2: Download the current member list

Click Download CSV in the Current member list card. Use the downloaded file as your starting template and edit it. Current member list card with Download CSV button Starting from the current list is the safest workflow. It guarantees every existing member and team appears in the file, so you only need to add, change, or remove rows for the differences you intend.
Always download a fresh CSV before each upload. After a successful import, your organization’s state may include new teams, new pending invitations, or role changes. A stale CSV from before the last import will omit those rows, and the next upload would deactivate them — typically surfacing as last_owner_team or last_owner_company errors.

Step 3: Edit the CSV

The CSV uses one row per team membership. A user who belongs to two teams has two rows with the same email.

Columns

ColumnRequiredDescription
emailYesThe user’s email address
teamYesTeam name. If the team does not exist yet, it is created during the import
team_roleYesRole within this team. One of owner, admin, member
organization_roleNoRole at the organization level. One of owner, admin, member. If omitted, defaults to member. Must be consistent across all rows for the same email

Example

email,organization_role,team,team_role
alice@example.com,owner,Platform,owner
alice@example.com,owner,Mobile,member
bob@example.com,admin,Platform,admin
carol@example.com,member,Mobile,member
In this example, Alice belongs to two teams with different team roles, and her organization role is owner (consistent on both rows).

Limits and rules

ConstraintValue
File format.csv
Maximum file size10 MB
Maximum data rows30 000
Maximum team name length50 characters
Email formatStandard email (name@domain.tld)
organization_role consistencyMust be identical across all rows that share the same email
If you do not want the import to deactivate certain protected members (for example, your own account or another organization owner), keep their rows in the file unchanged. Anyone in the current member list who is not present in the uploaded file is removed.

Step 4: Upload the file

Drop the CSV onto the upload area, or click it to open a file picker. Upload dropzone area A confirmation dialog opens. Confirmation dialog asking to replace members Review the filename and click Replace to start the import. Click Cancel to abort.

Step 5: Watch the status banner

Once the upload starts, a status banner appears at the top of the page and updates in real time.

Processing

The import is queued and being applied. Imports usually finish in a few minutes. Processing status banner

Completed

The import succeeded. The banner shows a per-statistic summary. Completed status banner with stats
StatMeaning
Members createdNew pending invitations created for rows whose email did not exist yet
Members updatedExisting members whose name, organization role, or team assignments changed
Members deactivatedMembers in the current list who were missing from the uploaded file
Teams createdTeams referenced in the file that did not exist before
Protected rows skippedRows that targeted protected accounts (for example, the row for your own owner account, which cannot be self-demoted)

Failed

The import did not run, or ran partially before being rolled back. The banner shows the cause. Failed status banner with row error count If the failure is per-row, the banner shows a count of row errors and a Download errors CSV button. The errors CSV is your original file with extra columns describing each problematic row — fix those rows and re-upload. If the failure is plan-level (for example, the import would exceed your seat limit), the banner shows the specific message. No partial changes are kept on a failed import.

Step 6: Review past imports

The Past imports section lists every import attempt, newest first. Past imports list Each row shows:
  • Filename and uploader
  • Status badge (Processing, Completed, Failed)
  • Created / updated / deactivated stats for completed imports
  • Row error count for failed imports, with a Download errors CSV link to retrieve the error report after the fact

CSV format

Header row

The file must start with a header row containing the required columns. Additional columns are allowed but ignored. Required, in any order: email, team, team_role. Optional: organization_role.

Row semantics

ActionHow to express it in the file
Add a new memberAdd a row with a new email
Move a member to a new teamAdd a row with the existing email and the new team name
Remove a member from a teamOmit the (email, team) row that previously existed
Change a team roleUpdate team_role on the existing row
Change an organization roleUpdate organization_role consistently on every row for that email
Deactivate a memberOmit all rows for that email
Delete a teamOmit all rows that reference that team
Create a teamReference a new team name in any row

Troubleshooting

The page surfaces import problems in two places: the upload area rejects file-level problems before the import is queued, and the status banner surfaces row-level and plan-level problems after the file is uploaded.

File too large

Error: “The file exceeds 10 MB. Please reduce the file size and try again.” Compress, deduplicate, or split your file. The 10 MB cap is on the raw file size.

File is not a CSV

Error: “The file is not a CSV. Save the file as .csv and try again.” Re-save the file from your spreadsheet tool with the .csv extension. Excel and Google Sheets both have a “Save as CSV” option.

File is empty / no header row

Error: “The file is empty.” or “The file has no header row.” The file must contain a header row and at least one data row.

Required column is missing

Error: “Required column is missing: <column>.” Add the missing column to the header row. Required columns are email, team, and team_role.

Duplicate column

Error: “Duplicate column found: <column>.” Remove the duplicate column from the header row.

Row has the wrong number of columns

Error: “Row <n> has the wrong number of columns.” Every data row must have the same number of fields as the header row. Check for unescaped commas inside cells — wrap such cells in double quotes.

Cell is too long

Error: “Row <n>, column <column>: cell is too long.” The cell exceeds the maximum length for that column. Trim the value and re-upload.

Too many rows

Error: “The file has more than <max> data rows.” Split the import into multiple smaller files of up to 30 000 rows each, or remove rows that are not actually changing.

Seat limit would be exceeded

Error: “Your plan allows <n> seats, but this import would create <m> new members. Remove new-member rows from the file or upgrade your plan.” Either remove some new-member rows from the file, or upgrade your plan to allow more seats before re-uploading.

Last owner of the organization

Error: “This import would leave the organization with no owner. Promote another member to owner before re-uploading.” Every organization must keep at least one Owner. Add an organization_role: owner row before re-uploading.

Last owner of a team

Error: “This import would leave team <team> with no owner. Promote another member to team owner before re-uploading.” Every team must keep at least one Owner. Add a team_role: owner row for that team before re-uploading.

Another import is already running

Error: “Another import is being applied. Please wait for it to finish before uploading again.” Only one import can run at a time per organization. Wait for the in-progress import to finish, then upload again.

Encoding error on download

Error: “The original file could not be decoded.” The original file is preserved on import for later download. If it was uploaded with an encoding the system cannot decode (rare; non-UTF-8 with no BOM), download is unavailable. Re-upload the file in UTF-8 if you need to recover it.

Reference: column summary

ColumnRequiredAllowed valuesExample
emailYesStandard email addressalice@example.com
teamYesTeam name, up to 50 charactersPlatform
team_roleYesowner, admin, membermember
organization_roleNoowner, admin, member (default member); must be the same across rows for the same emailowner