Importing students
Screen: Students > Import an existing list, or Settings > Data > Import an
existing list (/students/import). Who: owner only.
Accepted files
In the Excel or Google Sheets spreadsheets zone:
- .xlsx (Excel; Google Sheets "Download as Microsoft Excel"): the first sheet is read.
- .csv separated by commas or semicolons. Accents in CSV files saved by French Excel are handled.
- The first row must hold the column titles.
- At most 1,000 students per import. For more, split the file.
- The file is read in the browser: it is never uploaded or kept; only the student rows are.
Reading a photo of names (AI)
A handwritten or printed list can be photographed: a vision AI transcribes the names, then you fix them before importing.
- Who: owner only. The option is off by default: in step 1, in the Images of your lists zone, tap Enable for my school. The text shown explains that the photo is sent to an external AI service (OpenRouter and the model provider). Turn off photo reading disables it again.
- Photo: one page at a time, flat, sharp and well lit. Accepted formats: JPEG, PNG or WebP. The photo is resized in the browser before it is sent.
- Reading: tap Take a photo or Choose an image. The names appear in step 2; Add another page adds to the list.
- Check required: fix the first name, last name and group, or remove a row that matches no one. A row marked Uncertain name: check it must be reread.
- Minor: names are adults by default. Tick Minor for a child, or Mark all as minors / Mark all as adults for the whole list.
- Groups: if the page shows a group, class or section, the app fills Group (optional). Otherwise leave it empty.
- Enrollment date: a photo does not carry one. The names read are enrolled on the import date, marked "estimated" (see "Enrollment date" below).
- Then: step 3 (duplicates, invalid rows, Import N students) works as for a spreadsheet. Nothing is imported before you confirm.
- Number of photos: at most 50 photos per school over a rolling 24 hours, and 10 during the trial period (a lower limit against abuse). A failed reading counts too. Closed while the school is being verified or is suspended.
- Limits: at most 1,000 names per import, one page per photo, no PDF. Handwriting is recognized with varying accuracy and a blurry photo gives worse results: always check.
- Privacy: the photo is sent in memory to OpenRouter and the model provider to read the names. Martialnote keeps neither the photo nor the names it reads; it only keeps technical metadata (size, model, number of names, cost). Only enable the option if you are allowed to send these names, including minors' names.
- Credits and cap: the service limits the number of readings per school over 24 hours. If the limit or the credits are used up, a message says so: try later or contact the person who manages the service. A failed reading can be retried.
Steps
- File: tap Choose a file. The number of rows appears; Change picks another file.
- Match the columns: the app guesses what each column is (First name, Last name, Email, Phone, Groups, Minor, Enrollment date) from its title, in French or English. Fix it with the drop-down list; (ignore) for a useless column. One column must be the first name and one the last name.
- Check: the app shows "N new students · N duplicates skipped · N invalid rows", and See details lists each skipped row with its number and reason.
- Tap Import N students. The app goes back to the list.
Enrollment date
The Enrollment date column gives the date the student started at the school. It counts for the active students calculation and therefore for the Martialnote plan (see the Martialnote plan article): better to read it than to leave it empty.
- Recognized titles: "date d'inscription", "inscription", "inscrit le", "inscrit depuis", "membre depuis", "date d'arrivée" and, in English, "enrolled", "enrollment date", "start date", "joined", "member since".
- Accepted formats: a date cell from the spreadsheet,
YYYY-MM-DD,DD/MM/YYYYorMM/DD/YYYY(separators/,-or., a four-digit year). - Day / month order: if a value in the column has a first number greater than 12 (for example
25/03/2020), the whole column is read day/month; if a second number is greater than 12, it is read month/day. Otherwise, the default order is day/month for a French school and month/day for an English school. The preview states the order used ("Dates read as day/month/year.") and an Swap day and month button changes it if needed. - Contradictory column: a column that holds both clues at once (a day > 12 and a month > 12) is refused as a whole. Fix the file, or map the column to (ignore).
- Invalid date: a date in the future, before January 1, 1950 or unreadable (
31/02/2024) makes the row invalid (reason "invalid enrollment date (before 1950 or in the future)"). - No date: a student imported without a date (empty cell, missing column, or import by photo) gets the import date and the "estimated" mark. Their profile then shows "Enrolled before …". The preview reminds you: "Students without a date will be enrolled before …".
- Active students (Martialnote plan): for an imported record, the spreadsheet enrollment date, as it was at import, is the reference date: the record counts as recent for 90 days from that date. A record imported without a date never counts as recent: it counts only through its activities (attendance, dues payment, progress). Correcting the date on the profile after the import does not change this calculation.
Rules
- Duplicate: same first and last name as a student already at the school, or as a row higher in the file. Accents, capitals and extra spaces are ignored ("Zoe BELANGER" = "Zoé Bélanger"). Duplicates are not imported.
- Invalid row: missing first or last name, badly formed email, or text too long (over 100 characters for a name, 30 for a phone, 80 for a group name). It is not imported.
- Completely empty rows are ignored without being counted.
- Groups: several groups in one cell are separated by a comma, semicolon or slash. A group that does not exist yet is created.
- Minor: "oui", "o", "yes", "y", "x", "1", "vrai", "true" mean minor; anything else (or an empty cell) means adult. For a minor, the email is a parent's: the app creates their family and a parent with that email; their phone is not kept.
- "This file is too large": the file exceeds what the app accepts in one upload (extreme case, with very long cells). Split it into several smaller files.
- All or nothing: if an error occurs during the import, nothing is imported; you can try again.
- After the import, complete the profiles as needed (parents' names, emergency contacts).
Didn't find your answer?
Write to bonjour@martialnote.com from your account's address, saying which screen is involved and the message shown. Support is by email only, with no guaranteed response time. Never send information about your students.