11 min read
You applied to twelve roles last week, but when a recruiter emails about req 8842 you can't remember which resume you sent or whether you already followed up. That's not a memory problem. It's a tracking problem, and the fix is a simple sheet keyed on req ID, resume version, and last touch date instead of company name alone. Below you'll build the same columns corporate recruiters use in Greenhouse and Workday, log each apply in under two minutes, and stop duplicate follow-ups that make you look scattered.
You're not disorganized. You're running a pipeline without the three fields that actually identify an application. Before you send another tailored file, check your resume for free against the posting so the version code you log in the sheet matches what parses on upload.
Job searching while you're still employed is exhausting, and a messy tracker makes every inbound email feel like a pop quiz. I've screened enough pipelines in Workday to know recruiters never ask do you remember Acme Corp. They ask which requisition and which materials we have on file.
This page walks through why company-only lists fail, six setup steps with copy-paste headers, two edge cases for duplicate reqs and agency submittals, mistakes that stall pipelines, and where tools fit without replacing the sheet. When you're ready to pair tracking with outreach, generate a cover letter that matches the resume version code you log on row one.
Quick Wins
- Create columns for req ID, resume version, and last touch date before company name.
- Log each apply the same day with the exact PDF filename you uploaded.
- Sort by last touch date weekly to surface rows ready for one follow-up.
- Freeze a row when status hits rejected or offer so active count stays honest.
Why company name alone is not an application ID
Most job seekers start a tracker with company, title, and date applied. That works for three applications and breaks by week two. Large employers run parallel reqs with similar titles. Agencies submit you to the same client under different req numbers. A portal shows under review while a recruiter already moved req 7710 to phone screen on a different requisition you forgot you clicked.
Recruiters do not live in your mental map of logos. In Greenhouse, Lever, and Workday, the requisition ID, candidate record, and resume version on file are the anchors. When someone calls about the senior analyst req in Chicago, they mean req 8842 with the PDF uploaded Tuesday, not every analyst role you've ever clicked at that company.
Company-only tracking also hides resume drift. You send v-product-leader to req 1104 and v-general-pm to req 1109 at the same employer. Two weeks later you follow up on 1109 with language written for 1104 because the row just says BigCo. The recruiter sees a mismatch and assumes you mass applied.
Last touch date is the field candidates skip most and recruiters notice first. It answers what happened since apply: portal ping, recruiter reply, interview booked, silence. Without it you either nag too early or go quiet while a hiring manager asked for your availability in a thread you buried.
A simple sheet does not replace a CRM. It gives you the same three anchors recruiters query before they reply: which req, which file, what changed last. Once those columns exist, status labels like applied, screen, onsite, and rejected become useful instead of decorative color coding.
If you're still sending one generic file everywhere, read the ten-minute resume tailoring method for US job posts before you name version codes. Tracking multiplies the value of tailored applies and exposes when you're applying without changing the PDF.
How to track job applications in six sheet columns recruiters mirror
Build one active tab plus an archive tab. The active tab holds open pipelines only. These six steps take about twenty minutes once, then two minutes per apply after that.
Step 1: Anchor every row on req ID or posting URL
Copy the requisition number from the job post footer, the URL with the req parameter, or the application confirmation email. If the post shows no ID, paste the full careers URL and add the date you saved it. Never merge two rows because the company name matches.
Before: Row reads Acme Corp, Product Manager, applied 3/10. Second Acme PM apply overwrites the first in your head.
After: Req 8842, Acme Corp, PM Growth, applied 3/10, URL logged. Req 9011, Acme Corp, PM Platform, applied 3/18, separate row.
Step 2: Assign a resume version code before you upload
Pick a short code for each distinct focus: v-finance-analyst, v-customer-success, v-staff-nurse. Log that code on the row the moment you attach the PDF. The code should describe content, not employer, so you reuse it across companies with similar reqs.
Before: Resume_final_v2.pdf sent to six employers. You cannot map which posting got SQL emphasis.
After: v-data-analyst uploaded to reqs 7710, 8022, and 8156. Sheet shows the same code three times with different req IDs and dates.
Step 3: Set last touch date equal to apply date on day one
On submit, last touch date is today and next action is wait ten days unless the posting forbids follow-up. Every inbound email, portal status change, or interview invite replaces last touch date with that event's date. Treat last touch as a heartbeat, not a reminder you fill in later on Sunday night.
Step 4: Add status and next action columns that force a decision
Status is a closed list: applied, recruiter screen, hiring manager, onsite, offer, rejected, withdrawn. Next action is one verb: wait, follow up, prep interview, send thank-you, archive. If next action is blank, the row is stale. Color optional; verbs required.
Before: Yellow highlight means maybe. You have twelve yellow rows and no planned moves.
After: Req 8022 status applied, next action follow up 3/28, last touch 3/14 apply date. Req 8156 status rejected 3/20, next action archive, moved to archive tab same day.
Step 5: Log source and contact only when real
Source is how you found the req: employee referral, LinkedIn alert, company site, agency name. Contact column holds recruiter or hiring manager name only when the post or a reply gave you one. Empty is better than guessing. When a referral name exists, last touch often moves faster because you log the intro email the same day.
Edge case: agency submittals. Add agency name in source and the client req ID in its own column. You may have two rows for one interview if agency and client both email you. Tie them with the same req ID and note agency screen completed so you do not prep twice with conflicting stories.
Step 6: Weekly sort by last touch date and cap open rows
Every Sunday, sort active tab by oldest last touch date. Rows past fourteen days with status applied and no reply get one follow-up, then last touch updates to the follow-up date and next action returns to wait. If active rows exceed forty, pause new applies until you archive rejects or withdrawals. Volume without tracking is how duplicate submittals happen.
Edge case: duplicate reqs with different locations. Same title in Austin and remote are two req IDs. Log location in the role title field so you do not withdraw from one city while interviewing for another.
Copy-paste block: recruiter-style tracker headers
ACTIVE TAB HEADERS (row 1):
Req ID / URL | Company | Role title + location | Date applied | Resume version | Last touch date | Status | Next action | Source | Contact | Notes
EXAMPLE ROW:
8842 | Northwind Health | Revenue Analyst (remote) | 2026-03-10 | v-revenue-analyst | 2026-03-10 | applied | wait until 2026-03-24 | company site | | posting closes 2026-04-01
WEEKLY REVIEW (5 minutes):
1. Sort by last touch date ascending
2. Send one follow-up where next action = follow up and date is today or past
3. Move rejected/withdrawn rows to ARCHIVE tab
4. Count active rows; stop new applies if over 40 open
RESUME VERSION BANK (keep on second tab):
v-revenue-analyst | SQL + NetSuite bullets | file: LastName_v-revenue-analyst.pdf
v-customer-success | Zendesk + retention bullets | file: LastName_v-customer-success.pdf
Keep notes short: posting deadline, salary range from the ad, interview format, or take-home due date. Long paragraphs belong in email drafts, not the tracker. When a recruiter asks a detail you already captured in notes, you reply with dates and version codes they can match in their ATS.
For follow-up wording that does not sound pushy, see how to network without feeling awkward . The sheet tells you when to reach out; the message still needs one concrete detail from the req or prior thread.
Tracker habits that create duplicate follow-ups
A good sheet fails when logging discipline slips. These patterns show up in recruiter inboxes as duplicate threads, wrong attachments, and applicants who cannot answer which req they mean.
Merging rows by company. Two reqs at one employer stay two rows even if the hiring manager is the same person. Collapsing them guarantees version mix-ups when one req closes and the other opens the same week.
Logging apply date but never updating last touch. Every follow-up without a new last touch date looks like your first ping to you and like the third nag to the recruiter who replied in a thread you did not record.
Renaming resume files after upload. Change the PDF name before submit, not after. The portal stores what you uploaded. Your sheet should match that filename exactly so you can resend or reference it when asked.
Tracking in three places. Browser bookmarks, a notes app, and a half-started sheet diverge by Wednesday. One active tab, one archive tab, one version bank tab. Turn off duplicate reminders in other apps or they will fire on closed reqs.
Reapplying to refresh visibility. Many corporate portals block duplicate submittals to the same req. A second click does not reset the clock; it creates a duplicate profile recruiters merge or ignore. Update last touch with a follow-up email instead of a second apply.
Status theater without next action. Marking interview scheduled without logging prep tasks or thank-you dates is how candidates miss panel loops. Status tells you where you were; next action tells you what to do before tomorrow.
Before: Follow-up email says just checking in on my application at your company with no req ID.
After: Following up on req 8842 for Revenue Analyst submitted 3/10 with resume v-revenue-analyst. Still interested if the team is scheduling screens.
Match resume versions before you log the row
The sheet tracks what you sent. Tools help you decide what to send. Upload the posting and your draft to HireFlow's free ATS resume checker before you assign a version code. Log the code only after the preview shows the keywords you tailored for that req, so row data matches what parsers store.
When two similar reqs need different emphasis, run job match score on each posting against the same base file. Save two exports, name two version codes, and log two rows. Guessing which req wants SQL versus forecasting language is how one PDF ends up on both rows.
Do this now: Create the header row, log today's applies with req ID and version code, run one match check, set last touch dates, sort by oldest touch before you apply again tomorrow.
What to do now
Learning how to track job applications like a US recruiter is mostly learning what counts as one application. Req ID, resume version, and last touch date turn a scary inbox into rows you can act on. Company name is context, not the key.
- Create active and archive tabs with the header row from the copy-paste block.
- Log today's applies with req ID, version code, and last touch equal to apply date.
- Run one match check before you assign a new version code.
- Sort by oldest last touch weekly and send one follow-up per eligible row.
- Archive rejects the same day so open count stays honest.
Open the req you're about to submit. Run a free ATS check , name the version, log the row, and send when the file and sheet match.
Read more
Frequently asked questions
Start with req ID or posting URL, company, role title, date applied, resume version sent, last touch date, status, and next action. Recruiters in Greenhouse and Workday tie files to a requisition number, not just a company name. When the same employer posts two similar roles, company-only rows duplicate and you lose which resume you sent where. Add a contact column only when you have a real name or email from the posting or a reply.
Update last touch date the same day anything moves: application submitted, portal status change, recruiter email, interview scheduled, rejection, or your follow-up sent. Waiting until Sunday to batch-update is how people email the same req twice or miss a screen because they forgot which version went out. If nothing changed in two weeks and status is still applied, that row is your follow-up queue, not a reason to reapply with a different file.
Track every submission you would need to explain in an interview, which usually means targeted roles only. Mass clicks on easy-apply buttons without a tailored resume still deserve a row if you already hit submit, because you may need to reference that file later. For roles you only saved but did not apply to, use a separate wishlist tab so your active pipeline stays under forty open rows and stays scannable.
Use a short code tied to focus, not employer: v-finance-analyst, v-pm-saas, v-nurse-med-surg. Pair that code with the req ID in the tracker row. File names on disk can be longer: LastName_v-finance-analyst_2026-03.pdf. When a recruiter asks which resume they have, you answer with the code and date applied from the sheet instead of guessing from memory.
One polite follow-up about ten to fourteen days after apply is normal when you have no status change and a real contact or portal message thread. Log the follow-up in last touch date and move next action to wait seven days. Do not follow up twice before updating the sheet, and do not follow up on auto-rejections unless the portal clearly invited questions. If you already had a phone screen, follow up on the timeline the recruiter gave you, not a generic two-week rule.
