Skip to content
LEAPDocs

Bulk upload

Loading teachers, students and enrolments from CSV, with a dry run before anything is written.

How it works

  1. 1
    Download the template

    Use the template for the entity you are loading. Column names are exact; do not rename them.

  2. 2
    Fill it in

    One record per row.

  3. 3
    Upload — nothing is written yet

    The file is parsed and validated first.

  4. 4
    Read the dry-run result

    Per-row outcomes: what would be created, updated, skipped or rejected, and why.

  5. 5
    Commit

    Only valid rows are written.

What validation catches

Duplicate emailOutcome: Skipped: The account already exists. Remove the row or accept the skip.
Missing required fieldOutcome: Rejected: Fill it in and re-upload.
Unknown sectionOutcome: Rejected: Create the section first; rostering depends on it.
Malformed emailOutcome: Rejected: Correct the address.
Trailing blank rowOutcome: Skipped: Accepted and skipped since 2026.06.1 — earlier versions rejected the whole file.

Doing it safely

Upload ten rows first, confirm they landed as expected, then upload the rest. A thousand-row file that validates cleanly but maps students to the wrong sections is far more work to unpick than to re-upload.