Loading the full employee roster when the company doesn't use (or doesn't want to connect) a directory integration.
Keeping data up to date: updating department, position, country or language for many employees in one step.
Removing employees who are no longer at the company, by taking them out of the file.
Seeing the impact before you confirm: number of new, modified and deleted employees, and rows with errors.
Avoiding bad uploads: if the file has errors or is empty, it can't be confirmed and the roster stays untouched.
Completing the initial onboarding when there are no employees on the platform yet.
Download the template
There are two entry points, both with the same flow:
People & Groups → Employees tab → Import from → Template
The notice "Manual import from our template" opens, with the link to download the template and the Import button.
Settings → Integrations → Manual import → Import
It goes straight to the file selector (the template is downloaded from the other entry point).
The template has these columns, and the column names must not be changed:
Column
Required
Detail
Yes
Identifies the employee. Unique across the whole platform.
first_name
Yes
First name
last_name
Yes
Last name
country
Yes
Country
language
Yes
Content language: es, en or pt
position
Yes
Position
department
Yes
Department
personal_id
No
Internal employee ID (file number, document)
phone_number
No
Phone with country code, starting with "+" or "00" (for example +5491122334455). If you leave the column out of the file, each person's existing phone is not touched. If you leave it empty in a row, that person's phone is deleted.
Important: the file is the full roster, not an addition. Every active employee who is not in the file is removed from the roster.
Download the template again if you had it saved. Until recently, the dropdown in the language column offered
prinstead ofptfor Portuguese, and rows loaded with that value were rejected on import. The current template now offers the three correct codes:en,es,pt. But an old copy saved on your computer still has the wrong value. If you are going to load Portuguese speakers, download it again from the platform.
Upload the file
.xlsx, .xls and .csv are accepted. A loading indicator shows while the file is processed. For large rosters it can take a few seconds.
Review the preview
The preview modal opens with the file name and a general label: No errors or N with errors.
At the top, five indicators:
New: employees who don't exist on the platform today and will be created.
Deleted: employees who are in the roster today and are not in the file.
Modified: existing employees whose data will be updated.
Total rows: rows with data read from the file (empty ones are ignored).
With errors: rows that fail the validations.
Below, the row-by-row detail: Row / Name and ID / Email / Department and role / Action / Status. Rows with errors are shown first, with the reason under the status. If there are many rows, the table is paginated.
How each row is classified depends on the data already loaded: if the email already exists in the company, the row is marked as Modified. If not, as New. Deleted ones don't come from the file: they are the employees on the platform who were left out of it.
Available buttons:
Cancel: closes without applying anything.
Upload another file: discards this review and opens the selector again.
Confirm import: applies the changes.
Validations and blocks
The import is all or nothing:
Empty required fields (first name, last name, email, country, language, position, department).
Email with an invalid format.
Language other than es, en or pt. The code for Portuguese is pt: pr is not valid and the row is rejected.
Duplicate email within the same file → "The email is duplicated within the file."
Email that already belongs to another company on the platform → "The email belongs to another company."
Phone without a country code: the row is marked Error and you can't confirm the import until you fix it. Write the full number, starting with "+" or "00".
Spaces, hyphens, dots and parentheses are fine: they are cleaned up automatically. The "00" prefix is also accepted instead of "+" (for example 005491122334455).
A number with only digits, without "+" or "00", is rejected even if the first digits look like a country code: Whalemate doesn't guess which country it is.
Valid landline numbers are accepted as before.
If the number has "+" but is not valid for that country, the row is also marked Error.
If your spreadsheet removes the "+" from the number or turns it into a formula, load the column as text or type an apostrophe before the "+".
Blocking messages that appear in the preview:
With errors: "Fix the errors or upload another file to be able to confirm."
File without rows: "The file has no rows. Upload a file with data to continue."
If the file can't be read (damaged format, renamed columns) or the operation can't be completed at that moment, an error message is shown and the roster is not modified. In that case, try again in a few minutes with a newly generated file.
Confirm and see the result
When you confirm, the button stays in a loading state until the process ends. Then the Import applied screen is shown, with the file name and what was actually applied: employees added, deleted, modified and rows processed. With Done the flow closes and the employee list is updated.
If I upload a file with only 10 employees, what happens to the rest of my roster?
They are deleted. The file represents the full roster, so every active employee who is not in it is removed. The preview shows this in the Deleted indicator before you confirm: if the number is not what you expected, cancel and check the file.
My Portuguese rows are rejected.
Check which code the language column has: it must be pt. If it says pr, the template you are using is an old copy saved before we fixed it. Download it again from the platform, or change the value to pt by hand in the affected rows.
What happens to an employee deleted by the import?
They stop being active and move to the Archived tab. They are removed from their groups, and their scheduled sends and their unfinished courses and learning paths are cancelled. What they had already completed is kept. If they show up again in a later import, they are reactivated with their history.
Can I change an employee's email from the import?
No. The email is the data that identifies the employee: if you change it in the file, the system understands that the old one left (is deleted) and that there is a new one. To keep the history, the email has to stay the same.
I fixed a single badly loaded row. Do I have to upload the whole file again?
Yes. The import is applied as a whole, not by rows: fix the row in the file and upload it again in full. While there are errors, Confirm import stays disabled and nothing is applied.
Can I use manual import if I also have an integration connected?
Yes, but it's best to avoid it: the integration's next sync writes the roster again based on the directory and can undo what you loaded by hand. If the company works with an integration, use manual import only for one-off cases.
My file has phones without a country code and it won't let me confirm. What do I do?
Add the country code to each number, starting with "+" or "00" (for example +5491122334455 or 005491122334455) and upload the file again. Whalemate doesn't fill in the country for you, so it doesn't send messages to a wrong number.
Are numbers with spaces, hyphens or parentheses accepted?
Yes. They are cleaned up and saved without those symbols.
And landlines?
Yes, they are accepted if they are valid.
Do you have feedback or want to request improvements? Tell us at roadmap.whalemate.com/roadmap