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

# Import students

> Add many students and their guardians at once from a CSV or Excel file

Use **Import Students** to create student records in bulk, enroll them in classes for the selected academic year, and add up to four guardians for each student.

> [!NOTE]
>
> You need permission to create students. By default only **Admin**, **Owner**, and **Super Admin** have it.

## Before you start

* Select the academic year you're importing into from the year picker at the top of the sidebar. The import page confirms the year it will use.
* Set up the grades and classes for that year first. Each active student must match an existing grade and class. See [Grades](https://docs.relyant.app/edu/settings/grades.md) and [Classes](https://docs.relyant.app/edu/settings/classes.md).

## Import students

**1. Open the import page**

In the left rail, click **People**, then **Students**. Click **Import**.

**2. Download the template**

Click **Download Template**, then choose **Download CSV** or **Download Excel (.xlsx)**. The template includes a column for each student custom field. The **Custom fields** card on the upload screen lists them.

**3. Fill in the template**

Add one row per student. See the column reference below.

**4. Upload the file**

Click the upload area or drag your file onto it. Relyant accepts CSV and Excel files up to 10 MB. CSV files can use commas, semicolons, or tabs.

**5. Pick the date format**

Under **Dates like 06/07/2018 in my file are**, choose **Day / Month** or **Month / Day**. It starts on your school's date format. Dates with month names, in English or Indonesian, and Excel date cells work either way.

**6. Preview and validate**

Click **Preview & Validate**. Rows with errors are flagged with a message for each problem, including student numbers already used in your school. A blank nationality is filled in with your school's country. You can still change the date format at the top of the preview.

**7. Fix or skip errors**

Click a cell to edit it, then click **Re-validate**. To fix the file instead, click **Error report** to download the invalid rows with their errors. To import only the valid rows, select the **Skip *n* invalid, import *n* valid rows** checkbox.

**8. Import**

Click the import button, for example **Import 25 Students**. When the import finishes, you see how many students were imported. If some rows couldn't be saved, they're listed. Click **Download these rows** to fix and import them again.

> [!TIP]
>
> Imports of more than 500 rows run in the background. You see **Import queued** and receive an email when the import is done.

## Column reference

| Column | Required | Notes |
| - | - | - |
| `full_name` | Yes | The student's full name. Older files with `first_name` and `last_name` still import |
| `nickname` | No | |
| `grade_level` | For active students | Must match an existing grade level, for example `1` |
| `class_name` | For active students | Must match a class in that grade for the selected year, for example `A` |
| `status` | No | `active`, `inactive`, `withdrawn`, or `graduated`. Defaults to `active`. Other statuses can leave grade and class blank |
| `student_number` | No | Must be unique. Numbers that already exist or repeat in the file are rejected |
| `date_of_birth` | No | A date, for example `2018-04-12`, `12/04/2018`, or `12 April 2018` |
| `gender` | No | `male`, `female`, `other`, or `undisclosed`. `L` or `Laki-laki` and `P` or `Perempuan` also work |
| `nationality` | No | A country name or code, for example `Indonesia` or `ID`. Blank uses your school's country |
| `religion` | No | |
| `photo_url` | No | A public image URL. Relyant copies the photo after the import, so it stays even if the old link stops working |
| `enrollment_date` | No | When the student joined. Their class enrollment starts on this date, or on the first day of the academic year if they joined earlier. If blank, it starts on the import day |
| `exit_date` | No | When an inactive, withdrawn, or graduated student left. Their class enrollment ends on this date. If blank, it ends on the import day. Not allowed for active students |
| `address` | No | |
| `notes` | No | |
| `family_email` | No | The school-issued email address for the family |
| `cf_<key>` | Depends | One column per custom field. You can also name the column after the field label. Required custom fields must be filled in |

Custom field columns support text, number, long text, date, time, dropdown, checkbox, and multi-select fields. Manage custom fields in [Student fields](https://docs.relyant.app/edu/settings/student-fields.md).

## Guardian columns

Each row can carry up to four guardians:

| Columns | Relationship |
| - | - |
| `mother_name`, `mother_email`, `mother_phone` | Mother |
| `father_name`, `father_email`, `father_phone` | Father |
| `guardian_1_name`, `guardian_1_relationship`, `guardian_1_email`, `guardian_1_phone` | Set in the relationship column |
| `guardian_2_name`, `guardian_2_relationship`, `guardian_2_email`, `guardian_2_phone` | Set in the relationship column |

* A guardian needs a name. The relationship column takes `grandparent`, `aunt_uncle`, `sibling`, `foster_carer`, `guardian`, or `other`.
* `primary_guardian` takes `mother`, `father`, `guardian_1`, or `guardian_2`. If you leave it blank, the first guardian filled in is the primary contact.
* Siblings who share a guardian email or phone are grouped into one family. See [Families](https://docs.relyant.app/edu/people/families.md).

> [!NOTE]
>
> Imported guardians are saved as contacts, and attendance emails to them stay off until you turn them on. If a guardian's email already belongs to a parent account in your school, the guardian is linked to that account. See [Guardians](https://docs.relyant.app/edu/people/guardians.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.