Demo data notice Any names, student records, IDs, and examples shown in this documentation section are fictitious sample data for demonstration and training purposes only. Any resemblance to real persons, schools, or records is purely coincidental.
Choose the right path
- Use manual add for a few students
- Use CSV import for batches and class updates
- Use Student Enrollment on Students → Enrollment to advance existing students to a later school year
- Use Classes to assign students to classes in the current school year
- Students → Export CSV uses import-friendly enrollment columns (
first_name,last_name,school_year,grade,class, and optionalexternal_student_id) so you can edit year, grade, and class and re-import the same file
How to add one student manually
- Go to Students → View Students.
- Click + Add Student.
- Enter required fields:
- First name
- Last name
- Grade (
0to12, where0is Kindergarten) - School year
- Optional fields:
- Middle name
- External student ID (up to 20 characters)
- Class (choose an existing class for that school year and grade, create a new one, or Assign a class later)
- Click Save (or Save & Add Another).
If a matching student already exists
Before creating a new record, hFlow checks whether an existing student already matches the name or external student ID you entered. This applies wherever you can add a student manually (Students, Enrollment, and Classes).- One match found: hFlow shows the existing student’s name, external ID, and whether they are currently enrolled or were last enrolled in an earlier year. Choose Re-enroll to add the year, grade, and class you entered to that existing student, or Create new student anyway if this is genuinely a different person.
- Several matches found: hFlow lists the possible matches so you can pick the right one to re-enroll. If none of them are the right person, choose None of these, create new. Adding an external student ID before saving again can help hFlow tell two similarly named students apart.
- No match found: hFlow creates the student as usual.
Add Student fields explained
- First name (required): Student’s given name.
- Last name (required): Student’s family/surname.
- Middle name (optional): Helps distinguish students with similar first/last names.
- Grade (required): Numeric grade level (
0to12), where0represents Kindergarten. - School year (required): Academic year context for enrollment and reporting.
- Class (optional): Class for that school year and grade. Choose an existing class, create a new one, or Assign a class later (student enrolls unassigned; you can place them later on Classes).
- External student ID (optional, max 20): Any ID the school wants to use as a cross-reference in another system (for example, the school’s main directory or SIS record ID).
How to add students via CSV
- Go to Students → View Students.
- Click Import CSV.
- Click the ? help icon in the import header to review exact format and rules.
- Upload your CSV and confirm row count.
- Click Proceed.
- Review import results.
- Download:
- Successes (includes generated
student_code) - Failures (includes
failure_reason)
- Successes (includes generated
CSV format rules (quick reference)
Required columns:first_namelast_nameschool_year(formatYYYY-YYYY, example2025-2026)grade(integer0to12)
middle_nameclassexternal_student_id(max 20 chars, unique in org when present)
- CSV only
- Maximum 500 rows
- Headers are case-insensitive and normalized
Common CSV outcomes
- If class is provided and does not exist, class is created automatically
- If student is already enrolled for same year+grade, row updates class assignment
- Two students with the same first and last name in the same school year but different grades import as separate records
- When two different students share the same name in the same grade and year, use
middle_nameorexternal_student_idto distinguish them - Duplicate
external_student_idvalues are rejected
Troubleshooting
- “Missing required columns”: verify exact required headers
- “Invalid year format”: must be
YYYY-YYYYand second year = first + 1 - “Invalid grade”: must be between
0and12 - Class required error: choose a class when that grade already has classes
- “Multiple students match this name”: add
external_student_idor a distinctmiddle_name

