> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reddy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Roster Uploads

> Update your entire employee roster or add new employees in bulk with a CSV or XLSX upload

Roster uploads let you manage your whole team from a single spreadsheet. Upload a file, review exactly what will change, and apply everything in one step -- new hires, updates, and departures included.

<Warning>
  Only admins can upload rosters.
</Warning>

<Note>
  Roster uploads are part of the new Employees experience. If your Employees page does not show an **Actions** menu in the top right, your workspace is still on the legacy experience -- see [Adding New Employees](/manual/team-management/adding-employees) and use the Legacy tab.
</Note>

## Choose an Upload Mode

There are two upload flows. Both start from the **Actions** menu on the Employees page.

<Frame>
  <img src="https://mintcdn.com/reddy-376a6c19/iVImyGeTanqde7oG/manual/images/roster-actions-menu.png?fit=max&auto=format&n=iVImyGeTanqde7oG&q=85&s=bce1e301f4fbf66588a2dd0bf05851f3" alt="Actions menu on the Employees page showing Replace roster, Add employees, Update managers, Update products and courses, Download roster, and Roster history" width="1440" height="900" data-path="manual/images/roster-actions-menu.png" />
</Frame>

| Mode                 | Menu item                                       | What it does                                                                                                                                         |
| -------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| Update entire roster | **Replace roster**                              | The file becomes your complete roster. People are added, updated, and -- if they are active in Reddy but missing from the file -- archived.          |
| Add new users        | **Add employees** -> **Add multiple employees** | Only creates the new people listed in the file. Existing employees are never modified or archived, even if their row in the file differs from Reddy. |

<Tip>
  Use **Replace roster** for your regular roster sync (for example, a weekly HR export). Use **Add multiple employees** when you just have a batch of new hires and do not want to touch anyone else.
</Tip>

Nothing is applied in either mode until you review the changes and confirm.

## Prepare Your File

Upload a `.csv` or `.xlsx` file, up to 50 MB and 50,000 rows. The easiest starting points:

* **Replace roster**: click **Download current roster** on the upload page (or **Actions** -> **Download roster**) and edit the downloaded spreadsheet.
* **Add multiple employees**: click **Download empty template** on the upload page and fill in the new hires.

Downloads include a **Reference** sheet listing your company's products, courses, and role values. It is for reference only -- edit the **Roster** sheet.

### Columns

| Column          | Required                | Notes                                                                                                                                                                                  |
| --------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `email`         | Yes                     | The unique identifier. Emails cannot be changed later -- changing an email archives the old account and creates a new one.                                                             |
| `first_name`    | Yes                     | The employee's first name.                                                                                                                                                             |
| `last_name`     | Yes                     | The employee's last name.                                                                                                                                                              |
| `department`    | Yes (cell may be blank) | Comma-separated department names (e.g. `Sales, Support`). New departments are created automatically.                                                                                   |
| `role`          | Yes                     | One of `agent`, `manager`, or `admin`.                                                                                                                                                 |
| `manager_email` | Yes (cell may be blank) | The email of the person they report to. Comma-separate for multiple managers.                                                                                                          |
| `products`      | Yes                     | Comma-separated names of existing products. Required for agents. Managers automatically also get their reports' products. Ignored for admins, who always have access to every product. |
| `courses`       | No                      | Comma-separated titles of existing courses. Omit the whole column to leave course assignments unchanged; include it with a blank cell to clear them.                                   |

<Frame>
  <img src="https://mintcdn.com/reddy-376a6c19/iVImyGeTanqde7oG/manual/images/roster-column-reference.png?fit=max&auto=format&n=iVImyGeTanqde7oG&q=85&s=b87502ee42f91318c65d7253a0918afa" alt="Upload page with the Roster instructions panel expanded, describing each column" width="1440" height="900" data-path="manual/images/roster-column-reference.png" />
</Frame>

<Note>
  Products and courses must already exist in Reddy -- the upload will not create them. Departments are created on the fly.
</Note>

## Upload and Validate

<Steps>
  <Step title="Open the upload flow">
    On the Employees page, open **Actions** and choose **Replace roster** or **Add employees** -> **Add multiple employees**.

    <Frame>
      <img src="https://mintcdn.com/reddy-376a6c19/iVImyGeTanqde7oG/manual/images/roster-replace-upload-step.png?fit=max&auto=format&n=iVImyGeTanqde7oG&q=85&s=e7235c6596d316dee5d5f7e61235693f" alt="Full-screen roster upload page with the Upload, Validate, Review, Apply step bar and a drag-and-drop file zone" width="1440" height="900" data-path="manual/images/roster-replace-upload-step.png" />
    </Frame>
  </Step>

  <Step title="Upload your file">
    Drag and drop your file into the box (or click to browse), then click **Upload and validate**.
  </Step>

  <Step title="Fix any validation issues">
    Reddy checks every row and reports all problems at once -- unknown roles, invalid emails, managers that cannot be found, agents without products, reporting loops, and more. Each issue lists the row number and what to fix.

    <Frame>
      <img src="https://mintcdn.com/reddy-376a6c19/iVImyGeTanqde7oG/manual/images/roster-validation-errors.png?fit=max&auto=format&n=iVImyGeTanqde7oG&q=85&s=cce8ce67b53a8ab28b43bb16b35a5ae7" alt="Validation results listing each issue with its row number, message, and error type" width="1440" height="900" data-path="manual/images/roster-validation-errors.png" />
    </Frame>

    If there are any issues, nothing is changed. Fix them in your file, click **Cancel and start over**, and upload again.
  </Step>
</Steps>

## Review Before Applying

When validation passes, you land on the review screen -- a full preview of what the upload will do. Nothing has been changed yet.

<Frame>
  <img src="https://mintcdn.com/reddy-376a6c19/iVImyGeTanqde7oG/manual/images/roster-review-replace.png?fit=max&auto=format&n=iVImyGeTanqde7oG&q=85&s=4d20b522192bf92b1c7c874510fcf011" alt="Review screen showing counts of All, New, Modified, Archived, and Unchanged employees with the full diff table" width="1440" height="900" data-path="manual/images/roster-review-replace.png" />
</Frame>

* The tiles at the top count **New**, **Modified**, **Reactivated**, **Archived**, and **Unchanged** employees. Click a tile to filter the table to just those rows.
* The **Modified** view shows exactly which fields change for each person, with old and new values side by side.

<Frame>
  <img src="https://mintcdn.com/reddy-376a6c19/iVImyGeTanqde7oG/manual/images/roster-review-modified.png?fit=max&auto=format&n=iVImyGeTanqde7oG&q=85&s=57f4588cb7388f9fc7fd3777f319f9bf" alt="Modified tab of the review screen with per-field change chips showing old and new values" width="1440" height="900" data-path="manual/images/roster-review-modified.png" />
</Frame>

* Use the search box to check a specific person by name, email, department, or product.
* If the upload would archive 20 or more people, a warning banner asks you to double-check the Archived tab before confirming.

Click **Confirm and apply** to make the changes, or **Cancel** to discard the upload entirely.

<Note>
  Only one roster upload can be in progress per company. If another admin has an upload mid-flight, you will see who started it and can wait or cancel their upload.
</Note>

## Apply

After you confirm, Reddy creates logins for new employees and applies all changes together. Large uploads show live progress. When it finishes you are returned to the Employees page with a confirmation, and the uploader also receives an in-app notification with the final counts.

If the roster changed while you were reviewing (for example, another admin edited someone), the apply is safely rejected and you are asked to upload and review again -- you will never apply changes you did not see.

## Roster History

Every upload is recorded. Open **Actions** -> **Roster history** to see past uploads, who ran them, their status, and their change counts.

<Frame>
  <img src="https://mintcdn.com/reddy-376a6c19/iVImyGeTanqde7oG/manual/images/roster-history.png?fit=max&auto=format&n=iVImyGeTanqde7oG&q=85&s=b3398cc28a4652427dbcecb75a05fb2d" alt="Roster history page listing past uploads with status pills and change counts" width="1440" height="900" data-path="manual/images/roster-history.png" />
</Frame>

Click **View** on any upload for a per-person audit of what changed, and to download the original file that was uploaded.

<Frame>
  <img src="https://mintcdn.com/reddy-376a6c19/iVImyGeTanqde7oG/manual/images/roster-history-detail.png?fit=max&auto=format&n=iVImyGeTanqde7oG&q=85&s=ba481b84c6b39e3cfd69b89c8a9188e2" alt="Roster history detail page showing summary tiles and a per-person list of changes" width="1440" height="900" data-path="manual/images/roster-history-detail.png" />
</Frame>

## FAQ

<AccordionGroup>
  <Accordion title="What can never happen through a roster upload?">
    You cannot archive yourself, remove your own admin role, or leave the company with no active admins. Validation blocks all three before anything is applied.
  </Accordion>

  <Accordion title="What happens to people archived by a replace upload?">
    The same as archiving them individually: they can no longer log in and are filtered out of dashboards, but all their historical data is preserved. A later upload that includes them again (or the **Unarchive** row action) restores them -- the review screen counts these as **Reactivated**.
  </Accordion>

  <Accordion title="Can I rename someone's email address?">
    No. Email is the unique identifier. If an address changes, the upload archives the old account and creates a new one; history and assignments do not carry over. Contact support if you need an address migrated.
  </Accordion>

  <Accordion title="Why does 'Add new users' show existing employees as Modified?">
    Product access cascades from agents up to their managers. If a new hire's products give their existing manager new access, that manager appears as Modified. No other fields on existing employees are ever touched in add mode.
  </Accordion>

  <Accordion title="My file uses a different column layout. Do I need to match the template exactly?">
    Column names must match the template headers (capitalization and extra spaces are forgiven), but column order does not matter. There is no column-mapping step -- files with missing or unrecognized required columns fail validation with a clear message.
  </Accordion>
</AccordionGroup>
