# Bulk athlete import (CSV)

Learn how to bring a full roster into ProductiveRecruit at once with a CSV file: what columns to include, and what to expect during import.

If you're onboarding a whole roster (a club, a school, or a full program), you don't have to add athletes one at a time. Send us a CSV of your roster and our team runs the import for you, so everyone lands in the right space, on the right team, in minutes.

## How it works

Bulk import isn't a self-serve upload button in the app today. It's handled by your ProductiveRecruit contact. Send your roster as a CSV, and we'll import it into your space. If you'd like help importing a CSV, reach out to [support@productiverecruit.com](mailto:support@productiverecruit.com).

## What your CSV needs

Three columns are required. We accept a few common header variations, so you don't need to reformat an existing roster export:

| Column | Required | Notes |
|---|---|---|
| First Name | Yes | Also accepts `first_name`, `Player First Name` |
| Last Name | Yes | Also accepts `last_name`, `Player Last Name` |
| Email | Yes | Also accepts `email`, `Player Email` |
| Team Name | No | Auto-creates the team if it doesn't exist yet |
| Role | No | `athlete` (default), `coach`, or `team-manager` |
| Sport | No | Falls back to your space's default sport if left blank |

A roster tops out at **250 rows per import**. Bigger rosters get split into multiple files.

## What happens during import

Every row needs a resolvable sport (from the Sport column or your space's default). If any row can't be matched, the whole import is rejected rather than partially applied, so you never end up with a half-imported roster. The same protection applies to bad emails, invalid roles, or a team name that maps to two different sports in the same file.

We always run a validation pass first to catch problems before anything is created. If someone in the file already has a ProductiveRecruit account (matched by email, then by name within your space), we reactivate them instead of creating a duplicate.

A few things you can ask us to configure for your import:

- **Skip invite emails** — imported athletes and staff get the standard invite email with login details by default; we can turn this off if you'd rather send your own welcome message.
- **Archive existing athletes first** — useful for a clean start-of-season reset before loading a new roster.
- **Restrict coaches/team managers to their teams** — mirrors the same team-restriction option available when [inviting staff](/docs/organizations/inviting-staff) one at a time.

## Prefer to add people yourself?

For smaller additions or ongoing signups, your [group code and registration link](/docs/organizations/athlete-registration) let athletes join themselves, and the invite tools cover staff and one-off athlete adds. Bulk import is the fast path specifically for loading a full roster at once.

## What's next

- Set up your [spaces and teams](/docs/organizations/spaces-and-teams) before importing so rows land where you expect.
- Review [staff roles & permissions](/docs/organizations/staff-roles-and-permissions) if your CSV includes coaches or team managers.
- Check the [admin dashboard](/docs/organizations/admin-dashboard) after an import to confirm your athlete and staff counts.

Source: https://productiverecruit.com/docs/organizations/bulk-import
