Data Import & Migration

Importing a File

The four-step import wizard — choosing your old platform, uploading a CSV or Excel file, mapping columns, reviewing the preview, and running the import.

Importing a File

This is the walkthrough for a CSV or Excel import, from export to finished records. Go to Settings → Data Import and choose Upload a file.

The wizard has four steps, preceded by an optional platform picker:

Where are you coming from?  →  Upload File  →  Map Columns  →  Preview  →  Import

Before you start: export your data

Get a CSV or Excel export out of your current system. Almost every HR platform has one — usually under People, Directory, or Reports.

If you pick your old platform on the first screen, BookYourPTO shows the exact menu path to export from it. If your platform isn't listed, choose Skip — I'll upload a CSV; auto-detection works on the column headers, not on which product produced them.

No export to hand? Each data type on the Data Import page has a Sample file link that downloads a correctly formatted CSV with three example rows. Fill it in and upload it — it maps 100% automatically.

Step 1 — Upload File

Choose what you're importing (Employees, Leave History, or Departments), then drop the file onto the upload area or click to browse.

AcceptedNotes
.csvDelimiter is auto-detected; UTF-8 is expected
.xlsx, .xlsThe first sheet is read

The first row must be your header row. Completely empty rows are ignored. Maximum 25 MB and 10,000 rows.

As soon as the file lands it is parsed, and BookYourPTO reads the headers to work out the layout.

Step 2 — Map Columns

This screen is a three-column table: your file column, a sample value from the first row, and the BookYourPTO field it will be written to.

Automatic detection

Two things happen before you see the screen:

  1. Template matching. Your headers are scored against the 63 built-in platform templates. If one is a good enough match, a green Detected: … badge names it — for example BambooHR — Employee Export.
  2. Fuzzy header matching. Every remaining column is matched by name against a list of known aliases. Emp #, Employee Number and Staff ID all land on Employee ID; Hire Date, Date of Joining and Start Date all land on Start Date.

The header of the screen tells you how many of your columns were mapped, and how many were skipped as sensitive.

Changing a mapping

Every row has a dropdown. Pick a different field, or choose — Skip this column — to leave it out. A field can only be used once, so a field already claimed by another column is greyed out — free it up there first.

Required fields are marked with an asterisk. Preview Import stays disabled until all of them are mapped:

Data typeRequired
EmployeesFirst Name, Last Name, Email
Leave HistoryEmployee Email, Leave Type, Start Date, End Date
DepartmentsDepartment Name

Skipped sensitive columns

Columns that look like salary, bank details, or government identifiers are shown greyed out as Skipped (sensitive) and cannot be mapped. This is deliberate and cannot be overridden from the wizard — see Overview.

Save the mapping for next time

Tick Save this mapping as a reusable template and give it a name before continuing. Next time you upload a file with the same headers, that template is checked first. See Custom Templates.

Step 3 — Preview

The preview validates your rows and shows you what will happen — without writing anything.

At the top, four counters:

CounterMeaning
Total RowsRows found in the file
Ready to ImportRows that passed validation cleanly
Errors (will skip)Rows that failed validation and will not be created
Already Exist (will skip)Emails that already belong to someone in your organization

Below that, the first 50 rows are listed with a status icon each — a green tick, an amber warning triangle, or a red cross. Failed cells are highlighted in red with the reason underneath, so you can see that row 14's start date is unparseable rather than just being told the file has errors.

You'll also get a Duplicate emails in file banner if the same address appears twice in your own file.

The preview checks the first 100 rows. That's a fast sample so you can catch a systematic problem — a mis-mapped column, a date format that isn't being read — before committing. Every row in the file is validated individually when the import actually runs, and the full result is on the import's detail page afterwards.

If the preview looks wrong, use Back to Mapping, fix the mapping, and preview again. Nothing has been written yet.

Inviting the people you're importing

Employee imports show a checkbox here: Invite these employees to set up their accounts.

Left off (the default)Ticked
Records are created silently. Nobody is emailed.Each person is emailed a link to set a password, and chased on day 3, 7 and 13 if they don't use it.

Leave it off when you are importing history — past employees, closed leave — and tick it when you are moving a team that is about to start using BookYourPTO.

Leavers are never emailed. Anyone whose employment end date has already passed is skipped even with the box ticked, so a historical roster cannot email former employees by accident.

Step 4 — Import

Press Import N Records. This is the first step that changes your data.

For an employee import, BookYourPTO works in three passes:

  1. Departments — every department named in the file that doesn't exist yet is created, with a code generated from its name.
  2. Employees — people are created in batches of 50, with their department attached.
  3. Managers — the manager column is resolved once everyone exists, so a manager listed further down the file still links correctly. Managers can be given as an email address or as "First Last".

Progress updates as it runs. When it finishes you land on the import's detail page with the final counts and, if anything failed, the error log. See Rollback & Import History.

Dates

Dates are read in a range of common layouts, including YYYY-MM-DD, MM/DD/YYYY, DD-MMM-YYYY (15-Jan-2024) and DD.MM.YYYY.

The one genuinely ambiguous case is 01/02/2024. Read as US order that's 2 January; read as European order it's 1 February. Where a built-in platform template knows its platform exports day-first, that is applied automatically. If you're mapping columns by hand and your dates are day-first, the safest fix is to re-export — or reformat the column in your spreadsheet — as YYYY-MM-DD, which is never ambiguous.

After the import

  • Check the counts on the detail page — Imported, Errors, Warnings, Skipped.
  • Imported employees have no usable password and are not emailed. Invite them or send a password reset from Managing Users when you're ready.
  • Set roles for anyone who should be an administrator, executive, or department head.
  • Assign leave allowances — see Leave Balances.
  • Then, if you're carrying history across, run the Leave History import.