How it works
- Open Employees, choose Add Employee and then the bulk upload option.
- Download the master template, or use your own sheet with a header row. CSV, XLSX and XLS files are read from the first sheet.
- Fill mobile, full name and branch for each joiner, plus any other columns you have: email, Aadhaar, PAN, department, date of birth, gender, bank account and IFSC.
- Upload the file or paste the grid. A validation preview marks each row ready, skipped or error, with the reason.
- Fix or drop the problem rows and run the import. Each created row gets a temporary ID.
- Download the results as CSV, then share the onboarding QR so joiners fill in the gaps.
What you can set
- File types: CSV, XLSX and XLS with a header row on the first sheet, or a pasted grid.
- Required columns: mobile, full name and branch.
- Optional columns: email, Aadhaar, PAN, department, date of birth, gender, bank account and IFSC.
- Validation preview before import, marking rows ready, skipped or error.
- Duplicate mobiles skipped, whether repeated in the file or already on an employee or temporary record.
- Master template download as CSV, and a results download with each row's status and temporary ID.
- Quick Add (Temp) for a single joiner, with name, mobile number, branch and department.
When bulk import pays off
Hiring rarely arrives one person at a time. A store opening, a festive-season ramp-up or a campus batch brings dozens of joiners in the same week, usually from a walk-in drive with a spreadsheet already in hand. Typing each one into a form is a day's work and an invitation to typos. The import reads the sheet you already have, catches bad or duplicate mobile numbers before anything is created, and hands each joiner an onboarding ID, so the next step, self-onboarding, can start the same afternoon.
Worked example: a new store in Chennai
A Chennai retail chain opens a store in Velachery and hires 28 people from a two-day walk-in drive. HR's sheet has mobile, name and branch for all 28, PAN for 20 and bank details for 15. The preview marks 26 rows ready, 1 error because a mobile number has only 9 digits, and 1 skipped because that mobile already belongs to an employee, a former staff member being rehired.
HR fixes the short number, runs the import and gets 27 temporary IDs, then downloads the results and handles the rehire separately. When the joiners open the onboarding link, the 20 whose PAN was imported are not asked for it again, and the 15 with bank details only need to upload their bank proof.
Preparing a clean sheet
Use the master template's column names so the columns match without guesswork. Keep mobile numbers as 10 digits without spaces or country codes, and spell branch names exactly as they appear in ZeniaHR. Fill any extra column you trust, since each one saves the joiner a step, but leave a column blank rather than guessing. Keep the results file; it maps each person to their temporary ID for the joining-day SMS.
See bulk joiner import in a demo
We show it on a video call with your own shifts, leave types and rules. Free for your first 50 employees.
Book a free demoSee pricingFrequently asked questions
What columns do I need to bulk import new joiners?
Only three are required: mobile number, full name and branch. You can add email, Aadhaar, PAN, department, date of birth, gender, bank account and IFSC, and every extra column is carried onto the joiner's record, so self-onboarding asks them only for what is still missing.
What happens to duplicate joiners in a bulk import?
They are skipped, with the reason shown in the preview. A mobile number repeated within the file is skipped after its first row, and a mobile that already belongs to an employee or a temporary record is skipped too, so the import never creates a duplicate person.
Can I add a single joiner without a spreadsheet?
Yes. Use Quick Add (Temp) with the joiner's name, mobile number, branch and department. ZeniaHR checks that the mobile number is not already in use by an employee or another joiner, then creates the temporary record with an onboarding ID, ready for the self-onboarding link.