Skip to content

District & School Users

You have two ways to add district and school users to TKG Analytics. Both produce the same end state, so pick whichever fits the change you're making.

Two paths to add a user

UI Invite CSV Import
Best for One or two changes at a time District onboarding, bulk reorgs, nightly SIS syncs
Where District Users / School Users page (see Inviting Users) File Uploader (see SIS Data Upload)
Email Sent automatically with an OAuth-aware accept link None; the user is provisioned directly
Sign-in Recipient signs in with Google or Microsoft to accept Recipient signs in normally on next visit
Deprovisioning Manual (deactivate from the user's edit page) Anyone still managed by the import and omitted from the next CSV is deactivated automatically
Audit trail Each change is attributed to the inviter Each change is attributed to the CSV import job

When to use the UI invite

  • Adding a single principal who just started.
  • Granting a new district, school, or district admin user access without re-uploading the whole roster (District Admins are capped at 5).
  • Promoting a school user to a district user.
  • Anything where the round-trip email is fine and you don't want to risk a stale CSV deprovisioning someone else by accident.

When to use the CSV import

  • Onboarding a new district (initial bulk load).
  • Reorganizing schools (multiple users move at once).
  • Nightly SIS sync, where the CSV is the source of truth and deprovisioning is the desired behavior.
  • Any time you'd rather edit a spreadsheet than click through one user at a time.

Teacher accounts are not on this page. Teacher rosters are managed exclusively from your SIS export and have no UI invite path. See Teacher Users.


What “User Scoping” Means

Scoping limits what each user can see and do in the platform. Whichever path you use (UI invite or CSV), the role you assign determines what the user can see.

  • Scoping is enforced across navigation, dashboards, lists, detail pages, exports, and views.
  • On each CSV import, we provision (create/update) users and deprovision (deactivate) users who are no longer listed and are still managed by the import. The UI invite never deprovisions; deactivation is explicit.

Audit before importing: Importing a new CSV replaces the current roster for that role scope. Anyone omitted will be deprovisioned (access removed), unless their role or school access was changed in the app, or they were reactivated in the app, either of which takes them off nightly management. The UI invite flow does not deprovision; it only adds.


Role Scopes (What each role can access)

District Users

  • Can view all schools, all teachers, and all students within the district.

Only grant district-level access to staff authorized to view district-wide information.

School Users

  • Scoped to one school.
  • Can view and manage only the teachers and students at their assigned school.

Only grant school-level access to staff authorized to manage school-wide information.

Additional Access (Uploader and Maintenance)

Two roles layer on top of a user's primary District or School role rather than replacing it. Grant them from a user's edit page by checking Uploader or Maintenance under Additional Access. They are not part of the CSV import.

  • Uploader: adds access to the File Uploader so the user can manually import assessment and SIS files. See SIS Data Upload.
  • Maintenance: adds the ability to enable and disable Maintenance Mode for the district.

Add-ons keep the primary role. A district user you also mark as an Uploader stays a district user; the checkbox adds upload access without changing what they can already see.


What Happens on Import (Provisioning & Deprovisioning)

  • New users in the CSV are created with the given role and scope.
  • Existing users (matching email) are updated (title/name, scope, etc.).
  • Deprovisioning: After a successful import, any district, school, or teacher user still managed by the import and not present in the latest CSV will have their access rights removed for that account. A user whose role or school access was changed in the app, on their edit page or in the rollover wizard, is no longer managed by the import: they keep their access until a District Admin deactivates them. The same is true of a user who was reactivated in the app, so a reactivation is not undone by the next import. See Custom User Settings.

Deprovisioning behavior: This process removes access; it does not delete the person from the system. To restore access, re-include them on a future CSV or update them in the UI.


CSV Upload Format

Use separate CSVs for district and school users. Headers must match the names below. (If you're adding a single user, the UI invite path above is faster.)

District Users CSV

Required Headers:

  • school_id
  • first_name
  • last_name
  • email

Optional Headers:

  • title

Special Rule:

  • For district users, the school_id must always be 001.

School Users CSV

Required Headers:

  • school_id
  • first_name
  • last_name
  • email

Optional Headers:

  • title

Special Rule:

  • For school users, the school_id must be the three-digit MSIS school ID that matches their assigned school.

Tips for Success

  • Ensure every active district/school user you want to keep is present in the CSV each time you import.
  • All email values must be unique and valid.
  • Do not include blank rows or extra columns.
  • Avoid trailing spaces in any field, especially school_id.
  • Confirm school_id formatting (001 for district users; three-digit MSIS for school users).

Uploading Your Completed CSVs

Once you’ve entered all required information and verified your CSVs:

Follow the upload steps here:
Go to SIS Data Upload Instructions



Need Help?