Builder · Level 2 of 3
Applying to a dozen jobs a week turns your inbox into the worst spreadsheet you own. You do not need a paid tracker app to fix that: a Gmail filter that labels application-confirmation emails, paired with a no-code automation tool, can read the sender and subject of each one and add a structured row to a spreadsheet or Notion database on its own. Setup takes about 30 to 45 minutes. This guide covers picking filter criteria that actually catch confirmation emails, wiring the automation with Gmail plus Make (or Zapier or n8n), building your own tracker columns in two minutes, and where this kind of automation quietly breaks.
Some links below are affiliate links. If you sign up through them, Automate My Life may earn a commission at no extra cost to you, which helps keep the site free. Only genuinely useful tools receive a recommendation.
What do you need before you start?
This guide assumes you apply from a Gmail account — that is the easiest starting point, and it is what the steps below are built around. Outlook can do the filtering half through its own rules, but pairing it with a no-code tool works the same way once the trigger is set. Beyond email, you need three things:
- Somewhere to store the tracker. A Google Sheet or a Notion database both work; the steps below cover each.
- One no-code automation tool. Make handles this workflow well, and its free plan includes 1,000 operations a month, which comfortably covers a normal job search. Zapier's free plan works too, capped at 100 tasks a month with unlimited two-step Zaps — exactly what this workflow needs. n8n's self-hosted Community Edition removes the monthly cap entirely, at the cost of running your own instance.
- About 30 to 45 minutes the first time. After that, the automation runs itself, and the only ongoing work is the periodic cleanup covered near the end of this guide.
How do you tell a confirmation email from the rest of your inbox?
Most applicant tracking systems (Greenhouse, Lever, Workday, iCIMS, and similar platforms) send confirmation mail from a small, recognizable set of sending domains, and the subject line almost always follows one of a few patterns: "Thank you for applying," "We've received your application," "Your application to [Company]," or a variant naming the role. A filter that matches on subject keywords, rather than trying to guess every ATS domain in advance, catches most of them without you maintaining a domain list. You will still miss the occasional confirmation that uses unusual phrasing, and you will occasionally catch a message that merely mentions "application" in passing — both are normal, and the correction step later in this guide covers what to do about them.
Step 1: build a Gmail filter that labels confirmation emails
Start with a filter so only the right messages get processed downstream. In Gmail, click the search-options arrow in the search bar, and in the Subject field enter something like application received OR thank you for applying OR your application to. Click Create filter, then choose Apply the label and create a new one called something like Job Search/Applied. Checking Skip the Inbox is optional — keep the messages visible at first so you can confirm the filter is catching the right mail, then archive them later once you trust it.
Leave Also apply filter to matching conversations checked if you want the label backfilled onto applications already sitting in your inbox. This label is what the automation in Step 2 watches for, so the two steps are directly connected: nothing gets tracked that this filter does not label first.
Step 2: turn labeled emails into tracker rows with Make
With the label in place, Make can watch for it and write a row every time a matching email arrives. A basic scenario looks like this:
- Create a new scenario and add Gmail as the trigger app, using the Watch Emails module, scoped to the
Job Search/Appliedlabel rather than the whole inbox. - Add a Text Parser module (or Make's built-in
Get Domain from Emailfunction) to pull the company name from the sender's domain — for example, turningcareers@acmecorp.comintoacmecorp. This will not always be exact; some ATS platforms send from a shared domain likenoreply@greenhouse.iorather than the employer's own domain, which is the main gap the correction step below addresses. - Add a Google Sheets module set to Add a Row, and map the fields: Date Applied (the email's received date), Company (from the parser), Role (the email subject line, cleaned up later if needed), Status (set to a fixed value of "Applied"), and Source (set to "Email").
- Turn the scenario on and set the check interval. Every 15 minutes is close enough to instant for this without wasting operations on constant polling.
That is the full worked example: a Gmail filter that labels the right mail, and a Make scenario that reads the label and writes the row. Two operations run per matching email (the trigger and the write), so even an active job search rarely comes close to the free plan's 1,000-operation monthly ceiling.
Using Notion instead of a spreadsheet
If you would rather track applications in Notion, keep the same Gmail trigger and label, and swap the Google Sheets module for Make's Notion module set to Create a Database Item, mapping the same fields to properties in a Notion database (a select property works well for Status, since it renders as a colored tag you can scan at a glance). Notion's free plan supports an unlimited personal database at no cost, so there is no pricing reason to prefer one storage option over the other — pick whichever you will actually open and use. If you are comfortable writing a short script instead of using a visual builder, the Notion API supports the same "create a page in a database" action directly, which is worth knowing if you ever outgrow the no-code version.
Set up the tracker columns yourself
Rather than importing a premade file, build the structure directly in your spreadsheet or Notion database — it takes about two minutes and means you actually understand every column the automation is writing to:
- Date Applied — filled automatically from the email's received date.
- Company — filled from the sender domain, spot-checked periodically.
- Role — filled from the subject line as a starting point; expect to clean this up by hand occasionally.
- Status — Applied, Interviewing, Offer, Rejected, or Withdrawn. The automation sets this to Applied; you update it by hand as things move.
- Source — Email (from the automation), Referral, or Job Board, so you can see which channel is actually working over time.
- Follow-up Date — left blank by the automation; fill it in manually when you want a reminder to check in.
- Notes — left blank; this is where anything the automation cannot capture goes.
Which no-code tool should you use?
| Zapier | Make | n8n | |
|---|---|---|---|
| Free tier | 100 tasks/mo, unlimited 2-step Zaps | 1,000 operations/mo | Unlimited (self-hosted Community Edition) |
| Setup effort | Low — large template library | Low to medium — visual scenario editor | Higher — you host and maintain it |
| Paid plans start at | ~$19.99/mo | $12/mo (Core) | €20/mo (Cloud), or free self-hosted |
| Best for | Familiarity, a huge app library | Generous free operation count, visual builder | No monthly cap, full control |
For most job searches, Zapier's free two-step Zap covers this workflow outright, since the automation here is exactly two steps: watch the label, add the row. Make is worth the switch once you want the extra parsing step from Step 2, since its free plan has more headroom for multi-step scenarios. n8n only makes sense if you already run a server or a home lab and want zero monthly limits.
Handling false positives, duplicates, and manual corrections
- False positives. A broad subject match will occasionally catch a newsletter or a forwarded thread that happens to use the word "application." Tighten the filter to exclude your usual newsletter senders with
-from:(newsletter-domain.com), or delete the occasional stray row by hand — it is rare enough not to be worth over-engineering. - Duplicate rows. A follow-up email in the same thread ("Your interview is confirmed") can sometimes still carry the confirmation label and get added again. Add a condition in the scenario that skips subjects starting with "Re:" to catch most of these before they hit the sheet.
- Unreliable role names. Subject lines are inconsistent about naming the role clearly. Treat the Role column as a rough first pass and expect to retype a handful of entries during your weekly review, not a one-time setup task you never touch again.
- Company name gaps. ATS platforms that send from a shared domain (Greenhouse, Lever) will populate Company with the platform's name instead of the employer's. When that happens consistently, add a second parser rule that pulls the company name from the email body instead of the sender domain.
How much upkeep this actually takes
Once the filter and scenario are running, plan on five minutes a week: skim the new rows for anything miscategorized, update statuses for interviews and offers, and clear out an obvious duplicate if one slipped through. The Gmail filter itself needs almost no maintenance, but it can silently stop matching if an employer's ATS changes its subject-line wording — nothing errors out, the row simply never appears, which is why the weekly skim matters more than a one-time setup check. Make will flag failed scenario runs in its dashboard, so a broken connection (an expired Gmail authorization, for instance) is easy to notice rather than something you discover a month later with three weeks of missing rows.
Manual spreadsheet vs. a dedicated job-tracker app
A plain manual spreadsheet costs nothing and takes zero setup time, but it only works if you reliably remember to update it after every application — the exact habit most people drop within two weeks. Dedicated job-tracker apps add browser extensions that capture postings automatically and often include interview-prep features this setup does not, but they add a subscription or an account to manage on top of everything else in an already stressful search. The automated approach in this guide sits between the two: it costs nothing beyond a free automation-tool plan, and it removes the one step people actually skip — remembering to log the application in the first place — while leaving status updates and follow-up dates as the (small) manual part you still own.
Who should skip this
If you are applying to a handful of roles total, or every application goes through a single portal that already shows you a status page, the 30 to 45 minutes of setup here outweighs the payoff — just check that portal directly. The same goes if most of your applications come through a recruiter or referral rather than a confirmation email; there is nothing for the filter to catch, and a manual note after each conversation will serve you better than a half-working automation.
Where to go from here
If this is your first Gmail filter, Gmail Filters and Labels: Automate Your Inbox in 30 Minutes covers the fundamentals this guide builds on, including ten copy-paste filter recipes for the rest of your inbox. And if you would rather keep the tracker itself in a daily-notes system instead of a spreadsheet or database, Obsidian Daily Notes: Build a Workflow You Will Actually Keep covers a lighter-weight structure worth adapting.
Start with whichever tool you already have an account for. If you use Google Sheets daily, the Make-to-Sheets path above is the shortest distance to a working tracker. If Notion is where you already keep everything else, route the same automation there instead — the Gmail filter in Step 1 does not change either way.
Last verified: August 10, 2026. Gmail filter behavior was checked against Google's official filter and label documentation. Tool pricing and free-tier limits were checked against Make, Zapier, n8n, and Notion's current published plans; interfaces and limits change, so confirm current pricing before relying on it for a decision.