Send automated recruitment rejection email at end-of-day (Google Sheets | Gmail)
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-sens...
Template notes
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 rejectionsentat 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
1. Cron (18:00 IST) triggers daily 2. Google Sheets Read → loads Candidate Status tab 3. Filter → keep rows where status REJECTSTATUSCSV (exact match), with valid candidateemail and empty rejectionsentat 4. DRY\RUN? If true → output preview only; if false → proceed 5. Rate limit → wait RATELIMITSECONDS (default 10s) between emails 6. SMTP (Gmail) → send personalized email per row using templates 7. Mark as sent → write current timestamp to rejectionsentat
How to set up
Sheet & Columns: Create “Candidate Status” tab with: candidatename, candidateemail, role, status, recruitername, recruiteremail, companyname, interviewfeedback (optional), templatevariant (optional), language (optional), rejectionsentat Credentials: Connect Google Sheets (OAuth) and SMTP (Gmail) in n8n (use App Password if 2FA) Config (Set node): SPREADSHEETID SOURCESHEET = Candidate Status TIMEZONE = Asia/Kolkata REJECTSTATUSCSV = e.g., Rejected SMTPFROM = e.g., careers@company.com SUBJECTTEMPLATE = Regarding your application for {{role}} at {{companyname}} HTMLTEMPLATE / TEXTTEMPLATE RATELIMITSECONDS = 10 INCLUDEWEEKENDS = true DRYRUN = false Activate: Enable the workflow