Automated Candidate Rejection Email Sender using Google Sheets and Gmail - n8n Workflow

Use this robust n8n workflow to automatically send batch rejection emails to candidates flagged in Google Sheets, scheduled daily using the n8n trigger.

Workflow Preview

Ready to automate?

Download this n8n workflow template and start using it instantly.

Who is this best for?


  • Recruiters and HR Managers needing to automate timely communication with rejected candidates.

  • Startups and SMBs utilizing Google Sheets as a lightweight Applicant Tracking System (ATS).

  • n8n Automation Specialists looking for sophisticated n8n templates integrating scheduling, data filtering, and external service communication (Gmail/Sheets).

  • Users who require controlled, rate-limited outbound email flows.

Overview

Maintaining a professional candidate experience requires timely communication, even for rejections. Manually sending emails for every rejected applicant is tedious and prone to error. This comprehensive n8n workflow solves this by synchronizing your recruitment data in Google Sheets with your outbound email system (Gmail).

Scheduled using an n8n trigger, this powerful n8n workflow executes daily, identifying candidates marked for 'Rejection' who have not yet received an email. It uses robust custom code to ensure data quality and prevents duplicate messages. Crucially, the n8n node structure includes a rate-limiting step, preventing email provider throttling, and features a configuration for optional weekend skipping and a safe 'Dry Run' mode. This n8n workflow template provides a reliable, hands-off solution for efficient recruitment operations.

How it Works

The entire process is initiated by the Schedule n8n trigger daily at 6:00 PM (or the configured time).


  1. Configuration Check: The process starts by loading critical settings (Sheet ID, reject status, email templates, rate limit, and Dry Run flag) defined in the Set n8n node.

  2. Weekend Policy: An If n8n node checks the date. If INCLUDEWEEKENDS is false and the current day is Saturday or Sunday, the n8n workflow terminates gracefully.

  3. Data Retrieval: The Google Sheets n8n node fetches all candidate data from the configured 'Candidate Status' sheet.

  4. Filtering: The custom Code n8n node meticulously filters this data, isolating only candidates who match the rejection status criteria, have a valid email, and have not previously had a timestamp in the rejectionsentat column.

  5. Existence Check: If no candidates are found, the n8n workflow halts with a status message.

  6. Dry Run Control: An If n8n node checks the DRYRUN configuration. If true, a preview of the emails is generated by a Code n8n node without sending anything. If false, the live run proceeds.

  7. Template Generation: For each candidate item, a Code n8n node processes the stored HTML, text, and subject n8n templates, dynamically substituting candidate-specific details (name, role, feedback).

  8. Throttle Control: A Wait n8n node applies a dynamic delay (e.g., 10 seconds) before proceeding, ensuring the Gmail n8n node does not violate sending limits.

  9. Email Dispatch: The Gmail n8n node sends the personalized rejection email.

  10. Data Update: Immediately after sending, the Google Sheets n8n node updates the row for that candidate, marking the rejectionsentat column with the current timestamp. This prevents this specific n8n workflow instance from ever emailing that candidate again.

Installation Guide

To deploy this powerful n8n workflow template:


  1. Import: Copy the provided JSON into your n8n instance using the 'New' -> 'Import from JSON' function.

  2. Credentials Setup:

Google Sheets: You must connect a Google Sheets OAuth2 credential (K51JQLS2WHFWzap5 in the example) with read/write access to the spreadsheet where candidate data resides.
Gmail: Configure a Gmail OAuth2 credential (GsAjl8kiLaQnkjoK in the example) for sending emails.

  1. Configuration Node: Edit the Set: Config n8n node. Update the SPREADSHEETID, SOURCESHEET, SMTPFROM, and critically, verify the REJECTSTATUSCSV matches the status column values in your spreadsheet.

  2. Testing: Set the DRYRUN parameter to true and run the n8n workflow manually to verify the filtering and template generation works correctly. Review the output of the 'Dry Run Preview' n8n node.

  3. Activation: Once testing is complete, set DRY_RUN to false and activate the n8n workflow.

Node Details

Schedule Trigger (n8n trigger): Sets the execution schedule to run daily at 6:00 PM (18:00 UTC, adjusted by instance timezone settings).
Set: Config (n8n node): Centralized configuration point. Defines all dynamic variables like Spreadsheet ID, source sheet name, rejection criteria (REJECTSTATUSCSV), rate limit (10 seconds), and email templates.
Google Sheets: Fetch Candidate Data (n8n node): Connects to Google Sheets using the specified document ID to retrieve all current candidate records for analysis.
Code: Filter Candidates for Rejection (n8n node): Executes custom JavaScript to apply business logic, ensuring only candidates with the specified status and missing a rejectionsentat timestamp proceed.
Code: Process Email Template (n8n node): Responsible for merging candidate data into the HTML, text, and subject line templates, preparing the final output for the email service.
Wait: Rate Limit Wait (n8n node): Dynamically waits for the duration specified in the configuration (RATELIMITSECONDS), crucial for respecting API limits, a best practice in any heavy-load n8n template.
Gmail: Send Rejection Email1 (n8n node): Sends the fully prepared HTML email using the configured Gmail connection.
Google Sheets: Mark as Sent in Sheet (n8n node): Updates the original spreadsheet row using the candidate's email as the matching column, permanently recording the time the email was sent.

Related n8n Workflows

Free

Nodes: 7 Nodes
Updated: December 26 2025
View all
Created by

A Leading Software Engineering, Consulting & Outsourcing Services Company in USA & India serving Clients Globally since 1999.

Featured*