Skip to main content
Version: Next

Bulk import students (CSV)

This guide covers the complete CSV import workflow for adding multiple students simultaneously. The import drawer validates data in real-time, shows previews with error details, and provides clear feedback on import results.

What this guide covers

  • CSV file requirements and format specifications
  • Complete field reference (required and optional)
  • Data validation rules and accepted values
  • Import preview and error resolution
  • Processing and verifying imported records

Before you start

Required setup

RequirementLocationPurpose
Academic yearFoundation → Academic YearsYear for enrollment
Grade levelsFoundation → Grade LevelsTarget grade levels
Class divisionsFoundation → Class DivisionsClasses for assignment

Required permissions

PermissionDescription
students.createCreate student records
students.bulk_importPerform bulk import operations

File requirements

RequirementSpecification
File formatCSV (.csv extension)
File sizeMaximum 10 MB
EncodingUTF-8 recommended
Line endingsWindows (CRLF) or Unix (LF)
Excel files not supported

The importer only accepts .csv files. If using Excel, export to CSV format first: File → Save As → CSV (Comma delimited)


People → Students → Import (button)

Direct URL pattern: /{tenant}/workspace/people/students then click Import


Required fields

These columns must be present and contain valid data for every row:

Column nameDescriptionValidation
student_numberUnique student identifierRequired, must be unique
first_nameStudent's first nameRequired, non-empty
last_nameStudent's last nameRequired, non-empty
genderGenderRequired: male, female, other, prefer_not_to_say
date_of_birthDate of birthRequired, format: YYYY-MM-DD
nationalityCountry of citizenshipRequired, non-empty
enrollment_dateDate of enrollmentRequired, format: YYYY-MM-DD
student_typeStudent classificationRequired: regular, transfer, repeating, special_needs
boarding_statusDay or boardingRequired: day, boarding, half_boarding
language_of_instructionPrimary languageRequired: english, shona, ndebele

Optional fields

Personal information

Column nameDescriptionNotes
middle_nameMiddle name
preferred_namePreferred/nickname
admission_numberAdmission referenceSchool-specific format
national_idNational ID number
birth_certificate_numberBirth certificate ref
passport_numberPassport number
place_of_birthBirthplace
citizenship_statusCitizenship category

Contact information

Column nameDescriptionNotes
emailStudent emailValid email format
phoneStudent phone
alternative_phoneSecondary phone
residential_addressHome address

Academic information

Column nameDescriptionNotes
current_grade_level_idGrade level UUIDMust match existing grade
current_class_idClass division UUIDMust match existing class
academic_year_idAcademic year UUIDMust match existing year
houseSchool house
dormitoryDormitory assignmentFor boarding students
bed_numberBed numberFor boarding students
streamAcademic streame.g., Sciences, Arts, Commercial
specializationSpecialization area

Previous school

Column nameDescriptionNotes
previous_schoolName of previous school
previous_grade_levelLast grade completed
transfer_dateDate of transferFormat: YYYY-MM-DD
transfer_reasonReason for transfer

Guardian information

Column nameDescriptionNotes
primary_guardian_idGuardian UUIDMust match existing guardian
emergency_contact_nameEmergency contact
emergency_contact_phoneEmergency phone
emergency_contact_relationshipRelationship
guardian_relationshipPrimary guardian relation
lives_with_guardianLiving arrangementtrue/false or yes/no

Scholarship information

Column nameDescriptionNotes
is_scholarship_studentHas scholarshiptrue/false or yes/no
scholarship_typeType of scholarship
scholarship_providerScholarship provider
scholarship_amountScholarship valueNumeric

Special needs

Column nameDescriptionNotes
is_special_needsHas special needstrue/false or yes/no
special_needs_categoryCategory of needs
special_needs_detailsDetailed description
requires_accommodationNeeds accommodationtrue/false or yes/no
accommodation_detailsAccommodation specifics

Health information

Column nameDescriptionNotes
blood_typeBlood typee.g., A+, O-, B+
requires_medication_at_schoolTakes medicationtrue/false or yes/no
immunization_up_to_dateVaccinations currenttrue/false or yes/no
last_medical_checkupLast checkup dateFormat: YYYY-MM-DD

Transport

Column nameDescriptionNotes
requires_transportUses school transporttrue/false or yes/no
transport_routeTransport route
transport_pickup_pointPickup location
transport_dropoff_pointDropoff location

Financial

Column nameDescriptionNotes
fee_payment_planPayment plan type
fee_categoryFee category
payment_responsibilityWho pays fees
sponsor_organizationSponsor name
outstanding_balanceBalance owedNumeric

System

Column nameDescriptionNotes
portal_access_enabledPortal accesstrue/false or yes/no
tagsLabels/categoriesComma-separated
notesGeneral notes

Validation rules

Date formats

Dates must be in YYYY-MM-DD format:

ValidInvalid
2010-05-1515/05/2010
2023-01-0101-01-2023
2015-12-2525 Dec 2015

Gender values

Case-insensitive, must be one of:

  • male
  • female
  • other
  • prefer_not_to_say

Student type values

Must be one of:

ValueDescription
regularStandard enrollment
transferTransferring from another school
repeatingRepeating a grade
special_needsHas special educational needs

Boarding status values

Must be one of:

ValueDescription
dayDay scholar
boardingFull boarding student
half_boardingPartial boarding

Language values

Must be one of:

  • english
  • shona
  • ndebele

Boolean values

Accept either format:

True valuesFalse values
truefalse
yesno
10

Email validation

Must be valid email format if provided:

  • Contains @ symbol
  • Has domain portion
  • No spaces

Step-by-step import process

Step 1: Prepare your CSV file

  1. Create a spreadsheet with required columns
  2. Add student data row by row
  3. Verify all required fields have values
  4. Check date formats are YYYY-MM-DD
  5. Ensure gender/type/boarding values match exactly
  6. Save as CSV (not Excel format)

Example CSV structure:

student_number,first_name,last_name,gender,date_of_birth,nationality,enrollment_date,student_type,boarding_status,language_of_instruction,middle_name,email
STU-2024-001,Tendai,Moyo,male,2010-05-15,Zimbabwean,2024-01-15,regular,day,english,James,tendai.moyo@email.com
STU-2024-002,Rudo,Ncube,female,2009-08-22,Zimbabwean,2024-01-15,transfer,boarding,shona,,rudo.n@email.com
STU-2024-003,Tinashe,Sibanda,male,2010-02-10,Zimbabwean,2024-01-15,regular,half_boarding,ndebele,Peter,

Step 2: Upload the file

  1. Navigate to People → Students
  2. Click the Import button
  3. Click Choose file or drag and drop
  4. Select your CSV file

The system validates:

  • File type (must be .csv)
  • File size (must be ≤ 10 MB)
  • Header row (checks for required columns)

Step 3: Review the preview

After upload, the system parses and validates all rows:

Valid rows display with:

  • ✅ Green check icon
  • Student name and number
  • Key attributes preview

Step 4: Fix validation errors

If rows have errors:

  1. Note the specific error messages
  2. Open your CSV file in spreadsheet software
  3. Correct the invalid data
  4. Save the file
  5. Re-upload the corrected file
Preview limit

The preview shows the first 10 rows. If your file has more rows, verify the pattern is consistent throughout.

Step 5: Run the import

Once validation passes:

  1. Review the summary:
    • Total rows to import
    • Valid rows count
    • Invalid rows count (will be skipped)
  2. Click Create X students
  3. Wait for processing to complete

Step 6: Verify imported records

After import:

  1. Navigate to People → Students
  2. Search for imported students
  3. Verify data accuracy
  4. Check class assignments (if IDs were provided)

Sample CSV template

Minimum required columns:

student_number,first_name,last_name,gender,date_of_birth,nationality,enrollment_date,student_type,boarding_status,language_of_instruction
STU-001,John,Smith,male,2010-03-15,Zimbabwean,2024-01-10,regular,day,english
STU-002,Mary,Jones,female,2009-07-22,Zimbabwean,2024-01-10,regular,boarding,shona

Extended template with common optional fields:

student_number,first_name,middle_name,last_name,gender,date_of_birth,nationality,enrollment_date,student_type,boarding_status,language_of_instruction,email,phone,residential_address,previous_school,house,stream,notes
STU-001,John,Peter,Smith,male,2010-03-15,Zimbabwean,2024-01-10,regular,day,english,john.smith@email.com,+263771234567,123 Main St,Previous School Name,Lions,Sciences,New transfer student

Error reference

File-level errors

ErrorCauseSolution
"Only CSV files are supported"Wrong file formatExport as CSV from Excel
"File must be 10MB or smaller"File too largeSplit into smaller files
"Missing required columns"Headers incorrectCheck column names match exactly

Row-level errors

ErrorCauseSolution
"Student number is required"Empty student_numberAdd unique identifier
"First name is required"Empty first_nameAdd student's first name
"Last name is required"Empty last_nameAdd student's last name
"Invalid gender value"Wrong gender formatUse: male, female, other, prefer_not_to_say
"Date of birth is required"Empty date_of_birthAdd date in YYYY-MM-DD format
"Nationality is required"Empty nationalityAdd nationality
"Enrollment date is required"Empty enrollment_dateAdd date in YYYY-MM-DD format
"Invalid student type"Wrong student_typeUse: regular, transfer, repeating, special_needs
"Invalid boarding status"Wrong boarding_statusUse: day, boarding, half_boarding
"Invalid language"Wrong languageUse: english, shona, ndebele

Best practices

Before import

  • Backup existing data before large imports
  • Test with a small sample first (5-10 rows)
  • Verify column names match exactly (case-sensitive)
  • Check for duplicate student numbers
  • Confirm grade level and class IDs exist in the system

During import

  • Review all validation errors
  • Don't skip the preview step
  • Note any skipped rows for manual entry later

After import

  • Verify total imported matches expected
  • Spot-check several records for accuracy
  • Assign classes if not done during import
  • Update any missing optional information

Common issues

Excel formatting issues

Problem: Dates appear as numbers or wrong format

Solution:

  1. Select date column
  2. Format cells as Text before entering dates
  3. Or use Excel's TEXT function: =TEXT(A1,"YYYY-MM-DD")

Encoding issues

Problem: Special characters appear corrupted

Solution: Save CSV with UTF-8 encoding:

  • Excel: Save As → CSV UTF-8 (Comma delimited)
  • Google Sheets: File → Download → CSV

Duplicate student numbers

Problem: Import fails due to duplicate identifiers

Solution:

  1. Ensure each student_number is unique
  2. Check existing students don't have same numbers
  3. Use a consistent numbering scheme

Empty columns showing as errors

Problem: Optional columns flagged as errors

Solution: Optional columns should be empty, not contain "N/A" or similar. Leave the cell completely empty.


Outcome

After successful import:

  • ✅ Student records created in the system
  • ✅ Data validated against business rules
  • ✅ Students linked to specified grade levels/classes (if IDs provided)
  • ✅ Import results available for review
  • ✅ Students ready for academic operations