> For the complete documentation index, see [llms.txt](https://help.onform.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.onform.com/programs/set-up-your-organization/import-your-roster.md).

# Import your roster from a spreadsheet

Add your whole roster to your organization in one go from a spreadsheet (CSV file). Onform adds each athlete and gives them a one-on-one workspace.

Works on: iPhone, iPad, Android and web. For organizations that have **Manage Organization**, and for organization admins only.

Have a roster in a spreadsheet? Import it as a CSV file and Onform adds every athlete to your organization and gives each one a one-on-one workspace. You see exactly what will happen before anything is created.

## Before you start

* You must be an admin of your organization, and your organization must have **Manage Organization**. See [Access and access requests](/programs/staff-seats-and-access/access-and-access-requests.md).
* Save your spreadsheet as a **CSV** file (see below). A `.txt` file with the same layout also works.
* Importing needs an internet connection.

## What your file needs

The first row must be a header row. Onform skips it, so an athlete in the first row would be lost. Each row after it is one athlete. Use these columns, in this order:

| Column                                        | Required? | What goes in it                                                                                |
| --------------------------------------------- | --------- | ---------------------------------------------------------------------------------------------- |
| 1. First name                                 | Required  | The athlete's first name                                                                       |
| 2. Last name                                  | Required  | The athlete's last name                                                                        |
| 3. Your organization's own ID for the athlete | Required  | One ID per athlete. Head this column with the name of your ID source, for example **Club ID**. |
| 4. Email                                      | Optional  | The athlete's email address                                                                    |

An example:

| First Name | Last Name | Club ID | Email             |
| ---------- | --------- | ------- | ----------------- |
| Ana        | Silva     | 34555   | <ana@example.org> |
| Sam        | Okafor    | 34556   |                   |
| Mia        | Lindqvist | 34557   | <mia@example.org> |

Good to know:

* Both names are needed. A row with only one name is skipped.
* Each athlete needs an ID, and it can't be used twice in the same file. An ID can't contain a comma or a colon.
* The email is saved with the athlete. Onform doesn't send them an email or an invite.
* Names with a comma, such as "Silva, Ana", are fine if the cell is in quotes. Your spreadsheet does this for you when you export.
* There's no limit on the number of rows. Onform sends long files in batches of 200 and shows its progress.
* Save as **CSV UTF-8** if your spreadsheet offers it.

## Save your spreadsheet as a CSV

* **Excel:** **File** > **Save As**, then choose **CSV UTF-8 (Comma delimited) (\*.csv)**.
* **Google Sheets:** **File** > **Download** > **Comma-separated values (.csv)**.
* **Numbers:** **File** > **Export To** > **CSV**.

Only the sheet you're looking at is saved, so put your roster on its own sheet.

## Import the file

{% tabs %}
{% tab title="iPhone and iPad" %}

1. Make sure you're in your organization, then tap the account switcher.
2. Tap **Manage Organization**, then tap **Athletes**. The pane uses your sport's word, for example **Golfers** or **Students**.
3. Tap **Import**.
4. If your organization has never imported a roster, Onform asks you to name your ID source first. Type it in. This is the name you'll use as the heading of the third column.
5. Tap **Choose CSV File** and pick your file.
6. On the **Review** screen, check **What will happen**. It shows how many new athletes will be added, how many are already in your organization and how many new workspaces will be made. Any rows that can't be imported are listed by line number.
7. Choose how the new workspaces' Libraries start (**Shared** is selected to begin with). **Shared** shows anything you add to the Library to the athlete straight away. **Private** keeps files private until you share them one at a time.
8. To group everyone from this file, turn on **Add to a new collection** and give it a name.
9. Tap **Import** followed by the number of athletes, for example **Import 24 Athletes**.
10. When it finishes, you see what was created. Tap **Done**, or **Import Another File**.
    {% endtab %}

{% tab title="Android and web" %}

1. Make sure you're in your organization, then tap its name at the top of Home.
2. Tap **Manage Organization**, then tap **Athletes**. The pane uses your sport's word, for example **Golfers** or **Students**.
3. Tap **IMPORT**.
4. If your organization has never imported a roster, Onform asks you to name your ID source first. Type it in, then tap **Continue**. This is the name you'll use as the heading of the third column.
5. Tap **CHOOSE CSV FILE** and pick your file.
6. On the **Review** screen, check **WHAT WILL HAPPEN**. It shows how many new athletes will be added, how many are already in your organization and how many new workspaces will be made. Any rows that can't be imported are listed by line number.
7. Choose how the new workspaces' Libraries start (**Shared** is selected to begin with). **Shared** shows anything you add to the Library to the athlete straight away. **Private** keeps files private until you share them one at a time.
8. To group everyone from this file, turn on **Add to a new collection** and give it a name.
9. Tap **IMPORT** followed by the number of athletes, for example **IMPORT 24 ATHLETES**.
10. When it finishes, you see what was created. Tap **Done**, or **IMPORT ANOTHER FILE**.
    {% endtab %}
    {% endtabs %}

## What Onform creates

For each row that can be imported:

* **A new athlete in your organization**, unless that athlete is already there. Matching is done on the third column, so you don't get the same athlete twice if you import again.
* **One one-on-one workspace** for that athlete, with you as the coach. If the athlete already has a one-on-one workspace that another coach made, you're added to it instead of a second one being made. If they have several, Onform uses the oldest.
* **Your Collection**, if you asked for one. Athletes who were already in your organization are added to it too.

Importing doesn't send invites or emails. To invite your athletes, see [Invite your athletes](https://github.com/Onform-Inc/onform-docs/tree/main/coaching/organize-your-athletes/invite-your-athletes.md).

If a name in your file differs from the name already in Onform, Onform keeps the name it has and shows the row under **Names that differ**. Importing never renames anyone.

If you import the same file again, athletes already there are matched, not added twice. If an athlete was archived, they're added again as a new athlete.

## If something goes wrong

| What you see                                                                                      | What to do                                                                                                                                               |
| ------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Import** (or **IMPORT**) isn't there                                                            | You need to be an admin of the organization, in your organization (not your Personal Account), and your organization needs **Manage Organization**.      |
| **Choose CSV File** is greyed out                                                                 | Name your ID source first (the step before choosing the file). Importing needs a connection too: if you see **You're offline**, reconnect and try again. |
| **That file isn't plain text. Re-export it from your spreadsheet as CSV and try again.**          | Save it again as **CSV UTF-8**.                                                                                                                          |
| **Onform couldn't open that file. Check that it's still where you picked it from and try again.** | The file moved or is still downloading. Pick it again.                                                                                                   |
| **That file has no header row\...**                                                               | The first row must be a header, and the file needs at least three columns.                                                                               |
| **The third column has no heading...**                                                            | Type your ID source's name at the top of the third column.                                                                                               |
| **The third column's heading can't contain a comma or a colon.**                                  | Rename the heading and save again.                                                                                                                       |
| **No athletes found. Every row needs a name and an ID in the third column.**                      | Check that rows have both names and an ID, and that the columns are in the right order.                                                                  |
| **This file uses a different ID column**                                                          | Your organization imports under one ID source. Make the third column's heading match the name shown in the message, and try again.                       |
| **Something went wrong. Nothing was imported.**                                                   | Check your connection and try again.                                                                                                                     |
| **Something went wrong part way through. Some athletes may already be imported...**               | Import the same file again to finish. Nothing is duplicated.                                                                                             |
| **Fewer than three columns** (on a line)                                                          | That row is skipped. Check for a missing comma.                                                                                                          |
| **No name**                                                                                       | That row is skipped. Add both names.                                                                                                                     |
| **No ID in the third column**                                                                     | That row is skipped. Add the ID.                                                                                                                         |
| **Same ID as line 12**                                                                            | The same ID is on two rows. The second row is skipped.                                                                                                   |
| **This ID belongs to a staff member or parent**                                                   | That ID already belongs to a coach or parent in your organization, so the row is skipped.                                                                |
| **The ID contains a comma or a colon**                                                            | Remove it from the ID.                                                                                                                                   |
| **The athlete was added, but their workspace couldn't be created**                                | Import the file again. The athlete is matched and the workspace is made.                                                                                 |

Rows that can't be imported are skipped. Everything else imports. Still stuck? Email <support@onform.com> with a screenshot of the message.

## Related

* [Set up your organization](/programs/set-up-your-organization/set-up-your-organization.md)
* [Invite your athletes](https://github.com/Onform-Inc/onform-docs/tree/main/coaching/organize-your-athletes/invite-your-athletes.md)
* [Staff, seats and roles](/programs/staff-seats-and-access/staff-seats-and-roles.md)
* [Access and access requests](/programs/staff-seats-and-access/access-and-access-requests.md)
* [One-on-one, team or Collection: which to use](/programs/teams-and-rosters/when-to-use-individuals-teams-or-collections-to-stay-organized.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.onform.com/programs/set-up-your-organization/import-your-roster.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
