Home Blog ๐Ÿ” n8n Job Search ๐Ÿ’ผ LinkedIn Automation ๐Ÿ“„ AI Resume Tailor ๐Ÿ“Š Make.com Tracker ๐Ÿ”” Zapier Job Alerts ๐Ÿค– AI Agents Guide ๐Ÿ› ๏ธ Best AI Tools ๐Ÿ’ฌ ChatGPT Tips ๐Ÿ“Š n8n Guide ๐ŸŽฏ Prompts ๐Ÿ”— LangChain
Make.com Google Sheets Gmail

Build a Free Job Application Tracker with Make.com + Google Sheets

Automate your entire job application pipeline: auto-log applications from Gmail, detect interview invites and rejections, schedule follow-up reminders, and get weekly progress digests โ€” all free.

๐Ÿ‘ค Akash ๐Ÿ“… March 1, 2025 โฑ 10 min read ๐Ÿ”” Free tier friendly

Keeping track of job applications is surprisingly hard. By week three of an active job search, most people have applications scattered across browser tabs, email threads, LinkedIn messages, and sticky notes. You forget who you followed up with, miss interview scheduling windows, and lose track of which version of your resume you sent where.

This Make.com scenario (formerly Integromat) solves that completely. It monitors your Gmail for job-related emails, automatically logs applications to a Google Sheet, detects status changes like interview invites and rejections, sets reminder follow-ups, and emails you a weekly pipeline summary โ€” all without you lifting a finger after the initial setup.

โšก What You'll Build

  • โœ… Automatic logging of job applications from Gmail to Google Sheets
  • โœ… AI classifier that identifies job-related emails vs. spam/newsletters
  • โœ… Smart data extractor (company, role, date, hiring manager)
  • โœ… Status detection โ€” automatically marks Interview, Offer, Rejected
  • โœ… Follow-up reminder scheduler (7-day nudge if no response)
  • โœ… Weekly digest email with pipeline stats and pending actions

Why Make.com for This?

Make.com's visual drag-and-drop interface makes building multi-step automations especially intuitive. Unlike n8n (which requires more setup) or Zapier (which gets expensive quickly), Make.com's free tier includes 1,000 operations/month โ€” easily enough to monitor an active job search. The scenario builder's routing and filtering capabilities are particularly powerful for the email classification logic this workflow relies on.

FeatureMake.comn8nZapier
Free tier1,000 ops/monthFree self-hosted100 tasks/month
Visual builderโœ… Excellentโœ… Goodโœ… Simple
Conditional routingโœ… Nativeโœ… Nativeโš ๏ธ Limited (paid)
AI/OpenAI moduleโœ… Built-inโœ… Built-inโœ… ChatGPT action
Learning curveLowMediumVery Low
Self-hostingโŒโœ…โŒ

Prerequisites

  • Make.com account: Sign up free at make.com
  • Gmail account: The email you use for job applications
  • Google Sheets: Will be created automatically by the scenario
  • OpenAI API key (optional): For the AI email classifier; you can use keyword matching as a free alternative

Set Up Your Tracking Spreadsheet

Before building the scenario, create a Google Sheet named "Job Applications 2025" with these column headers in row 1:

A: Date Applied
B: Company
C: Job Title
D: Location
E: Status
F: Email Subject
G: Hiring Manager
H: Application URL
I: Resume Version
J: Follow-up Date
K: Notes
L: Email Thread ID

Column L (Email Thread ID) is crucial โ€” it lets the scenario match future emails about the same job to the original application row, avoiding duplicates when you receive interview invites or rejections weeks later.

Step-by-Step Scenario Setup

In Make.com, click Create a new scenario. Add each module below in sequence.

Step 1: Gmail Watch Trigger

1

๐Ÿ“ฌ Gmail โ€” Watch Emails

Monitors your Gmail inbox for new emails every 15 minutes. Only passes emails to the next module if they match a broad initial filter, reducing unnecessary processing of unrelated messages.

Add the Gmail โ†’ Watch Emails module:

  • Connection: Connect your Gmail account (OAuth2)
  • Folder: INBOX
  • Criteria: All mail (the classifier in the next step handles filtering)
  • Maximum number of emails: 10 (per 15-minute check)
  • Mark as read: No (don't interfere with your normal email workflow)

Step 2: AI Email Classifier

2

๐Ÿค– OpenAI โ€” Classify Email Type

Uses GPT to determine if the email is job-related and, if so, what type: new application confirmation, interview invite, rejection, offer, or other. This structured output drives all the routing in subsequent steps.

Add the OpenAI โ†’ Create a Completion module:

Classify this email and return ONLY valid JSON: EMAIL SUBJECT: {{1.subject}} EMAIL FROM: {{1.from}} EMAIL SNIPPET: {{left(1.text; 800)}} Return this exact JSON format: { "is_job_related": true, "email_type": "application_confirmation", "company": "Acme Corp", "job_title": "Software Engineer", "hiring_manager": "Jane Smith", "confidence": 0.95 } email_type must be one of: application_confirmation, interview_invite, rejection, offer, follow_up_needed, not_job_related If not job related, set is_job_related to false and use null for other fields.

After this module, add a Router to split the flow based on the classification result.

Step 3: Data Extractor

3

๐Ÿ”ง JSON Parser + Text Parser โ€” Extract Structured Data

Parses the OpenAI JSON response and extracts individual fields for use in the Google Sheets module. Also calculates the follow-up reminder date as 7 days from today.

Add a JSON โ†’ Parse JSON module to deserialize the OpenAI response, then use Make.com's built-in functions to compute derived values:

// In the Google Sheets "Add a Row" module, use these mapped expressions:
Date Applied:     {{formatDate(now; "YYYY-MM-DD")}}
Company:          {{3.company}}         // from parsed JSON
Job Title:        {{3.job_title}}
Location:         extracted via regex from email body
Status:           {{if(3.email_type = "application_confirmation"; "Applied"; "Unknown")}}
Email Subject:    {{1.subject}}
Hiring Manager:   {{3.hiring_manager}}
Follow-up Date:   {{formatDate(addDays(now; 7); "YYYY-MM-DD")}}
Email Thread ID:  {{1.threadId}}

Step 4: Google Sheets Row Appender

4

๐Ÿ“Š Google Sheets โ€” Add a Row

Writes the new application to your tracking spreadsheet. Only runs for new applications โ€” not for interview/rejection updates, which are handled by the Status Updater module in the next route.

This module is in the "New Application" route of your router. Configure it:

  • Spreadsheet: Select your "Job Applications 2025" sheet
  • Sheet: Sheet1
  • Table contains headers: Yes
  • Map each column to the extracted values from Step 3

Add a Filter before this module: {{3.is_job_related}} = true AND {{3.email_type}} = application_confirmation. This ensures only confirmed new applications create new rows โ€” not every job-related email.

Step 5: Status Updater

5

๐Ÿ”„ Google Sheets โ€” Update Existing Row

When an interview invite, rejection, or offer email arrives, this module finds the matching row in your sheet by Thread ID and updates its Status column. This keeps your single tracking row per application accurate through the entire lifecycle.

This module is in a separate route for interview/rejection/offer emails. It uses Google Sheets โ†’ Search Rows first to find the matching row by Thread ID, then Update a Row:

  • Search column: L (Email Thread ID)
  • Search value: {{1.threadId}}
  • Update โ€” Status column: {{if(3.email_type = "interview_invite"; "Interview Scheduled"; if(3.email_type = "rejection"; "Rejected"; if(3.email_type = "offer"; "Offer Received"; "Follow-up Needed")))}}

Step 6: Follow-up Reminder Scheduler

6

โฐ Scheduled Check โ€” Follow-up Nudge

A separate scenario (or a second route triggered on a daily schedule) that scans the sheet for applications where the Follow-up Date has passed and status is still "Applied." Sends a reminder email for each one.

Create a second scenario with a Schedule trigger (runs daily at 9 AM):

  1. Google Sheets โ†’ Get Rows: Filter where column J (Follow-up Date) โ‰ค today AND column E (Status) = "Applied"
  2. Iterator: Process each overdue application one at a time
  3. Gmail โ†’ Send an Email: Send yourself a reminder with the company name, role, and a suggested follow-up message template
  4. Google Sheets โ†’ Update a Row: Push the Follow-up Date forward by 7 more days so you get reminded again if still no response
// Gmail reminder subject and body template: Subject: โฐ Follow up with {{company}} โ€” {{job_title}} Body: Hi, it's been 7 days since you applied to {{job_title}} at {{company}}. Consider sending a follow-up email to express continued interest. Here's a template: --- Subject: Following Up โ€” {{job_title}} Application Dear Hiring Team, I wanted to follow up on my application for the {{job_title}} position submitted on {{date_applied}}. I'm very enthusiastic about this opportunity and would love to learn about next steps. Thank you for your time, [Your Name] --- Update status: {{google_sheets_link}}

Step 7: Weekly Digest Email

7

๐Ÿ“ˆ Weekly Summary โ€” Pipeline Stats

A third scenario triggered every Monday morning that reads your entire tracking sheet, calculates pipeline stats, and emails you a formatted weekly progress report. Gives you a clear view of your job search momentum.

Create a third scenario with a Schedule trigger (every Monday at 8 AM):

  1. Google Sheets โ†’ Get All Rows: Fetch all application rows
  2. Aggregator: Count rows by status value (Applied, Interview, Rejected, Offer)
  3. Gmail โ†’ Send an Email: Send the weekly digest

The digest email should show: total applications, active pipeline (Applied + Interview Scheduled), interview rate (Interviews รท Total Applied), and a list of applications with upcoming follow-up dates this week. This weekly review is also a great time to update any statuses you changed manually (e.g., applications you withdrew).

Tips & Customizations

Label job emails in Gmail first

Create a Gmail label called "Job Search" and set up a Gmail filter that labels any email from common job boards (linkedin.com, indeed.com, glassdoor.com, greenhouse.io, lever.co, workday.com) with this label. Then set your Make.com Watch trigger to only monitor emails with this label instead of your entire inbox โ€” this cuts processing by 90% and reduces false positives dramatically.

Add a Slack notification

Replace or supplement the Gmail reminder with a Slack module that posts interview invites and follow-up reminders directly to a dedicated #job-search Slack channel. Seeing a Slack ping is often more actionable than another email in an already-crowded inbox.

Connect to a Notion database

If you use Notion, swap the Google Sheets modules for Notion โ†’ Create a Database Item. Notion's gallery view makes for a much more visual application pipeline, and you can add custom properties like interview notes, company research, and salary expectations per application.

Frequently Asked Questions

Does this work if I apply directly on company websites (not by email)? +
The email-triggered flow only catches applications where you receive a confirmation email. For applications via company portals that don't send confirmations, you'll need to manually add them to the sheet (or use a browser extension like Huntr to capture them). Consider using the webhook trigger as a second input: a simple mobile shortcut that lets you log applications manually with one tap.
How do I avoid counting automated rejection emails as new applications? +
The AI classifier identifies email types independently โ€” a rejection email gets classified as "rejection" not "application_confirmation," so it routes to the Status Updater path, not the New Row path. If you're not using the AI classifier and relying on keyword matching instead, add a negative filter: only create new rows if the subject does NOT contain "unfortunately," "not moving forward," "other candidates," or similar rejection phrases.
Will this work within Make.com's free tier? +
Yes โ€” an active job search with ~10 applications per week and daily follow-up checks uses approximately 300-500 Make operations per month, well within the 1,000 free limit. If you skip the OpenAI classifier and use keyword-based routing instead (free), you can run this entirely for $0/month. The OpenAI API calls add roughly $0.01-0.03 per email classified.
Can I track referrals and LinkedIn applications separately? +
Yes โ€” add a "Source" column to your Google Sheet and extract the source from the email sender domain or subject line. LinkedIn application emails come from jobs-noreply@linkedin.com, Indeed from no-reply@indeed.com. You can add a function in Make.com that checks the sender domain and writes the source automatically. This lets you later analyze which source has the best interview conversion rate.
How do I handle applications I'm no longer interested in? +
Manually update the Status column in your sheet to "Withdrawn" and clear the Follow-up Date. The follow-up reminder scenario filters by Status = "Applied" only, so withdrawn applications won't generate reminders. You can also add a column for "Priority" (High/Medium/Low) and only send reminders for High priority applications to reduce noise.