TrainGrid User Guide

Functions: Employees

The Employees area is your training roster: every person who receives training, whether or not they ever log in. Here you add people one at a time or — step-by-step function reference.


The Employees area is your training roster: every person who receives training, whether or not they ever log in. Here you add people one at a time or import your HR roster from CSV, keep profiles current, archive leavers, print scannable QR badges, invite employees to the read-only portal, and pull a per-person audit transcript. Open it from the sidebar: Employees.

In this section: Create an employee · Edit an employee · Archive or unarchive an employee · Delete an employee (Administrator only) · Import employees from CSV · Use the employee page tabs (Training · History · Certificates · Notes) · Print an Employee Transcript · Print QR badges · Invite an employee to the training portal · Email employees (ad-hoc message) · Find, filter and export the employee list

Create an employee

Add one person to the training roster so training can be assigned and tracked for them. Only first and last name are required — everything else can be filled in later.

Where: Sidebar → Employees → "New employee" button (top right)  ·  Before you start: "Manage employees" capability — Administrator, Manager and Coordinator by default (togglable per role in the Permissions grid).

OptionWhat it does
First name / Last nameRequired; each up to 100 characters.
Employee numberOptional unique identifier (e.g. from HR); shown monospaced, used for badge printing, check-in and import matching. Up to 50 characters.
EmailOptional; must be a valid address. Required before "Invite to portal" or ad-hoc email can reach this person.
Department / Position / LocationDropdowns of the org's active departments, positions and locations; each offers "None". Position drives the Workforce Competency report's required-training check.
Employment type"Internal" (default) or "External (agency / contract)" — a two-value classification, filterable on the roster and reports.
ShiftFree text, e.g. A, D or N. Up to 30 characters.
SupervisorSearchable picker writing a plain name; free-text escape hatch via the Use "…" entry. Up to 150 characters.
Hire dateDate picker; must be a real date between 1950-01-01 and 30 days from today (rejects Excel-serial garbage and typos like 1899/2099).
Custom fieldsAny org-defined fields (text, number, date or select) appear in their own "Custom fields" section; a select value whose option was later removed shows as "(removed)" rather than being dropped.
NotesFree text up to 5,000 characters; also editable later on the profile's Notes tab.
  1. In the sidebar, click "Employees".
  2. Click "New employee" (top right). The "New employee" form opens.
  3. Enter "First name" and "Last name" (both marked *, the only required fields).
  4. Optionally fill "Employee number", "Email" (needed later for portal invites and ad-hoc emails), "Department", "Position", "Location", "Employment type", "Shift", "Supervisor", "Hire date", any custom fields, "Tags" and "Notes".
  5. For "Supervisor", click the field and either pick from "Current supervisors" (names already in use, listed first so formats stay consistent) or "People" (roster employees), or type any name and click the Use "…" entry — supervisors do not have to be roster employees. Pick "None" to clear it.
  6. Click "Create employee".
  7. Success: a toast reads "Employee created" and you land on the new employee's profile page.
Good to know:
  • Employees are training subjects, not logins — creating one grants no access. Portal access is a separate, read-only invitation.
  • Employment type "External" is the umbrella for agency-supplied and contract workers; it is an attribute, not a separate workflow.

Edit an employee

Update a person's profile details — same form as creation, pre-filled.

Where: Sidebar → Employees → click the employee → "Edit" button on the profile card  ·  Before you start: "Manage employees" capability.

  1. In the sidebar, click "Employees" and open the person (click their row or name).
  2. On the profile card, click "Edit". The "Edit employee" form opens with current values.
  3. Change any fields (same fields and rules as "Create an employee").
  4. Click "Save changes" (or "Cancel" to discard).
  5. Success: toast "Employee updated" and you return to the profile with the new values shown.
Good to know:
  • The profile card shows every stored fact in one place: Employee #, Email, Department, Position, Location, Employment type, Shift, Supervisor, Hire date, Portal access (managers only), archive details when archived, plus any filled custom fields.
  • Notes can also be edited directly on the profile's "Notes" tab without opening the full form; the tab shows "Last edited by … on …" attribution from the audit log.
  • Files (acknowledgements, licences, clearances) attach to the person via the Files card on the profile — separate from per-training-record attachments.

Archive or unarchive an employee

Take a leaver out of active lists and compliance calculations without losing anything. Archiving is the normal way to handle departures; unarchive on rehire and their full history is intact.

Where: Single person: employee profile → "Archive" / "Unarchive" button. In bulk: Sidebar → Employees → tick rows → "Archive N" / "Unarchive N" in the selection bar  ·  Before you start: "Archive employees" capability — Administrator, Manager and Coordinator by default (a sub-capability of Manage employees).

OptionWhat it does
Reason (optional)Free text up to 500 characters, stored and displayed on the profile as "Archive reason".
  1. Open the employee's profile and click "Archive".
  2. In the dialog "Archive <name>?", optionally type a "Reason (optional)" (e.g. "Left the company").
  3. Click "Archive". Success: toast "<name> archived"; the profile badge flips to "Archived" and "Archived on" / "Archive reason" rows appear.
  4. In bulk instead: on the Employees list, tick the checkboxes on the rows, click "Archive N" in the selection bar, add an optional reason, confirm — toast "Archived N employees".
  5. To see archived people, set the list's status dropdown (defaults to "Active") to "Archived" or "All statuses".
  6. To restore: open the archived person and click "Unarchive" (or bulk "Unarchive N"), then confirm. Success toast advises reviewing their training — stale due dates can be rescheduled from each record.
Good to know:
  • Archived employees are removed from active lists and compliance calculations; their full training history is preserved and they can be unarchived at any time.
  • The CSV import can archive in bulk too — the "Archive active employees who aren't in this file" option treats the file as your current roster.
  • Archive is the answer for anyone who might return or who has any training history; permanent Delete exists only for zero-history profiles.

Delete an employee (Administrator only)

Permanently remove a profile created by mistake. Deliberately narrow: only an Administrator sees it, and only on an employee with zero training records — everyone else gets archived instead.

Where: Employee profile → red "Delete" button beside Archive (appears only when the conditions below are met)  ·  Before you start: "Delete employees" capability — Administrator (owner) only. The employee must have no assignment history at all, org-wide.

  1. As an Administrator, open the profile of an employee with no training records.
  2. Click "Delete" (it renders only when both conditions hold — on anyone with history the button simply is not there).
  3. Read the dialog "Delete this employee?": it confirms the person has no training records and that attached files and portal access are removed with the profile.
  4. Click "Delete permanently".
  5. Success: toast "<name> deleted." and you are returned to the Employees list, where the person no longer appears.
Good to know:
  • Zero-history guard: the delete is re-verified transactionally in the database (role and history), so a stale page can never delete a person who has since been assigned training.
  • Fail-closed UI: if the history check cannot complete, the button is withheld rather than shown on a guess.
  • Deleting removes the profile, its attached files and any portal access in one transaction, and writes an audit entry. It cannot be undone — the dialog itself says: if they might return, archive them instead.
  • Managers and Coordinators never see Delete; that is by design, not a bug.

Import employees from CSV

Load your whole roster from a spreadsheet in minutes — a guided four-step wizard (Upload → Map columns → Preview & import → Done) that recognizes common HR-system exports, never merges anyone silently, and hands you a per-row report of exactly what happened.

Where: Sidebar → Employees → "Import CSV" button (or /employees/import)  ·  Before you start: "Import employees" capability — Administrator, Manager and Coordinator by default (a sub-capability of Manage employees).

Set up (one time):

  1. Optional: on step 1, click "Download template" to get a CSV with the exact expected headers (First Name, Last Name, Employee Number, Email, Department, Position, Location, Shift, Employment type, Supervisor, Hire Date, Notes) and one sample row.
OptionWhat it does
Default locationApplied to rows whose Location cell doesn't match an existing location. Default: "No default location".
Assign internal employee numbers (TG-0001, TG-0002…) to rows without oneOpt-in, default OFF. Gives numberless new people an exact identifier so future imports, badges and check-in are unambiguous; assigned numbers are listed in the import report. Leave off if HR sheets are your number source.
Archive active employees who aren't in this fileOpt-in, default OFF. Re-sync mode: anyone active today but absent from the file is archived (history preserved, restorable on rehire). Off = only add new people.
  1. In the sidebar, click "Employees", then "Import CSV".
  2. Step 1 — Upload: click "Click to choose a .csv file" and pick your file (up to 2,000 rows per import). Both the template and common HR exports ("Legal First Name", "Home Department Description", "Hire/Rehire Date"…) are recognized; Excel-serial and ISO dates both work.
  3. Step 2 — Map columns: check the automatic mapping of each employee field to a file column; fix any via the dropdowns ("Not mapped" to skip a field). First and last name are required. Click "Continue".
  4. Step 3 — Preview & import: review the badges "N ready to import" and "N with errors (will be skipped)", and the row table (first 300 shown) where each row reads Ready, Needs review, or lists its exact issue.
  5. If rows are flagged "needs review" (same name + department as an existing person or another row, with no number or email), decide each one: "Same person — skip" or "Different person — create new" (or use "Mark all as same person" / "Mark all as new people"). The Import button stays disabled until every flagged row has a decision.
  6. Optionally set "Default location" (used when a row has no matching location), tick "Assign internal employee numbers (TG-0001, TG-0002…) to rows without one", and/or tick "Archive active employees who aren't in this file" to treat the file as your current roster.
  7. Click "Import N employees".
  8. Step 4 — Done: read the tiles Created / Skipped (duplicates) / Skipped (errors) (plus Archived matches when relevant) and the per-row detail sections; click "Download import report" for a CSV of every row's outcome and reason, then "View employees".
  9. Success: toast "Imported N employees" and the new people appear on the roster; the import is recorded in the audit log.
Good to know:
  • Create-only: the import never updates an existing employee. Rows matching an existing employee number or email are skipped automatically as duplicates; re-importing the same file will not create duplicates.
  • Rows with neither number nor email are matched by name + department; ambiguous matches are held for your explicit review — no one is merged or dropped silently.
  • Missing departments, positions and locations named in the file are created automatically and counted on the Done screen.
  • Per-row validation mirrors the server exactly (required names, valid email, hire-date window, field length caps, Employment type must read Internal/External or a known alias) — a bad cell skips that row, never the whole import.
  • Matching archived employees are found and left unchanged; the Done screen links "View archived employees" so you can unarchive them to restore their history.
  • Values exported from TrainGrid round-trip cleanly (the formula-injection escape is reversed on read).

Use the employee page tabs (Training · History · Certificates · Notes)

One page answering four different questions about a person: what is their current standing per course, what is their complete audit trail, what credentials do they hold, and what should we remember about them.

Where: Sidebar → Employees → open an employee → tab strip below the profile card: "Training", "History", "Certificates", "Notes"  ·  Before you start: Any role that can view employees; Notes editing needs "Manage employees". Location-scoped members see only employees in their locations.

  1. Open an employee from the Employees list. The page opens on the "Training" tab.
  2. Training: read one row per course — Course, Status, Due date, Completed on, Expires, Grade — the person's CURRENT standing (latest record per course; expiry dates colour red when past, amber within 30 days). "Assign training" sits on the profile card for active employees.
  3. Click "History": every assignment ever, newest first — Course, Version, Status, Due date, Completed on, Grade, Instructor, Expiry, Competency. The Version column shows which course revision each record was earned against ("v1.0 Superseded" vs "v2.0 Current") — the complete per-employee audit trail. Click any row to open the full record sheet.
  4. Click "Certificates": cards for completed certificate-bearing courses, each with Completed and Expires dates and a colour-coded chip ("Nd left", "Expired Nd ago", "No expiry") plus any attached certificate files, downloadable.
  5. Click "Notes": read or (with Manage employees) edit the free-text notes; a "Last edited by … on …" caption shows attribution.
  6. Success looks like: each tab loads its table/cards; other screens (e.g. a Training Matrix cell's "View training history" button) deep-link straight to the History tab.
Good to know:
  • Failed completions never appear on the Certificates tab — a completion below the passing grade is not a held credential.
  • History is capped at the most recent 500 assignments on screen; the Employee Transcript report carries the full set for print/export.
  • The tabs honour a ?tab= link (training, history, certificates, notes) so other surfaces can land you on the right one.

Print an Employee Transcript

Generate the printable, auditor-ready document of one person's complete training history — every record with the course version it was earned against, plus competency and qualification, ending in a signature footer.

Where: Sidebar → Reports → "Employee Transcript" card → pick an employee  ·  Before you start: Access to Reports; "Export data" capability gates the CSV button (on by default for all staff roles).

  1. In the sidebar, click "Reports" and open the "Employee Transcript" card.
  2. Use the employee picker to search and select any employee — archived staff included.
  3. Read the report: an identity block (name, #, Department, Position, Location, Shift, Supervisor, Hire date), a summary line ("N training records" with completed / pending / overdue / expired / failed / waived counts), and the full table — Course (with "vN" and "(superseded)" where a newer version is current), Category, Status, Due date, Completed on, Grade, Instructor, Recorded by, Cert. expires, Competency.
  4. Click Print for the paper copy — the print layout includes a signature footer for auditor sign-off — or Export CSV for the file (adds Version, Qualification, Assessor and Assessed on columns).
  5. Success: a one-page-per-person document an auditor can sign, with no version or competency ambiguity.
Good to know:
  • The transcript is the document handed to an auditor: every record permanently shows the version it was completed against — a version bump never rewrites history.
  • Competency and Qualification are shown separately from training status, so "trained" is never silently read as "qualified".
  • Portal users have their own self-serve copy: the portal's "My transcript" page with its own print button.

Print QR badges

Produce a printable A4 sheet of scannable QR badges — one per employee — used with the Scan check-in page to mark attendance at group training sessions.

Where: Sidebar → Employees → "Print badges" button (top right; page title "Print QR badges")  ·  Before you start: "Manage employees" capability (same gate as adding employees). Location-scoped members get badges only for their locations.

OptionWhat it does
DepartmentFilters the sheet to one department; default "All departments".
Training courseFilters to people assigned that course (any version of its family); default "All courses".
Per-badge include checkboxOn by default for everyone; unticking removes that badge from the printed sheet only — the card stays on screen, dimmed.
  1. In the sidebar, click "Employees", then "Print badges".
  2. Narrow the sheet with the "Department" dropdown (default "All departments") and/or the "Training course" dropdown (default "All courses") — the course filter lists "CODE — Title" and includes everyone assigned any version of that course.
  3. Untick the checkbox on any badge you don't need ("Include <name> in the printed sheet") — excluded badges dim on screen but stay visible so you can re-tick them; the count line reads "N of M badges selected to print".
  4. Wait for the "Print badges" button to enable — it shows "Preparing n/N…" until every QR code has generated and loaded. If any fail, a "QR unavailable" card and a "Retry" button appear.
  5. Click "Print badges" and print the browser dialog's output.
  6. Success: an A4 portrait sheet, four badges per row, headed with your organization name and the badge count; each badge shows the QR, the person's name and their employee number (or department when they have no number). Use "Scan check-in" (button on the same toolbar) to scan them at the session.
Good to know:
  • Only active employees appear — archived people get no badge.
  • Each QR encodes the employee's identifier token, not personal data; it is read by the Scan check-in page.
  • Printing works from dark mode too — badges force black-on-white ink.
  • The button refuses to print until every QR is ready, so a half-rendered sheet can't be produced.

Invite an employee to the training portal

Give an employee read-only access to their own training: a "My training" page and a printable "My transcript". They activate via a personal link and set their own password — no password is ever assigned or stored in a viewable form.

Where: Employee profile → "Invite to portal" button (appears only for an active employee with an email who isn't already linked)  ·  Before you start: "Manage employees" capability. The employee must be active and have an "Email" on their profile — add one via Edit first if missing.

  1. Open the employee's profile and click "Invite to portal".
  2. A dialog "Portal invitation sent" opens: if email is configured the invitation has been emailed, and a copyable activation link (/portal-accept/<token>) is shown either way — use the copy button if a spam filter might eat the email.
  3. Click "Done". The profile's "Portal access" field now reads "Invited" and the button relabels "Resend portal invite" while an invite is pending.
  4. The employee opens their link, signs in or creates an account with the email on their profile — choosing their own password at that point — and lands on the read-only portal: "My training" (their assignments with status, due dates, grades and expiries) and "My transcript" (their printable history).
  5. Success: the profile's "Portal access" field reads "Active". The org-wide roster of who is Invited/Active/Expired lives under Administration → Users → "Employee portal access".
Good to know:
  • The portal is read-only by design — employees can view and print, never record or edit anything.
  • They must use the email on their profile; the invitation is personal and expires (an expired one can simply be re-sent).
  • Portal users set their own password at activation; passwords are never assigned by an admin nor recoverable anywhere in the system.
  • Archiving or deleting the employee removes portal access with the profile.

Email employees (ad-hoc message)

Send a one-off email — e.g. "Reminder: forklift refresher this Friday" — to the employees behind selected training rows, without leaving the app. Every send is recorded in the Email log as "Email employees".

Where: Sidebar → Record Completion → tick rows → "Email" button in the selection bar → "Email selected employees" dialog  ·  Before you start: "Send email" capability — Administrator, Manager and Coordinator by default. Recipients need an email on their employee profile.

OptionWhat it does
SubjectRequired, max 200 characters.
MessageRequired plain text, max 5,000 characters.
  1. In the sidebar, click "Record Completion".
  2. Filter to the audience (e.g. click "Overdue" in the status button row, or filter by course), then tick the checkboxes on the rows whose employees you want to reach.
  3. In the selection bar that appears, click "Email".
  4. In the "Email selected employees" dialog, enter a "Subject" (up to 200 characters) and "Message" (up to 5,000).
  5. Click "Send email".
  6. Success: a toast like "Emailed N employees", with "· N failed" / "· N without an email" appended when applicable. If nobody could be reached, the dialog stays open with your draft intact and explains why.
Good to know:
  • Anyone without an email on file is skipped — and counted honestly in the result toast.
  • Employees who share an email address receive the message once.
  • The message is sent from TrainGrid on behalf of your organization, with your org logo, and every send is logged under Administration → Email log as type "Email employees".
  • Selection is by training row, but the recipients are the distinct employees behind those rows.

Find, filter and export the employee list

Work the roster at scale: search, slice by department/location/tag/status/employment type, sort, choose visible columns, and export exactly what you're looking at (or a ticked selection) to CSV.

Where: Sidebar → Employees — toolbar above the table  ·  Before you start: Any staff role; the "Export CSV" button requires the "Export data" capability.

  1. In the sidebar, click "Employees".
  2. Type in "Search name or number…" (matches first name, last name or employee number; results update as you type).
  3. Narrow with the dropdowns: "All departments", "All locations" (shown when the org has more than one), "All tags" (when tags exist), the status filter ("Active" by default, "Archived", "All statuses") and "All employment types". "Clear filters" resets everything.
  4. Click column headers (Name, Employee #, Department, Position, Employment type, Hire date, Status) to sort — ascending → descending → cleared.
  5. Click "Columns" → "Show columns" to toggle base columns; org custom fields appear under "Custom fields" and are hidden by default. Choices persist in your browser.
  6. To export: click "Export CSV" for everything matching the current filters, or tick rows first — the button relabels "Export N selected". Success: a toast "Exported N employees" and the file downloads with all profile columns, Notes and every custom field.
Good to know:
  • Exports cap at 5,000 rows; past that the file is named employees-partial and a warning asks you to filter down for the rest.
  • The CSV preserves the exact on-screen order and includes Employment type, Status, Notes and all custom fields — one file that mirrors the roster.
  • A paperclip beside a name means the employee has attached files; the count shows on hover.
  • Location-scoped members see and export only employees within their locations (rows with no location included, matching the dashboard).