Skip to content

Importing Data

NNP Attendance · Knowledge Base

AdministrationReference article

Importing Data

Here is how files need to be formatted for each import type. Both class and student roster imports accept Excel or CSV files. You can download ready-made sample files below, or use the templates in the Import Data screen.

Class Import (Excel or CSV)

Goal: Create or update classes for a selected semester.

Required column

Required column for class import
ColumnPurpose
Class IDUnique code for the class (e.g., F26-BEG-MW). This is the matching key.

Aliases accepted: class id, classid, class code, code, id.

Optional columns

Optional columns for class import
ColumnPurpose
Class NameDisplay name. If omitted, Class ID is used.
ProgramProgram/track name.
LevelSkill level.
LocationSite/campus.
RoomRoom number.
Meets On / DayMeeting day(s).
Time / Start TimeStart time.

Aliases are accepted for all of these (for example course, title, site, center, weekday, meeting time).

Supported values

  • Level must be one of: Literacy, Pre-Beginner, Beginner, Low Beginner, High Beginner, Intermediate, Low Intermediate, High Intermediate, Advanced, Conversation, Citizenship. Unknown levels are saved as-is but flagged with a warning.
  • Time can be 7:00 PM, 7pm, 19:00, or an Excel time fraction.
  • Days can be combined with , , ; , / , & , or and — for example Monday & Wednesday or Tuesday, Thursday.
  • You can also use a one-column-per-level layout: a column named Beginner containing the start time, another named Intermediate, etc. The importer reads the level from the column header and the time from the cell.

Row outcomes

  • New — Class ID does not exist yet.
  • Update — Class ID exists and one or more fields changed.
  • Unchanged — Class ID exists and no fields changed.
  • Error — Missing Class ID, unreadable time/day, or duplicate Class ID in the same file.

Student Roster Import (Excel or CSV)

Goal: Add students to a specific class for a specific semester.

The roster import is additive and enrollment-focused. It adds new students and enrolls matched students into the class you selected — it never overrides or updates existing student records. Importing a roster will not overwrite names, emails, phones, or notes for students already in the system. To change a student's profile, use the student edit flow instead.

Required columns

Required columns for student roster import
ColumnPurpose
First NameStudent's first name.
Last NameStudent's last name.
Enrollment DateWhen the student enrolled.

Aliases accepted for names include firstname, given name, surname, family name. Aliases for enrollment date include enrolled on, start date, date.

Optional columns

Optional columns for student roster import
ColumnPurpose
EmailUsed to match against existing students.
Phone NumberUsed to match against existing students.
NotesFree-form notes.

Supported values

  • Enrollment Date can be 09/01/2026, 2026-09-01, Sep 1, 2026, or an Excel serial number.

Matching rules

Each row is matched to an existing student in this order:

  • 1. Email — if exactly one student has the same email, the row matches that student.
  • 2. Phone — if the row has no email and exactly one student has the same phone, the row matches that student.
  • 3. Name — if the first and last name already exist but there is no email or phone match, the row is flagged for review. It never merges on name alone.
  • Duplicate emails within the same file are rejected.

What happens after matching

  • New student — A new students record is created with the row's data, then enrolled in the selected class.
  • Existing student — The existing student record is left unchanged; only a new enrollments record is created for the selected class.
  • Already enrolled — The matched student is already in this class — no change at all.
  • Needs review — The row is held until an admin chooses “create new” or picks the correct existing student.
  • Error — Missing required fields or unreadable date.

General tips

  • The first row must be headers.
  • Extra columns are ignored.
  • Column names are case-insensitive and punctuation-insensitive.
  • Downloadable templates are available in the Import Data screen for both import types.

Always review the row outcomes after importing. Rows flagged as Error or Needs review are skipped or held until you resolve them.