Skip to main content
All help topics

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