30% off your first 3 months

Get the deal

Tracking candidates in a spreadsheet

by DuckyHelperNov 12, 20264 min read
Getting work done

TL;DR:

  • One row per candidate, one column per fact: stage, dates, next step and notes.

  • Use a dropdown for stage so counts work, and a date column so nothing goes stale.

  • Treat the sheet as private: share it narrowly and delete data on a schedule.

Hiring for one role can mean dozens of people in different stages: applied, screened, interviewed, offered. Without a single place to look, you forget who is waiting for an answer, and candidates sit in silence.

A spreadsheet is enough for a small team. This article builds a pipeline sheet step by step, with formulas that work the same in Excel and Google Sheets.

What to track and what to leave out

  • Name, role and where the application came from.

  • Stage, from a fixed list.

  • Date applied, date of last contact and a next step with a date.

  • Short notes: facts from the process, not opinions about the person's character.

  • Leave out anything you do not need, such as age, health or family details.

Build the sheet

  1. Create the columns: Put headers in row 1: Name, Role, Stage, Applied, Last contact, Next step, Notes. Freeze the first row so headers stay visible as you scroll.

  2. Add a dropdown for Stage: Select the Stage cells and use data validation, found under the Data menu in both Excel and Google Sheets, to allow only a list of values: Applied, Screen, Interview, Final, Offer, Hired, Declined. A fixed list keeps spellings identical so counts work.

  3. Format the dates: Format the date columns as dates so sorting and subtraction work. Type dates in one style, such as 2026-11-12.

  4. Add counts and checks: Put a small summary on a separate tab, using the formulas below.

Worked example: a hiring pipeline sheet

Say your sheet has these rows. All names and dates are invented.

Name

Stage

Last contact

Next step

Candidate 1

Interview

2026-11-09

Send scorecards

Candidate 2

Screen

2026-11-05

Book call

Candidate 3

Interview

2026-11-10

Schedule final

Candidate 4

Declined

2026-11-03

None

Columns A to D of the sheet, rows 2 to 5 (Name, Stage, Last contact, Next step).

To count how many people are at the interview stage, with Stage in column B and data in rows 2 to 5, use:

=COUNTIF(B2:B5,"Interview")

The result is 2, because Candidate 1 and Candidate 3 are at Interview. To see how long it has been since each person heard from you, put this in column E, row 2 and fill it down, with the last contact date in column C:

=TODAY()-C2

If today is 2026-11-12, row 2 gives 3 (November 12 minus November 9) and row 3 gives 7 (November 12 minus November 5). Format the result as a number rather than a date. A rule that highlights any value over 5 will show Candidate 2 as waiting too long.

Check one by hand: from November 5 to November 12 is 7 days. Counting every stage works the same way, just change the word in quotes.

Keep it honest and useful

  • Update the sheet the same day something changes. A stale sheet is worse than none.

  • Write notes as facts, such as "strong example about a refund call", not "seems difficult".

  • Sort by last contact once a week and answer the longest waits first.

Privacy and who can see it

A candidate sheet holds personal information. Share it only with people who are involved in the hiring, and use view-only access for anyone who just needs to look. Do not email copies around, and keep it out of shared folders for the whole company.

Decide in advance how long you keep it. Rules on how long you may or must keep candidate data vary by place, so ask your HR contact or an adviser. Delete or archive when the round is finished.

Mistakes to avoid

  • Free-text stages that spell the same thing five ways.

  • Notes about personal traits that you would not be comfortable showing the candidate.

  • Extra columns nobody fills in.

  • One sheet that mixes several roles without a Role column.

Two small upgrades

Add conditional formatting so the cell turns a color when days since last contact passes a limit you choose, such as 5. Both Excel and Google Sheets have a conditional formatting option; look under their Format or Home menus for it, since the exact path varies.

Add a Declined reason column with a short list, such as Withdrew or Role filled, so at the end of the round you can count how many candidates left at each stage. The same COUNTIF pattern works for each reason, and it shows where your process loses people.

A weekly five minute routine

Once a week, sort the sheet by last contact, oldest first, and work down the list. Anyone past your limit gets a message or a decision. Then update the stage counts and check that every candidate has a next step with a date.

Finish by reading the Declined rows, and check that each of those people actually received an answer. The routine keeps the sheet true and keeps candidates from waiting without news.

Doing it faster

If a formula returns an error and you cannot see why, DuckyHelper can look at your screen and explain it out loud while you keep working. It is one option; the sheet and the decisions stay yours.

Frequently asked questions

Do I need a dedicated hiring tool?

For a handful of roles a spreadsheet is enough. A dedicated tool may help once the volume is large, which is your call.

How do I stop two people overwriting each other?

Use a shared sheet in an app that supports editing together, and agree who updates which column or candidate.

Get started

DuckyHelper can
do more

It sees your screen and works in any app you use. Try it for 10 minutes, no card.

Get it for Mac, Windows or Linux

Share

Questions and jobs

Do anything

Ask it a question or hand it a job, in any app.

Doing jobs for you is in early access on Mac. Asking works on Mac, Windows and Linux.