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

# Adding students

> Enrol students into your organisation, a classroom, or a 1:1 arrangement with a tutor.

## Who can add students

**Org Owners** and **Org Admins** can add students. Tutors cannot add students directly.

## Steps

### 1. Go to Users → Learners

From the sidebar, click **Users**, then select the **Learners** tab.

### 2. Click "Add User"

Click **Add User** in the top-right corner, then select the **Student** card.

### 3. Choose an enrolment scope

You'll be asked how this student should be enrolled:

| Scope | When to use |
| - | - |
| **Organisation only** | Add the student to the org — assign to classes later |
| **A specific classroom** | Enrol directly into one of your classrooms |
| **A group inside a classroom** | Place them in a sub-group within a classroom |
| **1:1 with a tutor** | Pair them privately with a specific tutor |

For most tutoring centres, **Organisation only** is the right starting point — you can assign classrooms afterwards.

### 4. Enter student details

Enter the student's name. **Email is optional** — if you only have a name (or a name and phone number), you can still create the account now and add the email later. If the student is under 18, you can also add a parent, whose email is optional too.

### 5. Choose whether to send the invite now

If you entered an email, a **"Send invite now"** toggle appears:

* **On (default)** — the student (or parent, for younger students) is emailed a link to create their account right away.
* **Off** — the account is created quietly with no email sent. Send the invite whenever you're ready (see below).

If you left the email blank, no email is sent — the account is created against an internal placeholder and shows a **"No email set"** badge on the learner's row and profile.

### 6. Add an email or send the invite later

Open the student (or parent) from **Users → Learners** and use **Add email & send invite** on their profile. Enter their email and, if you want, tick **Send invite now** — this saves the email and sends the set-password link. The "No email set" badge clears once a real email is set.

## Import your whole roster from a spreadsheet

Moving from Excel or another system? One upload can bring across your **students, parents, tutors,
who-teaches-whom, and everyone's weekly timetable** — and invite everyone in the same pass.

### 1. Open the import

Go to **Users → Learners → Add User → Import roster**, or follow the guided **Migrate your business**
flow from your dashboard checklist (it walks import → subjects → availability → terms → invites and
shows live progress).

### 2. Prepare the file

Upload a **CSV or Excel (.xlsx)** file — the **Template** button gives you a starter. One row per
person; add extra rows with the same email for students with more than one weekly lesson. Useful columns:

| Column | Notes |
| - | - |
| `role` | `student`, `parent`, or `tutor` (blank = student) |
| `full_name`, `email`, `phone` | Email is optional for students — accounts without one get a "No email set" badge |
| `subject` | Plain names are fine — "Year 9 Maths" works; you'll confirm any uncertain matches |
| `tutor_email` | Assigns the student to that tutor (a tutor row in the same file, or an existing member) |
| `day`, `start time`, `duration`, `mode`, `recurrence` | The weekly lesson: e.g. `Tuesday`, `4:00 PM`, `60`, `online`, `weekly` or `fortnightly` |
| `child_email` | Parents: the email of their child in the same file |

### 3. Map, match subjects, review

The wizard auto-detects your columns (adjust anything it guessed wrong), then asks you to confirm any
subject names it isn't sure about — nothing is ever silently dropped. The preview shows every person,
their lessons, and any row problems before anything is created.

### 4. Choose the schedule window and invites

If your file has lesson columns, pick what the recurring schedules run against — a **term** you've
created (Settings → Terms) or a **number of weeks** from a start date. The **"Send invite emails now"**
toggle (on by default) controls whether everyone gets their set-password email immediately.

### 5. Import and check the results

The wizard creates accounts first, then books every lesson as a confirmed recurring session on your org
calendar. The result table shows three things per person — **Account** (created / linked / failed),
**Schedule** (sessions booked, or any time conflicts skipped), and **Invite** (sent / already a member /
no email) — with a one-click retry for any schedules that failed. Tutors get a single summary email of
the sessions added to their calendar, not one email per lesson. Re-running the same file is safe: it
won't double-book sessions or send duplicate invites.

## Invite several students at once

**Users → Learners → Add → Invite many…** takes a pasted list of email addresses (one per line, or comma-separated), up to 5,000 at a time.

<Warning>
  Anyone on that list who **already has a ClassQuill account** joins your organisation straight away — they are not emailed and cannot decline. Addresses we don't recognise get an invite email instead, which expires in **30 days** (longer than the 7 days a single invite gets, so a family migrating over the holidays doesn't lose it).
</Warning>

When it finishes you get a breakdown — added, invite emailed, already a member, skipped as invalid — and each group can be copied out. Click **View pending invites** to jump to the roster; the queued invites live there until they're redeemed.

## Tracking student invites you've sent

Unredeemed invites appear **in the Learners roster itself**, as rows showing the email address with an **Invited** status, until the person signs up. Each row gives you:

* **Copy link** — the exact link that was emailed. Use this when someone says it never arrived; it saves waiting for a resend. Hidden once an invite has expired or been declined, since those links are permanently dead.
* **Resend** — issues a fresh link and emails it again. The old link stops working.
* **Revoke** — cancels the invite. The link stops working immediately, even if they've already opened the email.

## Inviting a parent

Parents don't join your organisation the way students and tutors do — they link to a specific **child**. Open the learner from **Users → Learners**, and on their profile use **Invite a parent**:

* Enter the parent's email and we'll send them the code.
* Or leave the email blank and just copy the code to share yourself — useful if you're reading it out over the phone.

<Info>
  Parent codes expire after **48 hours**. If one lapses, generate a new one — codes can't be extended. Resending to the same parent reuses the existing code while it's still valid, so they won't end up with two.
</Info>

## Letting students find you themselves

If your organisation is **listed in search**, a student can create their own account, search for you by name, and send a join request that you approve — no code and no email needed from you.

Check **Settings → Organisation → Listed in search**. Tutoring companies are listed by default; schools are not, and have to opt in. Once it's on, the exact wording to send someone is on **Users → Add → How people join…**, ready to copy.

Requests land on the **Pending** tab with whatever message the person wrote, and you approve or decline each one.

## Joining via a shareable link

You don't need anyone's email to bring them in. Two kinds of self-serve link exist:

* **Org join link** — a link you can paste into a Facebook, Instagram, or WhatsApp message. The person clicks it, signs up themselves, and lands straight in your organisation. Use the **Share link** buttons in the add-students area (copy the link, or share it directly from your device).
* **Classroom join link** — each classroom also has its own join link for enrolling straight into that class. Find it under **Teaching → \[Classroom name] → Members → Invite link**.

Either way, once they've signed up you can place them in the right classroom or pair them with a tutor.

## What's next

<CardGroup cols={2}>
  <Card title="Set tutor availability" icon="calendar" href="/guides/set-availability">
    Ensure tutors have availability set before students try to book.
  </Card>

  <Card title="How parents book a session" icon="clock" href="/guides/how-parents-book">
    Walk through the booking flow from a parent's perspective.
  </Card>
</CardGroup>


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