Data Import & Migration: Bring Your Team Across from 48 Platforms
Upload a CSV or Excel export from your old HR system and BookYourPTO works out where it came from, maps the columns, and shows you what it will create before creating anything. 48 platforms, 63 templates, four direct API connections, and a 72-hour undo.
The Empty Account Problem
Every trial of every HR product starts the same way. You sign up, you land on a dashboard, and the dashboard is empty. Before you can evaluate anything — the calendar, the balances, the approval flow — you have to put a hundred people into it.
So you open a spreadsheet in one window and an "Add employee" form in the other, and you type. Around person twelve you stop, decide you will finish it later, and later never arrives. The product was never the problem. The data entry was.
Data Import & Migration is our attempt to delete that step entirely. It lives at Settings → Data Import, and it takes the export file you already have from whatever system you are currently on and turns it into a populated account.
What It Imports
Three things, which between them are what a leave system actually runs on:
- Employees — names, work and home emails, job titles, departments, divisions, employee IDs, start and end dates, employment type, work location, phone numbers, addresses, dates of birth, opening annual and sick leave balances, and the manager each person reports to.
- Leave History — past and upcoming time off, with dates, type, day count, status, and the original note.
- Departments — names and codes, either imported directly or created automatically from the department column on your employee rows.
Files can be CSV or Excel (.csv, .xlsx, .xls), up to 25MB and 10,000 rows each. If you would rather start from a known-good shape than from your old system's export, there is a downloadable sample file for each of the three data types.
48 Platforms, 63 Templates
The part that does the work is a registry of 63 built-in templates covering 48 HR and payroll platforms. Each template knows what that platform's export actually looks like — its column names, its date format, and how its status values map onto ours.
The global list covers what you would expect: BambooHR, Rippling, Deel, Gusto, ADP Workforce Now and ADP Run, Workday, SAP SuccessFactors, Oracle HCM Cloud, UKG, Paylocity, Paycom, Namely, Justworks, TriNet, Insperity, HiBob, Personio, Remote.com, Sage HR, Freshteam, Zenefits, Ceridian Dayforce, Paychex Flex, Timetastic, Vacation Tracker, Calamari, Absence.io, WhosOff, Deputy, Homebase, When I Work, OnPay, Square Payroll, QuickBooks Payroll.
The Canadian coverage is deliberately deep, because it is the part most products skip: Collage HR, Employment Hero (formerly Humi), Folks HR, Payworks, Rise People, Wagepoint, Payment Evolution, Avanti Software, Nethris, Knit People, PurelyHR, and Wave Payroll. Folks is a Quebec product whose exports come out in English or French depending on the account language, so its templates carry both spellings — Prénom, Date d'embauche, Date de départ — and a French export auto-detects exactly like an English one.
How Detection Works
You do not tell the system which platform your file came from. It works it out.
When you upload, the wizard reads your header row and scores it against every template. If one matches at least 60% of its mappable columns, that template wins and the mapping is applied wholesale — column names, date format, status vocabulary, all of it.
If nothing matches — a hand-built export, a file someone has already edited, a platform we do not have a template for — it falls back to generic detection. Every destination field carries a list of known aliases, so Hire Date, Start Date, Date of Joining, Commencement Date and Date Hired all resolve to the same field. Anything the aliases miss goes through fuzzy string matching, which catches the near-misses that exact matching does not.
And whatever it decides, you can change it. The mapping step is a list of your columns with a dropdown next to each. Required fields are marked. Columns you do not want are skipped. If the detector guessed wrong, you fix it in two clicks — and if you have a recurring import in a shape we do not recognise, you can save your own mapping as a reusable template for next time.
Nothing Is Written Until You Say So
This is the design decision the rest of the feature is built around.
The wizard has four steps — upload, map, preview, import — and the first three write nothing to your organisation. The preview step applies your mapping to the file and validates the rows, then shows you the result: how many are clean, how many carry a warning, how many have errors, and what each error actually is. Bad dates, missing required fields, malformed emails, employees referenced in a leave file who do not exist yet.
You look at that, and then you decide. If it looks wrong, go back to the mapping step and fix it. Nothing has happened yet.
Once you do run the import, it processes in batches with live progress, and every row lands with a status you can inspect afterwards: success, warning, error, or skipped. If a row failed, you can see which one and why rather than being told "17 rows failed" and left to guess.
Duplicates are skipped, never overwritten. If an email already exists in your organisation, that row is marked skipped and the existing person is left exactly as they were. Running the same file twice does not duplicate anyone, and it does not quietly clobber edits you made after the first run.
Managers resolve last. You cannot point at a record that does not exist yet, so employees are created first and reporting lines are wired up in a final pass, matching on either email or name. This is why a manager column that names someone excluded from the file will not resolve — the person genuinely is not there.
Leave types are created as needed. If your history contains a type your account does not have yet, it gets created rather than failing the row, and imported leave records are flagged as imported so they are distinguishable from requests booked in BookYourPTO.
Nobody gets an email. Imported employees are created with a random temporary password and a forced password change, but no notification goes out. You control when your team is invited — which matters, because importing 200 people should not send 200 emails at 4pm on a Tuesday.
The 72-Hour Undo
Every import records what it created. For 72 hours after it completes, one button reverses it — the users, the departments, the leave records, the leave types it created along the way, and the manager links it set.
This exists because the preview, however good, is not the same as seeing the data in the actual product. Sometimes an import is technically correct and still wrong: you brought across leavers you meant to exclude, or two years of history when you wanted one, or you realise the department mapping should have been to divisions. Before rollback, fixing that meant deleting a hundred records by hand or asking support to intervene. Now it means clicking undo and running the file again.
Rollback also means the sensible first move with a large migration is simply to try it. You are three days from being able to change your mind.
Four Platforms Need No File At All
For some systems, exporting a file is an unnecessary round trip. Four platforms connect directly:
- BambooHR — API key plus your account subdomain
- Timetastic — API key
- Employment Hero (formerly Humi) — API key
- Zoho People — sign in with Zoho
Connect once and BookYourPTO pulls employees and leave history over the API. No export, no download, no upload, and you can re-sync whenever you want rather than repeating the whole exercise. This is genuinely the better path if you are on one of the four — it removes the snapshot problem, where the file you imported on Monday is already out of date by the time you finish checking it on Wednesday.
Every other platform in the list imports from a file. That is not a limitation we are hiding: most HR systems either have no public API, gate it behind an enterprise tier, or require a partner agreement to use. A CSV export is the one thing everybody has.
Guardrails
A few limits worth knowing about, all of them there for a reason.
Data import is restricted to administrators and executives — it creates users and can alter your org chart, so it is not something an employee account can reach. Files are capped at 25MB and 10,000 rows. An organisation can have at most five imports in flight at once, and can start at most five per hour, which is enough for any real migration and not enough to be used as a bulk-write endpoint.
Everything is scoped to your organisation at every step. An import can only read and write within the org of the person running it.
The Shortest Path
If you are evaluating BookYourPTO right now, the fastest way to a useful trial is:
- Export your employee list from your current system as CSV. Most platforms have a one-click export; the switch from pages have the exact click path for the ones we see most.
- Go to Settings → Data Import, pick your platform, and upload.
- Look at the preview. Fix anything the mapping got wrong.
- Import. Check three people you know well.
Ten minutes, and the dashboard has your actual team on it — real departments, real reporting lines, real leave history — which is the only state in which you can properly judge whether the product suits you.
If something in your export does not map cleanly, tell us. Each of the 63 templates started as somebody's real file, and the list gets longer the same way.
Written by
AnHourTec Team