Bulk Importing Workers
Import hundreds or thousands of workers from a spreadsheet, check every row in a preview before anything is saved, and update existing workers safely.
Last checked against the product:
Before You Start
Who can do this, and where.
Before you start
- Agency console: the Admin access level or a super admin. Importing needs both "Add and change workers" and "Change pay and charge rates", so the Coordinator preset cannot import.
- Client dashboard: the Manager role (tenant_manager) or Admin role (tenant_admin).
- The client, its sites, and any cost codes and departments you name in the file already set up.
Agency console: Workforce > Import workers. Client dashboard: Workforce > Import workers.
The import reads a CSV file, checks every row on its own and shows you a preview. Nothing is saved until you confirm. It reads files from Excel in any common encoding, semicolon-separated files and quoted cells, and keeps accented names such as Łukasz, Ștefan and Rūta intact.
The Template
Start from ours.
Agency console: click Download CSV template. Client dashboard: click Download template. In Excel, save as "CSV UTF-8" to keep accents. Other encodings are converted and flagged in the preview.
Columns
Only the employee ID is always needed.
| Column | Notes |
|---|---|
| employee_id | Badge or payroll number. Always required. |
| name | Full name. Needed for a new worker. |
| client_name, location_name | The client (agency console) and home site, by name. Or set a default on the upload screen. |
| email, phone | Used for set-up links and messages. Phone must be a UK mobile for texts. |
| hourly_rate, charge_rate | 11.44, £11.44 and 11,44 are all read as 11.44. A rate that is not a number is an error, never saved as blank. |
| job_role, start_date, preferred_language | Dates as DD/MM/YYYY. Language is en, pl, ro or lt. |
| cost_code, department | Must already exist. |
| pin | Optional starting PIN, stored only as a one-way hash. |
| sms_opt_in | Whether the worker has agreed to texts. |
| max_hours_per_week, hours_limit_reason, hours_limit_hard | The weekly hours limit (for example 20), why (for example Student visa, term time) and whether it blocks booking (yes) or only warns (no). See Skills, Tickets and Hours Limits. |
| skills | Skill names from the client's list, separated by commas, each with an optional expiry date in brackets, for example FLT counterbalance (31/03/2027), Banksman. They are added to the worker, never removed. |
The first row must be the headings. Use any columns, in any order.
Import (Agency Console)
Two steps.
Upload and preview
Choose the CSV file. Optionally pick a Default client, Default site (new workers) and Default hourly rate (new workers). Tick Reactivate returning workers if inactive or dormant workers in the file should become active again. Click Preview import.
Check the preview
Every row shows whether it will be added, updated, left alone or skipped, with the reason for any error or warning. Tick Only rows with errors or warnings to focus on problems.
Import
Click Import (it shows how many rows will be written and how many skipped). Or click Start again.
Import (Client Dashboard)
Your own workers only.
Upload
Click Upload CSV and choose the file. Optionally pick a Default location (new workers) and tick Reactivate returning workers. Click Preview import.
Check the preview and import
Read the preview, then click Import, or Start again. location_name, cost_code and department must match yours; case does not matter.
How Rows Are Handled
Safe updates.
After Importing
Next steps.
Limits
Worth knowing.
Troubleshooting
Common problems.
| Problem | What to do |
|---|---|
| Accents look wrong in the preview | Save from Excel as "CSV UTF-8" and upload again. |
| Every row says the client is missing | Add a client_name column, or choose a Default client. |
| A returning leaver was not reactivated | Tick Reactivate returning workers and import the row again. |
Know who turned up, and pay every hour right.
Face-verified clock-ins, live geofencing and payroll-ready timesheets in one system. Tell us how your shifts run and we will show you how it fits.
Hosted in the EU · Your largest site live first, with us alongside · No app needed to clock in