Importing Employees
Bulk-import employees from an Excel template to onboard your team quickly
If you have more than a handful of employees to add, use the Import function instead of creating profiles one by one. You download a template, fill it in with your employee data, and upload it. Hopshift checks every row before anything is written, then creates or updates the profiles in bulk.
Before You Start
The template references companies, departments and positions by name:
- Companies: each row must match a company name in your group. The template offers them as a dropdown.
- Departments and Positions: matched by name (case-insensitive) within the employee's company. If a name does not match, the import does not fail: the assistant shows a Match to Existing Data step where you pick an existing value or create the new one on the spot.
Step 1: Download the Template

- Go to Workforce > Employees.
- Click Import (top-right, next to Export and Add Employee). The Import Assistant opens.
- Choose Get a template, then Download template.
The file is employee-import-template.xlsx. It has an Instructions sheet, an example row on the data sheet, dropdowns for Company, Department, Status, Employee Type and Gender, and a tooltip on every column header. Overwrite the example row with your own data.
Template Columns
Column headers are in plain English, in this order: Employee ID, Company, Works At, First Name, Last Name, Nickname, First Name (TH), Last Name (TH), Title (TH), Email, Phone, Status, Employee Type, Department, Position, Hire Date, Base Salary, Bank Name, Bank Account No, National ID Number, SSO Number, Tax ID, Gender, Birthday, Nationality, Contract End Date, Probation Days, Emergency Contact Name, Emergency Contact Number, Emergency Contact Relation, Address.
The ones that matter most:
| Column | Required for new rows | Notes |
|---|---|---|
| Company | Yes | Pick from the dropdown |
| First Name | Yes | Legal first name in English |
| Last Name | No | Legal last name in English |
| Yes | Unique per company. Used to match the row to an existing employee | |
| Employee ID | No | Leave blank for new employees. When updating, keep the value exactly as exported |
| Works At | No | Read-only. Intercompany assignments are managed on the Employment page, not by import |
| Hire Date | Recommended | YYYY-MM-DD |
| Employee Type | No | full_time, part_time, contract, or intern |
| Status | No | ACTIVE, INACTIVE, TERMINATED, or ON_LEAVE |
| Department, Position | No | Must match an existing name in that company, or resolve them during import |
| Base Salary | Recommended | Numeric, no currency symbol (e.g. 35000) |
| National ID Number | Recommended (TH) | 13-digit Thai national ID. Needed before payroll can be finalized |
| Gender | Recommended (TH) | M, F, non_binary, or prefer_not_to_say. Needed before payroll can be finalized |
| Birthday | No | YYYY-MM-DD |
| Phone | No | Include the country code (e.g. +66812345678) |
There is no invite column. Invites are offered as a button at the end of the import.
For Thai companies, fill in National ID Number and Gender at import time. Employees missing either field block payroll finalization and will need to be updated individually afterwards. Birthday is not required to finalize.
Step 2: Fill in the Template
Fill one employee per row. A few tips:
- Dates must be in
YYYY-MM-DDformat. Excel may reformat dates automatically: check the cell format is set to Text or that dates display as2024-03-15not15/03/2024. - Company, department, and position values are matched case-insensitively. A value of
kitchenwill match a department namedKitchen. - An email that already exists in the same company means an update, not an error. The row's values are written over the existing record.
- An email that exists at another company in your group is treated as a transfer and needs your confirmation before anything happens.
- Leave optional columns blank: do not delete the column headers.
An email that already exists at another company in your group is treated as a transfer, not a new hire. Confirm transfers only if the person really moved company.
Keep the Employee ID column exactly as exported when updating. It is how rows are matched to existing employees; a changed ID creates or mismatches a record.
Step 3: Upload and Validate
- Go back to Workforce > Employees and click Import.
- Choose Upload a file and select your completed template. You can also Paste from spreadsheet or Upload a screenshot.
- The assistant runs a dry run over every row before importing anything and replies "I've validated your data. Here's a summary".
The summary lists:
- New employees that will be created
- Updates to existing employees, with the changes shown
- Transfers detected between companies (Confirm transfers or cancel)
- Blank cells on existing employees where a value already exists: you tick the ones you really want cleared
- Departments or positions that need resolving
- Errors and warnings, row by row
Depending on what it found, the buttons are Continue with N valid rows, Fix and retry, Apply fixes & re-validate, or Skip N errors & continue.
Blank cells on an existing employee do not wipe data automatically. The assistant lists every blank-over-value and you tick the ones you want cleared.
Step 4: Confirm Import
Once you are happy with the summary:
- Click Continue with N valid rows if you want to leave error rows out, or fix the file and re-upload.
- Click Import N records.
- Optionally choose Send invite emails too. Each new employee receives a sign-in link; there is no password to set.
After Import
The assistant reports "Import complete" with a short summary and offers View team or Import more.
Go to Workforce > Employees to verify the imported records. For Thai employees, confirm that National ID Number and Gender are filled before running payroll.
If you need to update existing employees in bulk (e.g. change salaries or departments), use the Export function to download current data, make changes, and re-upload. Rows are matched by Company + Email first, then by Employee ID, and existing records are updated rather than duplicated.
Related
- Adding an Employee: add employees one at a time
- Exporting Employees: download the current data before a bulk update
- Employee Management: manage profiles after import