Import employees from a CSV

A complete, step-by-step guide to bulk-uploading your people into CultureMonkey with a CSV - downloading the template, mapping fields, handling required vs optional columns, understanding how updates work, and fixing the errors that trip most imports up.

10 min readAccount AdminUpdated July 2026
On this page

A CSV import is the fastest way to get your whole organization into CultureMonkey in one go. Instead of adding people one at a time, you upload a single spreadsheet - names, emails, teams, locations, managers and more - and CultureMonkey creates or updates every record for you.

This guide walks through the full import: where to start, how to download and fill in the template, which columns are required and which are optional, how CultureMonkey decides whether to create a new employee or update an existing one, and - most usefully - the validation errors you're likely to hit and exactly how to fix them. If you're setting up your account for the first time or doing a big refresh, this is the article to keep open.

In a nutshell

Download the sample template, fill it in (keeping the column order), and upload it on the Import employees page. Map your columns to CultureMonkey's fields, preview, and import. Only four columns are truly required - First Name, Email Address, Team and Location. CultureMonkey matches rows by email address, so re-uploading the same file updates people rather than duplicating them.

When to use a CSV import

A CSV import is ideal when you're doing a point-in-time bulk load: your initial account setup, an annual data refresh, onboarding a new department, or correcting a batch of records. You stay in full control of the file and can review everything before it's applied.

If instead you want your employee list to stay in sync automatically - new hires added, leavers deactivated, team changes reflected without you lifting a finger - you probably want a live connection to your HR system instead. See Import employees from your HRIS. Many teams do both: a one-time CSV to get started, then an HRIS sync to keep things current.

For adding or editing just one or two people, skip the spreadsheet entirely and use Add employees.

Before you start

A clean import starts with clean source data. Before you build your file, make sure a few reference records already exist in your account, because the import validates against them rather than creating them silently:

  • Teams and Locations you reference in the file should already exist in CultureMonkey. A row that names a team or location the system doesn't recognize will be flagged as an error.
  • Managers you list in the Manager Email Address column must already exist as employees or managers. You can't point at a manager who isn't in the system yet.
  • Decide your email hygiene up front - one valid, unique email per person. Email is the key CultureMonkey uses to match records, so duplicates or typos cause the most trouble.
Order teams and managers first

If you're standing up a brand-new account, import (or create) your managers and confirm your teams and locations before the main employee file. That way every reference in your employee CSV resolves cleanly on the first pass instead of bouncing back as errors.

Download the import template

Always start from CultureMonkey's own template rather than a spreadsheet you build from scratch. The template has the exact column headers the importer expects, in the exact order it expects them.

  1. 1Open the import page - from the left navigation, go to General → Employees, then choose Import (the CSV import flow).
  2. 2Download the sample - click Download sample to get the template CSV. It includes every supported column and an example row so you can see the expected format.
  3. 3Fill in your data - replace the example row with your employees, one per row. Keep the header row exactly as provided and don't reorder the columns.
  4. 4Save as CSV (UTF-8) - export from Excel or Google Sheets as CSV UTF-8. Non-UTF-8 files are rejected.
app.culturemonkey.io/employee_imports
The Import employees page in CultureMonkey, where you upload your CSV and download the sample template.
The Import employees page: download the sample template here, then upload your filled-in file to begin.
Keep the header row and column order intact

The importer checks your headers against the template and expects them in order. If you delete, rename or shuffle columns, you'll see an "Invalid headers" error. Edit the rows beneath the header row - never the header row itself.

Required vs optional columns

Only four columns are mandatory. Everything else is optional - include the columns you have good data for and leave the rest blank (or remove the extra columns, as long as you keep the required four and the overall order intact).

ColumnField it maps toRequired?Notes
first_nameFirst NameRequired2-50 characters; no commas.
email_addressEmail AddressRequiredValid, unique email. This is the match key.
team_nameTeamRequiredMust match an existing team.
location_nameLocationRequiredMust match an existing location.
last_nameLast NameOptional
employee_idEmployee IDOptionalMust be unique if provided.
manager_emailManager Email AddressOptionalMust belong to an existing manager.
date_of_joiningJoining DateOptionalUse a consistent date format.
date_of_birthDate Of BirthOptional
phone_numberPhone NumberOptional8-40 characters.
genderGenderOptionalmale, female, or other.
designationDesignationOptionalJob title.
subteam_nameSub TeamOptionalMust match an existing sub team.
business_unit_nameBusiness UnitOptionalMust match an existing business unit.
employee_typeEmployee TypeOptionalSee accepted values below.
role_typeRole TypeOptionalSee accepted values below.
baseBaseOptionalLocal, Non-local, or Expat.
job_statusJob StatusOptionalEmployed, On-Notice, or Relieved.
is_activeIs ActiveOptionaltrue or false.
external_idExternal IDOptionalMust be unique if provided.
question_languageQuestion LanguageOptionalA language CultureMonkey supports.

Some accounts also have a Business Group (business_group_name) column and can add custom attributes - extra demographic fields you've defined - as columns prefixed with cf_ (for example cf_department). For a full column-by-column reference and how the mapping is stored, see Map employee import fields.

Accepted values for the picklist fields

A few columns only accept a fixed set of values. Get these right and you'll avoid a whole class of errors:

ColumnAccepted values
gendermale, female, other
employee_typeRegular, Part-time, Shiftworker, Probation, Outworker
role_typeTop-level, Mid-level, Operation level
baseLocal, Non-local, Expat
job_statusEmployed, On-Notice, Relieved
is_activetrue, false

Map your fields

After you upload the file, CultureMonkey shows a field-mapping step. Here you match each column in your spreadsheet to the corresponding CultureMonkey attribute. If you started from the template, the columns line up automatically; if your file uses different header names, this is where you tell the importer that (say) your "Work Email" column is CultureMonkey's Email Address.

Your mapping is remembered for next time, so recurring imports of the same file get faster. For a deeper walkthrough of the mapping screen and how mappings are saved to your account, see Map employee import fields.

Preview and import

Once fields are mapped, you'll see a preview of your data under the correct CultureMonkey column headers. This is your last checkpoint before anything changes - scan a few rows to confirm names, emails and teams landed in the right places.

  1. 1Upload your CSV - on the Import employees page, choose your saved file. CultureMonkey checks the file type, encoding and size first.
  2. 2Map the columns - confirm each of your columns points to the right CultureMonkey field, then continue.
  3. 3Preview the data - review the sample rows shown under their mapped headers. If anything looks off, fix the CSV and re-upload before continuing.
  4. 4Run the import - confirm to start processing. Larger files are handled in the background in batches, so you don't have to wait on the page.
  5. 5Check the result - open the import history to see the status, how many records succeeded, and download the error file if any rows were rejected.

Because bigger files process in the background, the import history is where you confirm the final outcome - it records each upload with its status (Processing, Completed, or Error), the number of records imported, and a downloadable error file when something needs your attention.

How updates and new records are handled

You don't need a separate "update" flow. Every import both creates and updates in a single pass, and CultureMonkey decides which to do row by row.

The match key is the email address (compared case-insensitively):

  • If an employee with that email already exists, their record is updated with the values in your file.
  • If no employee has that email, a new employee is created.

This has a useful consequence: re-uploading a file is safe. Import the same list again with a few edits and CultureMonkey updates the matching people rather than creating duplicates. It's exactly how you'd do a bulk edit - change the values in the spreadsheet, re-import, done.

Changing someone's email creates a second record

Because email is the match key, editing an existing employee's email in your CSV won't rename them - the importer won't find a match and will create a new person instead. To change an email, edit that employee's record directly rather than through a re-import.

Common import errors and how to fix them

Most failed imports come down to a handful of issues. When rows are rejected, CultureMonkey produces an error file in your import history: each rejected row is marked with an ERROR status and a plain-language reason, so you can fix just those rows and re-upload. Here are the ones you'll meet most often:

What you'll seeWhat it meansHow to fix it
Invalid file type! Please upload a CSV file.The file isn't a .csv.Re-save from Excel/Sheets as CSV, not .xlsx or .txt.
Invalid CSV file! Please upload a CSV file encoded in UTF-8.Wrong text encoding.Export as CSV UTF-8 specifically.
File size is more than 2mb…The file is too large - often from empty rows/columns.Delete blank trailing rows and columns; split very large lists into batches.
Invalid headers! Please refer to the sample file and preserve the order of the columns.Headers were renamed, removed or reordered.Start again from the downloaded template; edit only the data rows.
Invalid email addressA value in the email column isn't a valid email.Correct the typo; make sure every required row has an email.
Email has already been takenA duplicate email exists in the file or the account.Remove the duplicate row, or check whether that person already exists.
team_name: … Should be an existing teamThe named team doesn't exist yet.Create the team first, or fix the spelling to match exactly.
location_name: … Should be an existing locationThe named location doesn't exist.Create the location first, or correct the value.
… Should be an existing managerThe manager email isn't a known manager.Add that manager first, or fix the email.
Self reference for manager is invalid…A person is listed as their own manager.Leave manager_email blank for that row instead.
role_type: should be Top-level or Mid-level or Operation levelAn invalid picklist value.Use one of the exact accepted values.
base: should be Expat or Local or Non localAn invalid base value.Use Local, Non-local, or Expat.
employee_type: should be Regular / Part-time / Shiftworker / Probation / OutworkerAn invalid employee type.Use one of the accepted values.
first name … cannot contain a commaA comma in the first name breaks the CSV.Remove the comma from that name.
employee_id has already been takenDuplicate Employee ID.Make each Employee ID unique, or leave it blank.
question_language: is not supported…An unsupported language code.Use a supported language, or contact support@culturemonkey.io.
Fix, don't restart

The error file only contains the rows that failed. You don't have to re-run your whole list - correct just those rows and re-upload. Since matching is by email, the successful rows from the first pass simply get updated harmlessly.

Best practices for a clean import

A little discipline in the spreadsheet saves a lot of error-file cleanup later:

  • Always start from the fresh template. Don't reuse an old export with edited headers - download the current sample each time.
  • Fill the four required columns for every row. First Name, Email Address, Team and Location are non-negotiable.
  • Match reference values exactly. Team, Location, Sub Team and Business Unit names must match what's already in CultureMonkey, character for character.
  • Use one consistent date format across all date columns in the file.
  • Keep emails clean and unique. No duplicates, no typos, no shared inboxes standing in for individuals.
  • Trim blank rows and columns. Empty cells inflate file size and can trip the 2MB limit.
  • Do a small test first. For a large rollout, import 10-20 rows, confirm they look right, then run the full file.

Re-importing to update your data

Treat the CSV as your bulk-editing tool. To make changes across many employees at once - new managers after a reorg, updated designations, corrected locations - edit those values in the spreadsheet and import the file again. CultureMonkey matches on email and updates the existing records in place.

The only value you can't safely change this way is the email address itself, since that's the match key (see the warning above). For everything else, re-import is the quickest path to a bulk update. If you find yourself doing this every week, that's a strong sign it's time to move to an HRIS sync so the updates happen automatically.

Frequently asked questions

Which columns are actually required?

Just four: First Name, Email Address, Team, and Location. Every other column is optional - include the ones you have data for and leave the rest blank.

Will re-uploading the same file create duplicate employees?

No. CultureMonkey matches each row to an existing person by email address. Matching rows are updated in place; only genuinely new emails become new records. That's exactly why re-import doubles as a bulk-edit tool.

One of my rows was rejected but the rest imported. Is that normal?

Yes. The import processes row by row, so valid rows go through while invalid ones are collected in an error file with the reason. Fix those rows and re-upload - the ones that already succeeded will simply be updated again.

Why does the importer say my team or location "should be an existing" one?

The import validates references rather than creating them on the fly. Create the team, location, sub team or business unit first (or correct the spelling to match exactly), then re-import.

How do I change an employee's email address?

Not through a CSV re-import - because email is the match key, a changed email is read as a new person. Edit that employee's record directly instead. See Add employees.

Is there a file size limit?

Yes - the file must be under 2MB. Blank trailing rows and columns are the usual culprit when a modest list exceeds it. Trim them, or split very large lists into a few batches.

Where to go next