Skip to content
Absenca
Blog migration

How to Move Your Team Off a Spreadsheet (Without Losing Data)

Absenca Team 6 min read

A practical guide to migrating leave tracking off a spreadsheet — preparing your CSV, avoiding common pitfalls, and bringing mid-year balances across cleanly.

A spreadsheet of employees being imported into a leave tracker

You've decided the "Holidays 2026" spreadsheet has had its day. Good. The thing standing between you and a proper leave tracker is usually one nagging worry: what if I lose the data? All those carefully tracked balances, the mid-year starters, the days already taken — nobody wants to re-key 30 people by hand or, worse, start everyone's balance from scratch.

The good news is that a spreadsheet is actually a decent source for a migration. The data's already in rows and columns; it just needs tidying before it moves. Here's how to do it cleanly, in order, without losing a day of anyone's leave.

Why migrate now (and not "next leave year")

A common instinct is to wait until the leave year resets so balances are clean. You don't have to. Bringing balances across mid-year is straightforward once you know the trick (it's just "remaining days," covered below) — and every month you wait is another month of manual reconciliation and double-bookings the spreadsheet can't catch. The best time to move is when you've decided to. See how to track employee PTO without spreadsheets for why the sheet keeps costing you in the meantime.

Step 1 — Prepare your CSV

Almost every import problem traces back to a messy source file. Spend twenty minutes here and the rest is painless. Get your spreadsheet down to one row per person with clean columns:

Column What it holds Watch out for
Name Full name Consistent format (avoid "J. Smith" mixed with "John Smith")
Email Work email Must be unique and correct — this is the key everything hangs on
Department e.g. Engineering Spell consistently ("Eng" vs "Engineering" creates two departments)
Office Location they belong to Drives their public holidays and working days
Start date Their first day YYYY-MM-DD is safest; drives pro-rata for mid-year joiners
Current balance Days remaining now The number to carry across — see Step 4

Save it as CSV (UTF-8). A few quick hygiene checks before you export:

  • One header row, then one row per person — no merged cells, no totals row at the bottom, no blank separator rows.
  • Trim stray spaces, and make sure dates are real dates, not text that looks like a date.
  • Remove leavers you don't want to import.

Step 2 — Decide your structure first

Import is much smoother if the destination already exists. Before you load people, set up:

  • Offices/locations, each with its country (so the right public holidays apply) and working days.
  • Departments within those offices.
  • Your leave year start — if it isn't January, decide it now, because it changes how balances are read (see when should your leave year start).
  • Leave types and entitlements — annual allowance, accrual, and so on.

With the scaffolding in place, the CSV's "department" and "office" columns map straight onto real things instead of creating duplicates.

Step 3 — Common pitfalls (and how to dodge them)

A handful of issues account for nearly every messy import:

  • Mismatched emails. The email is the unique key. A typo or a personal address where you meant the work one creates a duplicate person or a failed row. Sanity-check the email column hardest of all.
  • Inconsistent department/office names. "Sales" and "sales " (trailing space) become two departments. Standardise spelling and case before importing.
  • Wrong leave year. If your leave year starts in April but you import as though it's January, every balance reads against the wrong window. Set the leave year before you bring balances in.
  • Confusing entitlement with remaining balance. Someone's annual entitlement (e.g. 25 days) is not the same as what they have left right now (e.g. 11). Import the remaining figure — Step 4.
  • Forgetting days already booked. If a future trip is already approved on the spreadsheet, decide whether your "remaining" number already excludes it, or whether you'll re-enter that booking after import. Don't double-count it.

Step 4 — Bring mid-year balances across cleanly

This is the part people overthink. You're moving in the middle of a leave year, so you don't want a fresh full allowance — you want the number each person has left today.

Remaining balance = entitlement (incl. any carry-over) − days already taken − days already approved

Calculate that for each person in the spreadsheet, and that's the figure in your Current balance column. After import you set their entitlement and accrual rules so the system takes over from here — topping up, accruing, and counting down automatically. From the import date on, you never touch a balance by hand again.

A worked example: Greta at NovaTech is on 25 days a year, has taken 9, and has 5 more already approved for the summer. If you import her remaining balance as 11 and don't re-enter the summer trip, she's correct. If you re-enter the trip after import, import 16 instead so the system deducts those 5. Pick one approach and apply it to everyone.

How Absenca's import works

Absenca has a bulk CSV import built for exactly this. You set up your offices, departments, and leave types first, then upload the spreadsheet — name, email, department, office, start date, and current balance — and it creates everyone in one pass, matching them to the right office (and its public holidays) and department.

From there the manual era ends: balances update the instant a request is approved, accruals and pro-rata for mid-year starters run automatically, and carry-over caps enforce themselves. Because the import is a one-off and the free tier covers up to 15 people, you can try the whole migration at no cost — it's free for up to 15, then $0.75/user/month. If you're a smaller team weighing this up, our guide to leave management software for small business walks through what to look for.

Frequently asked questions

Do I have to wait until the new leave year to switch? No. Migrating mid-year is fine — you just import each person's remaining balance (entitlement minus days taken and already-approved) rather than a full fresh allowance. The system then accrues and counts down from there.

What's the most important column to get right? Email. It's the unique key, so a typo or the wrong address is what causes duplicates and failed rows. Clean department and office names come a close second, because inconsistent spelling silently creates duplicates.

What happens to leave that's already booked for later this year? Decide once: either your imported "remaining" balance already accounts for it (simplest), or you re-enter those bookings after import and import the higher pre-deduction balance. Just don't do both, or you'll double-count.

Can I import people in batches? Yes — there's nothing stopping you doing one office or department at a time, checking it looks right, then doing the next. Many teams prefer that to one big upload, especially the first time.


Ready to leave the spreadsheet behind? Absenca imports your team from CSV in one pass and takes over balances automatically — free for up to 15 people, no credit card. Related: how to track employee PTO without spreadsheets.