For creators
Bulk-import students via CSV
Upload a CSV with email, name, and optional phone — we provision accounts, enrol them in the target course, and email an invite. Handles 10,000+ rows.
Last updated May 19, 2026
Open /dashboard/students → Import. Drop a CSV with columns email,name,phone (phone optional), plus an optional guardian_email. We dedupe by email — re-uploading an existing student updates their profile, doesn't create a duplicate.
What happens on each row
- User row created or updated.
- Enrolment created against the chosen course (idempotent).
- Invite email queued (skipped if the student already logged in).
Imports under 100 rows run in-browser. Larger imports queue server-side and email you a report when done.
CSV format
- Columns: email (required), name, phone, guardian_email (all optional). A header row is fine.
- One student per row; save as UTF-8 so names render correctly.
- Dedupe is by email — re-uploading the same email updates that student instead of creating a duplicate.
After import
Each row provisions or updates the account, enrols the student in the course you chose (safely re-runnable — it won't double-enrol), and queues an invite email unless they've already signed in. Big batches email you a completion report so you can confirm every row landed.
Common questions
- Can I import the same list twice? Yes — it's idempotent; existing students are updated, not duplicated.
- Will students without accounts get one? Yes — accounts are created and an invite email is sent.
- How big can the file be? 10,000+ rows; large files process server-side with an emailed report.
Related