Skip to main content

Send automated recruitment rejection email at end-of-day (Google Sheets | Gmail)

Workflow preview

Workflow preview
100%
Send automated recruitment rejection email at end-of-day (Google Sheets | Gmail) preview
Open on n8n.io

Important notice

This workflow is provided as-is. Please review and test before using in production.

1. Workflow Overview

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 w...

Best for

  • HR automation workflows
  • Multimodal AI automation workflows
  • advanced n8n builders looking for reusable templates

Tools used

n8n-nodes-base.scheduletrigger, n8n-nodes-base.set, n8n-nodes-base.if, n8n-nodes-base.code, n8n-nodes-base.wait, n8n-nodes-base.googlesheets, n8n-nodes-base.gmail

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by WeblineIndia.

Original n8n.io source

1.1 Workflow description

Title
Send automated recruitment rejection email at end-of-day (Google Sheets | Gmail)
Workflow name
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-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

  1. Cron (18:00 IST) triggers daily
  2. Google Sheets Read → loads Candidate Status tab
  3. Filter → keep rows where status REJECT_STATUS_CSV (exact match), with valid candidate_email and empty rejection_sent_at
  4. DRY\RUN? If true → output preview only; if false → proceed
  5. Rate limit → wait RATE_LIMIT_SECONDS (default 10s) between emails
  6. SMTP (Gmail) → send personalized email per row using templates
  7. 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.

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Schedule Trigger

Type / Role
n8n-nodes-base.scheduleTrigger - scheduleTrigger
Config choices
Version 1.2

Block 2 - Set: Config

Type / Role
n8n-nodes-base.set - set
Config choices
Version 3.4

Block 3 - Check Weekend Policy

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 4 - Weekend Skip Message

Type / Role
n8n-nodes-base.set - set
Config choices
Version 3.4

Block 5 - Filter Candidates for Rejection

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 6 - Is Dry Run?

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 7 - Dry Run Preview

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 8 - Process Email Template

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 9 - Has Candidates to Email?

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 10 - No Candidates Message

Type / Role
n8n-nodes-base.set - set
Config choices
Version 3.4

Block 11 - Rate Limit Wait

Type / Role
n8n-nodes-base.wait - wait
Config choices
Version 1.1

Block 12 - Log Success

Type / Role
n8n-nodes-base.set - set
Config choices
Version 3.4

Block 13 - Mark as Sent in Sheet

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.6

Block 14 - Send Rejection Email1

Type / Role
n8n-nodes-base.gmail - gmail
Config choices
Version 2.1

Block 15 - Fetch Candidate Data

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.6

3. Summary Table

Workflow Send automated recruitment rejection email at end-of-day (Google Sheets | Gmail)
Complexity advanced
Nodes 15
Categories HR, Multimodal AI
Author WeblineIndia
Published 23 Aug 2025

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/7766/7766.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Send automated recruitment rejection email at end-of-day (Google Sheets | Gmail) do?

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 w...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your HR, Multimodal AI use case.