A ATSLab
Find your ATS
MIGRATION · 9 MIN

How to migrate from spreadsheets to an ATS without losing candidates

A practical guide to moving hiring from Google Sheets or Excel into an ATS without losing candidates, notes, resumes, owners, stages or follow-ups.

Published 24 June 2026 · Last updated 24 June 2026 · 9 min read
THE SHORT ANSWER

Before importing anything, clean the spreadsheet into one row per candidate with name, email, phone, role, stage, source, owner, notes, last contacted date and CV link.

KEY TAKEAWAYS
  • Before importing anything, clean the spreadsheet into one row per candidate with name, email, phone, role, stage, source, owner, notes, last contacted date and CV link.
  • Move active candidates before historical records, and do not split one live role between the spreadsheet and the ATS after cutover.
  • Breezy HR is the strongest self-serve fit for many small teams, with CSV files up to 10 MB and resume uploads up to 50 MB, but its CSV import maps only name, email, phone and summary.
  • BambooHR fits teams moving hiring into HR as well, from ~$250/month, but its ATS job-opening limits are 5, 25 and 50 by plan tier.
  • GoHire starts at $99/month and supports structured CSV fields such as stage, source, rating, tags and CV Upload, but CV links must be public URLs with accepted file extensions.

Migrating from spreadsheets to an ATS is not a file upload problem. The real job is preserving who each candidate is, where they are in the process, who owns the next action, what has already been said, and what should happen next.

Google Sheets and Excel can hold candidate rows for a while. The trouble starts when one tab tracks applicants, another tracks interview feedback, and nobody knows whether the last follow-up happened.

A good migration gives the team one system of record without losing live candidates during the move. A bad migration creates duplicate outreach, missing CVs, stale stages and hiring managers updating the wrong file.

This guide is for teams moving from spreadsheets into an ATS for the first time. It focuses on cutover, field mapping, QA and communication safety, not just how to import a CSV.

When do spreadsheets stop working for hiring?

Spreadsheets usually stop working once you have more than one or two active roles, several hiring managers, or unclear candidate ownership. Below that, a clean sheet can cope. Above it, the gaps become operational rather than cosmetic.

The first warning sign is duplicated work. Two recruiters contact the same person, one manager changes a stage without telling anyone, or a promising applicant waits too long because the reminder lived in somebody’s head.

Spreadsheets can track rows, but they do not naturally enforce pipeline stages, permissions, structured feedback or communication controls. You can add columns for all of that, but the process gets fiddly as soon as hiring volume rises.

An ATS exists to make those basic failures harder. The catch is that the migration must respect the process you already have, or you simply move a messy spreadsheet into a cleaner-looking system.

What should you audit before moving candidates?

Start by turning the spreadsheet into one clean candidate register. Each candidate should have one row, even if they appear in several tabs or were considered for more than one role.

Standardise the core columns before export: candidate name, email, phone, job or role, current stage, source, owner, last contacted date, notes, resume or CV link, and consent or compliance status where relevant. These columns protect the working context recruiters need on day one.

Separate active candidates from historical records before import. Active candidates need immediate continuity, while older candidates can sit in an archive, closed role or talent pool depending on the ATS structure.

De-dupe by email first, then by phone number or name where email is missing. This is dull work, but it prevents the most damaging migration error: one person becoming two candidate records.

Open a sample of resume and CV links before the import. If links point to private drives, expired attachments or files nobody can access, the ATS will not fix that problem for you.

Which ATS is best for a spreadsheet migration?

For most small teams leaving spreadsheets, Breezy HR is the strongest fit among the tools covered here if you want a fast self-serve move. It ranks first in ATSLab’s index, starts with a free forever Bootstrap plan, and paid plans start at $157/month when billed annually for Startup.

The limitation is important. Breezy HR’s Bootstrap plan is capped at 1 active position or candidate pool at a time, with access to candidates added within the last 30 days. Its documented CSV mapping is also basic: name, email, phone and summary.

BambooHR is the better fit if spreadsheet hiring is part of a wider move into HR records, onboarding, offer letters and e-signatures. ATSLab records BambooHR from ~$250/month, and its public plans are Core, Pro and Elite.

The trade-off is that BambooHR is not just a standalone recruiting database. That can be useful if HR and hiring need one system, but it is more than many teams need for a simple spreadsheet replacement.

GoHire is a good fit for UK-based and small teams that want clear SMB pricing and structured import fields. It starts at $99/month, includes unlimited users on all plans, and offers a 14-day free trial with no credit card required.

The catch is that GoHire is not free forever, and its job limits matter: Starter allows 3 active jobs, Growth allows 10, and Pro allows unlimited job posts. If your spreadsheet has many live roles, check the plan before importing.

How do you map spreadsheet columns to ATS fields?

Map identity fields first: name, email and phone. If these are wrong, every later step becomes harder, including de-duping, communication history and interview scheduling.

Next, map recruiting context: job applied to, current pipeline stage, source, owner, rating and notes. These fields tell the team what to do next, which matters more than preserving every old spreadsheet column.

Treat CVs and resumes as their own migration workstream. Some systems support file uploads, others support public file URLs, and some imports only attach documents in specific formats.

Breezy HR supports bulk CSV candidate import into a position pipeline, with CSV files up to 10 MB. It can import up to 90,000 candidates for a single position, which is generous, but the mapped CSV fields are limited to name, email, phone and summary.

Breezy HR also supports bulk resume uploads up to 50 MB at a time, and documents need to be text-based rather than scanned image PDFs. That helps with simple moves, but rich spreadsheet fields may still need to live in summary notes or a retained archive.

GoHire’s required CSV import fields are Applied date, First Name, Last Name and Email. Its optional fields include phone, city, headline, rating, pipeline stage, shortlisted, declined, tags, cover letter, source and CV Upload.

That optional structure is useful if your spreadsheet is already disciplined. The limitation is that GoHire’s CV Upload links must be live public URLs ending in pdf, doc, docx, rtf, jpg or jpeg.

How should you test the import before moving live roles?

Run a test import before moving active roles. Use a closed role or a small sample of candidates, then check the results as if you were about to contact those people.

Verify names, emails, phone numbers, pipeline stages, notes, source, owner and resumes. Do not assume a successful upload means the data landed in the right fields.

Check whether automations, notifications, email templates or scorecards fired during the test. Accidental candidate emails during a migration are avoidable, but only if you test the workflow first.

Breezy HR says stage actions are not triggered by CSV imports, which reduces accidental communication risk during import. The limitation is that this does not remove the need to check later automations before recruiters start moving candidates by hand.

Ask one recruiter and one hiring manager to review the test role. Recruiters catch missing context, while hiring managers spot stage names or ownership rules that do not match how the team actually works.

How do you cut over without splitting active candidates?

Move active candidates first, then historical records. Live hiring needs continuity, while archived candidates can wait until the team has proved the new process works.

Choose a cutover point for each role and move all active candidates for that role together. Do not run one live role in both the spreadsheet and the ATS after cutover.

That rule feels strict, but it prevents split ownership. If half the team updates the sheet and half the team updates the ATS, nobody can trust either record.

Make the spreadsheet read-only once the ATS becomes the system of record. Add a note at the top with the cutover date, the ATS name and a warning that candidate status should no longer be changed in the sheet.

Keep a dated backup of the original spreadsheet for audit, reconciliation and rollback. The backup is useful; continuing to edit it is where the damage starts.

If the ATS has active-job, candidate-pool or access limits, confirm the structure before import. Breezy HR Bootstrap, BambooHR job-opening caps and GoHire active-job limits can all affect how you organise the move.

What QA checks stop candidates going missing?

The post-migration QA should focus on live hiring first. Confirm every active candidate appears in the correct role and stage before anyone sends messages from the ATS.

Open a sample of resumes or CVs. If attachments are missing or links fail, pause outreach until recruiters know where the correct documents live.

Check source, owner, rating, tags and notes for a sample of imported candidates. These fields are easy to lose, but they explain why a candidate is in the pipeline and who should act next.

Test email and calendar integrations before contacting candidates from the ATS. A clean import still fails operationally if interview invites, sender addresses or reply tracking are wrong.

Confirm careers-page links, job-board postings and application forms now route into the ATS. Otherwise new applicants keep arriving in the old process while imported candidates sit somewhere else.

Review hiring team permissions after import. Interviewers and managers need enough access to do their jobs, but broad access to every candidate record is rarely necessary.

What are the tool-specific migration tips?

Breezy HR is the safest recommendation if a small team wants a self-serve spreadsheet move and a capable ATS without per-seat fees. Paid plans include unlimited users, unlimited candidates and customer support, but deeper migration from another ATS requires contacting sales, with customised migration solutions for Pro customers.

Use Breezy HR’s CSV import for basic candidate records and bulk resume upload for documents. It is a practical route from a spreadsheet, but do not expect rich historical fields to map automatically beyond name, email, phone and summary.

BambooHR makes more sense if the hiring spreadsheet is one symptom of a wider HR systems problem. Its ATS product focuses on job-board integrations, candidate communication, offer letters, e-signatures, onboarding and team collaboration.

The limitation is plan structure. BambooHR lists ATS job-opening limits of 5 on Core, 25 on Pro and 50 on Elite, so check your live and near-term hiring plan before importing records.

GoHire is useful when your spreadsheet already has structured fields such as stage, source, rating and tags. It supports adding candidates one by one or bulk-uploading candidates by CSV from a job.

The catch is preparation. GoHire needs Applied date, First Name, Last Name and Email, and CV links must be public URLs with accepted file extensions before import. Private drive links will cause avoidable clean-up.

Before choosing any ATS, ask the vendor eight questions: which CSV fields can be mapped, whether resumes can be uploaded in bulk, whether candidates can be assigned to jobs and stages, whether emails fire during import, whether duplicate detection exists, what support is included, what limits apply, and whether migration support costs extra.

What is the practical recommendation?

If you are a small team moving from Google Sheets or Excel into an ATS for the first time, start by evaluating Breezy HR. It ranks highest in ATSLab’s fixed index and has strong published self-serve import limits, but its free plan and CSV field mapping are too limited for some live migrations.

Choose BambooHR if the migration is really an HR systems project, with hiring connected to employee records, onboarding, offer letters and e-signatures. It costs more than many simple ATS tools, and the job-opening caps need checking before you move.

Choose GoHire if you want simple SMB pricing, unlimited users and more structured candidate import fields. It is less suited to teams expecting a forever-free ATS, and CV imports need public links in the right formats.

Whichever tool you choose, the migration succeeds or fails before the CSV upload. Clean the spreadsheet, move active roles together, freeze the old file, and run QA before the team starts contacting candidates from the ATS.

Frequently asked questions

Can I migrate from Google Sheets or Excel to an ATS with a CSV file?

Usually, yes, but the fields vary by ATS. Breezy HR supports CSV files up to 10 MB, but maps only name, email, phone and summary. GoHire supports CSV import from a job and includes more structured fields, but requires Applied date, First Name, Last Name and Email.

Should I import historical candidates at the same time as active candidates?

Move active candidates first, then import archives later. Live candidates need correct stages, owners and follow-ups immediately. Historical records can usually sit in an archive, talent pool or closed role once the team has checked the new ATS process.

Which ATS is best for small teams leaving spreadsheets?

Breezy HR is the best starting point if you want a capable self-serve ATS and your migration fits its CSV and resume import limits. Consider BambooHR if hiring needs to connect to HR records and onboarding, or GoHire if structured CSV fields and $99/month pricing suit your team better.

Will an ATS preserve all my spreadsheet notes and communication history?

Do not assume that. Some notes can be mapped into summary or notes fields, but full communication history often needs manual handling or a retained archive. Ask the vendor exactly which fields import before deleting or changing the original spreadsheet.

How do I avoid emailing candidates by mistake during migration?

Run a test import first and check automations, templates and notifications before importing live roles. Breezy HR says stage actions are not triggered by CSV imports, which helps reduce risk, but you should still test what happens once recruiters start moving candidates manually.