Job Application Tracker for Google Sheets: Free Template + 8 Formulas That Do the Chasing
Most job application trackers die the same way. You build a beautiful sheet in week one, you fill it in diligently for nine applications, and then somewhere around week three you stop opening it — because keeping it current is work, and the sheet never gives anything back.
Google Sheets is the one place you can fix that properly. Not because it's prettier than Excel, but because a handful of formulas can make the sheet do the chasing for you: overdue follow-ups turn red on their own, a live list tells you exactly who to email this morning, and after a month the sheet can tell you whether your resume or your phone screen is the thing costing you interviews.
This page gives you the free template and the eight Sheets-specific setups worth the fifteen minutes.
Get the template into Google Sheets in two minutes
Download the free job application tracker template (CSV) — no signup, no email gate, no watermark. It has 11 columns and three filled-in example rows so the format is obvious before you type anything.
Then:
- Open sheets.new for a blank spreadsheet.
- File → Import → Upload, and drag in
job-application-tracker-template.csv. - Import location: Replace spreadsheet. Separator type: Detect automatically. Click Import data.
- Select row 1, then View → Freeze → 1 row. Your headers now stay put as the list grows past a screenful.
- Delete the three example rows once you've added your first real application — or keep them at the bottom as a formatting reference.
The columns land in this order, and every formula below refers to these letters:
| Column | Field | Column | Field |
|---|---|---|---|
| A | Company | G | Contact / Recruiter |
| B | Role | H | Next Follow-up Date |
| C | Job Posting URL | I | Interview Stage |
| D | Date Applied | J | Salary Range |
| E | Status | K | Notes |
| F | ATS Match Score |
If you'd rather see the reasoning behind each of the 11 columns before you commit to them, the full job application tracker template guide walks through why each field earns its place.
Which Google Sheets setups are actually worth doing?
Eight, in the order that pays off fastest. The first three take about five minutes together and do most of the work.
1. A Status dropdown so the pipeline stays readable
Select column E, then Insert → Dropdown. Add exactly six values: Applied, Screening, Interview, Offer, Rejected, Withdrawn. Give each a colour while you're there — Sheets shows them as chips, so the status column becomes scannable at a glance.
Six fixed values, no improvising. The moment you invent "probably ghosted," your status column stops being countable, and every formula below depends on it being countable.
2. Overdue follow-ups that turn red without being asked
This is the single highest-value thing on the page. Select H2:H1000, then Format → Conditional formatting → Custom formula is:
=AND($H2<>"", $H2<TODAY(), $E2<>"Rejected", $E2<>"Withdrawn", $E2<>"Offer")Set the fill to red. Now any follow-up date that has passed lights up — but only for applications that are still live. Closed applications stay quiet instead of nagging you forever, which is exactly why the plain "date is before today" rule most templates ship with gets switched off after a week.
3. A follow-up date that fills itself in
Nobody reliably calculates "ten business days from Tuesday" by hand. Put this in H2 when you log a new application and let it propose a date you can overwrite:
=IF($D2="", "", WORKDAY($D2, 10))WORKDAY skips weekends, so you get a real business-day target rather than a date that lands on a Saturday. Overwrite it manually the moment a recruiter gives you an actual date — a promised "we'll know by the 14th" always beats a formula.
4. A live "who do I email this morning" list
Put this in a blank cell on a second tab (call it Dashboard) and it maintains itself forever:
=IFERROR(
SORT(
FILTER({Tracker!$A$2:$A, Tracker!$B$2:$B, Tracker!$H$2:$H},
Tracker!$H$2:$H <> "",
Tracker!$H$2:$H <= TODAY(),
Tracker!$E$2:$E <> "Rejected",
Tracker!$E$2:$E <> "Withdrawn"),
3, TRUE),
"Nothing overdue — nice.")It returns company, role and due date for every live application whose follow-up date has arrived, oldest first. This is the closest thing to a job-search to-do list you can build without an app, and it is the reason to use Sheets rather than a static file: FILTER and SORT recalculate every time you open the tab.
Rename your first tab to Tracker before pasting, or swap Tracker! for whatever you named it.
5. Four numbers that tell you where your search is dying
Also on the Dashboard tab. These four are worth more than any chart:
Applications sent =COUNTA(Tracker!$A$2:$A) - 1
Still at "Applied" =COUNTIF(Tracker!$E$2:$E, "Applied")
Reached a human =COUNTIFS(Tracker!$E$2:$E, "<>Applied", Tracker!$E$2:$E, "<>")
Response rate =IFERROR(COUNTIFS(Tracker!$E$2:$E,"<>Applied",Tracker!$E$2:$E,"<>") / COUNTA(Tracker!$E$2:$E), "")(The - 1 on the first one accounts for the header row.)
Read them together. If almost everything is stuck at Applied, the problem is upstream of any human — your resume isn't clearing the ATS screen, and no amount of follow-up discipline will fix that. If you're reaching Screening but never Interview, your resume is working and your phone screen isn't. The stage where applications pile up is the diagnosis, and this is the cheapest diagnostic in a job search.
6. The comparison that tells you your personal match-score threshold
Once you have twenty-odd rows, this pair earns its keep:
Avg score, advanced =IFERROR(AVERAGEIFS(Tracker!$F$2:$F, Tracker!$E$2:$E, "<>Applied", Tracker!$E$2:$E, "<>"), "")
Avg score, stalled =IFERROR(AVERAGEIFS(Tracker!$F$2:$F, Tracker!$E$2:$E, "Applied"), "")Column F holds the ATS match score you recorded before submitting — you can get one from our free resume checker in about a minute per application, no signup. When the two averages separate (say advanced applications average 82% and stalled ones average 64%), you've found your threshold, for your field and your resume. Below it, tailor before you submit. That's a genuinely personal number no generic advice article can give you.
7. A duplicate guard, because week five is a blur
Select A2:K1000, then Format → Conditional formatting → Custom formula is:
=AND($A2<>"", COUNTIFS($A$2:$A, $A2, $B$2:$B, $B2) > 1)Any company-plus-role you've logged twice highlights. Applying twice to the same requisition is a small embarrassment; doing it while a recruiter is mid-process with you is a larger one.
8. Clickable postings that survive the posting being deleted
Companies pull job postings roughly when you get the interview invite. Keep the URL, and add this in a spare column to see at a glance which board each application went through:
=IF($C2="", "", REGEXEXTRACT($C2, "^https?://(?:www\.)?([^/]+)"))You'll get boards.greenhouse.io, myworkdayjobs.com, jobs.lever.co and so on — which is quietly useful, because the ATS behind the posting changes what your resume should look like. See our notes on Workday and Greenhouse if one board starts dominating your list.
Paste the full job description into the Notes column too, or a linked doc. When the posting vanishes, that text is what you prep your interview against.
Should you use Google Sheets or Excel to track job applications?
Both hold the same 11 columns; the difference is what they're good at once the list gets long.
| Google Sheets | Excel | |
|---|---|---|
| Live dashboard | FILTER and SORT recalculate on open, so an overdue list maintains itself | Needs a PivotTable refresh or Power Query to stay current |
| Access across devices | Same URL on phone and laptop, always current — the reason follow-ups actually get logged | Requires OneDrive sync; local copies drift |
| Sharing with a coach or mentor | One link, comment permissions, no account needed to view | Send a file, then reconcile versions |
| Offline use | Limited without the offline extension | Works fully offline |
| Heavy analysis | Fine up to a few hundred rows | Stronger with PivotTables and structured tables |
For a normal search — tens of applications, not thousands — Sheets wins on the thing that actually determines whether a tracker survives: you can update it from your phone thirty seconds after a recruiter calls. Trackers die from stale rows, not from weak analytics. If you'd rather work in Excel or Notion, the main tracker template guide covers the equivalent setup in both.
How do you keep it current once the novelty wears off?
Three fixed moments, and no continuous fiddling:
- The instant you submit. Company, role, posting URL, date, status
Applied, and the match score you recorded before tailoring. Ninety seconds. - The instant anything happens. A reply, a screen, a rejection — update Status and, more importantly, set the next follow-up date immediately. An empty H cell means that application is drifting.
- Once a week, fifteen minutes. Open the Dashboard tab, work down the overdue list, then glance at the four counts. Our weekly job search routine is the longer version of this habit.
That's it. The formulas above exist so that the weekly review takes fifteen minutes instead of an hour — the sheet has already worked out who's overdue and where your pipeline is leaking before you sit down.
If the four counts say your applications are stalling at Applied, the fix isn't in the spreadsheet. Run the exact job description against your resume with our free resume checker — no signup, no card — and see what the ATS is missing before you send the next one.
Frequently asked questions
- Is there a free job application tracker for Google Sheets?
- Yes — the CSV template above is free with no signup or email required, and imports straight into Google Sheets via File → Import → Upload → Replace spreadsheet. It includes 11 columns and three example rows, and every formula on this page is written against those exact column letters.
- How do I make a job application tracker in Google Sheets from scratch?
- Fastest route is to import the CSV above rather than building blank. If you'd rather start from nothing: create headers for Company, Role, Job Posting URL, Date Applied, Status, ATS Match Score, Contact, Next Follow-up Date, Interview Stage, Salary Range and Notes; freeze row 1 with View → Freeze → 1 row; add a Status dropdown via Insert → Dropdown with six fixed values; then add the overdue conditional-formatting rule. That takes about ten minutes.
- How do I highlight overdue job application follow-ups in Google Sheets?
- Select the Next Follow-up Date column, choose Format → Conditional formatting → Custom formula is, and enter =AND($H2<>"", $H2<TODAY(), $E2<>"Rejected", $E2<>"Withdrawn", $E2<>"Offer") with a red fill. The extra status conditions matter: without them, closed applications keep glowing red and you stop trusting the colour within a week.
- Can I track job applications in Google Sheets on my phone?
- Yes, and it's the main practical advantage over a desktop spreadsheet file. The Google Sheets mobile app opens the same live document, so you can set a follow-up date in the thirty seconds after a recruiter call instead of hoping you remember at your laptop that evening. Dropdowns and conditional formatting all render on mobile.
- Google Sheets or Excel for a job application tracker?
- Google Sheets for most job seekers, because FILTER and SORT keep a live overdue list without a manual refresh and you can update it from your phone. Excel is the better choice if you work offline often or want PivotTable analysis over hundreds of rows. The same free CSV template opens in both.
- How many columns does a job application tracker actually need?
- Eleven, and the three people most often skip are the ones they regret: the Job Posting URL (postings get pulled right around when you get the interview invite), the Next Follow-up Date, and the ATS match score you recorded before submitting. Thin trackers are useless by week three; 27-column ones never get filled in.
- Is a job application tracker the same as an applicant tracking system?
- No. A job application tracker is the spreadsheet you keep to track jobs you've applied to. An applicant tracking system (ATS) is the software employers run to screen incoming resumes. This template is the job-seeker side — see which ATS Fortune 500 companies use for the employer side.
- Why do job application trackers stop getting used?
- Stale rows, not missing features. A tracker only survives if updating it costs seconds and it gives something back. That's what the conditional formatting and the FILTER-based overdue list are for — the sheet tells you who to chase instead of waiting for you to read it.