Send Automated Recruitment Rejection Email at End-of-Day (Google Sheets | Gmail)

Go to Workflow
0 views
Built by WeblineIndia WeblineIndia
Created on August 23, 2025

Description

Send Automated Recruitment Rejection Emails with Google Sheets and Gmail at End-of-Day.

Automatically reads a “Candidate Status” tab in Google Sheets every day at 18:00 Asia/Kolkata, filters rows with exact (case-sensitive) rejection statuses and sends one personalized rejection email per candidate via SMTP (Gmail). It rate-limits sends, supports DRY\_RUN previews and writes a timestamp back to rejection_sent_at to avoid duplicates.

Who’s it for

Recruiters needing consistent, respectful closure at day end.
Teams tracking hiring outcomes in Google Sheets.
Coordinators who prefer a scheduled, hands-off workflow with safeguards.

How it works

Cron (18:00 IST) triggers daily
Google Sheets Read → loads Candidate Status tab
Filter → keep rows where status REJECT_STATUS_CSV (exact match), with valid candidate_email and empty rejection_sent_at
DRY\RUN? If true → output preview only; if false → proceed
Rate limit → wait RATE_LIMIT_SECONDS (default 10s) between emails
SMTP (Gmail) → send personalized email per row using templates
Mark as sent → write current timestamp to rejection_sent_at

How to set up

Sheet & Columns**: Create “Candidate Status” tab with:
candidate_name, candidate_email, role, status, recruiter_name, recruiter_email, company_name, interview_feedback (optional), template_variant (optional), language (optional), rejection_sent_at
Credentials: Connect **Google Sheets (OAuth) and SMTP (Gmail) in n8n (use App Password if 2FA)
Config (Set node)**:
SPREADSHEET_ID
SOURCE_SHEET = Candidate Status
TIMEZONE = Asia/Kolkata
REJECT_STATUS_CSV = e.g., Rejected
SMTP_FROM = e.g., [email protected]
SUBJECT_TEMPLATE = Regarding your application for {{role}} at {{company_name}}
HTML_TEMPLATE / TEXT_TEMPLATE
RATE_LIMIT_SECONDS = 10
INCLUDE_WEEKENDS = true
DRY_RUN = false
Activate**: Enable the workflow

Requirements

Google Sheet with the “Candidate Status” tab and columns above.
SMTP (Gmail) account for sending.
n8n (cloud or self-hosted) with Google Sheets + SMTP credentials.

How to customize

Statuses**: REJECT_STATUS_CSV supports comma-separated exact values (e.g., Rejected,Not Selected)
Templates**: Edit SUBJECT_TEMPLATE, HTML_TEMPLATE, TEXT_TEMPLATE

Variables:** {{candidate_name}}, {{role}}, {{company_name}}, {{recruiter_name}}, and optional {{feedback_text}}/{{feedback_html}} from interview_feedback
Schedule**: Change Cron time from 18:00 to your preferred hour
Rate limit**: Tune RATE_LIMIT_SECONDS for SMTP policy
Preview**: Set DRY_RUN=true for a safe, no-send preview

Add-ons

Dynamic Reply-To** per recruiter_email
Localization/Variants** via language or template_variant columns
Daily summary** email: sent/skip/error counts
Validation & logging**: log invalid emails to another tab
Gmail API**: swap SMTP with Gmail nodes if preferred

Use Case Examples

Daily round-up**: 18:00 IST closure emails for all candidates marked Rejected today
Multi-brand hiring**: Switch company_name per row and personalize subject lines
Compliance/logging**: DRY\RUN each afternoon, review, then flip to live sends

Common troubleshooting

No emails sent**: Ensure status exactly matches REJECT_STATUS_CSV (case-sensitive) and candidate_email is present
Duplicates**: Verify rejection_sent_at is blank before run; workflow sets it after sending
Blank variables**: Fill candidate_name, role, company_name, recruiter_name in the sheet
SMTP errors**: Check credentials, sender permissions, and daily limits
Timing**: Confirm workflow timezone Asia/Kolkata and Cron = 18:00

Need Help?

Want us to tailor the template, add a summary report or wire up company-based variants? Contact our n8n automation engineers at WeblineIndia and we’ll plug it in.

This workflow was created by WeblineIndia and shared publicly on the n8n community template library. n8nFind indexes it for discovery — the workflow remains the property of its original creator.

Nodes Used (3)

Code
n8n-nodes-base.code
Gmail
n8n-nodes-base.gmail
Google Sheets
n8n-nodes-base.googleSheets