AutomationFlowsEmail & Gmail › Daily Interview Feedback Reminders to Slack & Gmail

Daily Interview Feedback Reminders to Slack & Gmail

Original n8n title: Send Post‑interview Feedback Nudges From Google Sheets to Slack (with Email Fallback)

Send Post‑Interview Feedback Nudges from Google Sheets to Slack (with Email Fallback). Uses googleSheets, slack, gmail. Scheduled trigger; 9 nodes.

Cron / scheduled trigger★★★★☆ complexity9 nodesGoogle SheetsSlackGmail
Email & Gmail Trigger: Cron / scheduled Nodes: 9 Complexity: ★★★★☆ Added:

This workflow follows the Gmail → Google Sheets recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "kLHXGgGMQNnfjVW8",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Send Post\u2011Interview Feedback Nudges from Google Sheets to Slack (with Email Fallback)",
  "tags": [],
  "nodes": [
    {
      "id": "3c94fc35-7f70-44f8-8084-74ef9e86305e",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -180,
        -20
      ],
      "parameters": {
        "width": 1620,
        "height": 560,
        "content": "## Send Post\u2011Interview Feedback Nudges from Google Sheets to Slack (with Email Fallback)"
      },
      "typeVersion": 1
    },
    {
      "id": "7915c9b3-beea-41c6-a1d8-34dd1a5b52c1",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -180,
        580
      ],
      "parameters": {
        "width": 1620,
        "height": 380,
        "content": "## Description:\n- The workflow starts with a Schedule Trigger node named \"Daily Reminder Trigger\", which runs every day at 6:00 PM to initiate the process.\n\n- The next node, named \"Fetch Interview Feedback Data\", is a Google Sheets (Read Sheet) node that pulls all the interview entries from a spreadsheet.\n\n- An IF node named \"Check If Feedback Is Submitted\" filters the entries, allowing only those where the Feedback Submitted field is not marked as \"Yes\" to move forward.\n\n- The next IF node named \"Check for Slack ID\" evaluates whether a valid Slack ID exists for each pending feedback row.\n\n- If Slack ID exists, the workflow proceeds to the \"Send Slack Reminder\" node, which is a Slack (Post Message) node sending a personalized DM reminder to the interviewer.\n\n- If Slack ID is missing, the workflow uses the \"Send Email Reminder\" node, a Gmail (Send Message) node, to send an email notification to the interviewer.\n\n- Regardless of whether the reminder was sent via Slack or Email, the final step is handled by a Google Sheets (Append or Update) node named \"Update Reminder Status\".\n\n- This node updates the sheet and marks the Reminder Sent or Feedback Submitted column as \"Yes\" to prevent further reminders for the same entry in future workflow executions."
      },
      "typeVersion": 1
    },
    {
      "id": "38bcc7d4-df73-4ccb-a7a0-618540a48310",
      "name": "Daily Reminder Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -120,
        160
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 18
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ee420d16-40b5-4faf-9501-bc9a8228ec04",
      "name": "Fetch Interview Feedback Data",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        120,
        160
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1780789038,
          "cachedResultUrl": "",
          "cachedResultName": "Interview_Feedback"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1cQ-TBf3-dqo7njDYzYpxpASYFvEp8lIzH7vpIqTLcwc",
          "cachedResultUrl": "",
          "cachedResultName": "N8N_Email_Attachment"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "3440d46a-fd6b-428c-a77b-06b03b522847",
      "name": "Check If Feedback Is Submitted",
      "type": "n8n-nodes-base.if",
      "position": [
        360,
        160
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "28cdc419-2495-4936-bdee-f871ba07cc2d",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json[\"Feedback Submitted (Y/N)\"] }}",
              "rightValue": "Y"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "c9fff58b-e8f0-40b7-90b1-c6fb63416ef0",
      "name": "Check for Slack ID",
      "type": "n8n-nodes-base.if",
      "position": [
        640,
        180
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "42475361-d80f-44c0-b7b6-b3bd15a6281e",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json[\"Candidate Slack Id\"] }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "f2ac87d5-06d8-417c-aeed-f41fb49085e1",
      "name": "Send Slack Reminder",
      "type": "n8n-nodes-base.slack",
      "position": [
        940,
        300
      ],
      "parameters": {
        "text": "={{ $json[\"Areas of Improvement\"] }}",
        "user": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json[\"Candidate Slack Id\"] }}"
        },
        "select": "user",
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "3564776b-8617-4857-95b7-c12ba50a3268",
      "name": "Send Email Reminder",
      "type": "n8n-nodes-base.gmail",
      "position": [
        940,
        60
      ],
      "parameters": {
        "sendTo": "={{ $json[\"Candidate Email\"] }}",
        "message": "={{ $json[\"Areas of Improvement\"] }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "={{ $json.Recommendation }}",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "c6513c53-c950-4eb8-bb75-d21167549b3a",
      "name": "Update Reminder Status",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1200,
        180
      ],
      "parameters": {
        "columns": {
          "value": {
            "Position": "={{ $('Check for Slack ID').item.json.Position }}",
            "Strengths": "={{ $('Check for Slack ID').item.json.Strengths }}",
            "Interview ID": "={{ $('Check for Slack ID').item.json[\"Interview ID\"] }}",
            "Candidate Name": "={{ $('Check for Slack ID').item.json[\"Candidate Name\"] }}",
            "Interview Date": "={{ $('Check for Slack ID').item.json[\"Interview Date\"] }}",
            "Rating (1\u20135)": "={{ $('Check for Slack ID').item.json[\"Rating (1\u20135)\"] }}",
            "Recommendation": "={{ $('Check for Slack ID').item.json.Recommendation }}",
            "Candidate Email": "={{ $('Check for Slack ID').item.json[\"Candidate Email\"] }}",
            "Interview Stage": "={{ $('Check for Slack ID').item.json[\"Interview Stage\"] }}",
            "Interviewer Name": "={{ $('Check for Slack ID').item.json[\"Interviewer Name\"] }}",
            "Skills Evaluated": "={{ $('Check for Slack ID').item.json[\"Skills Evaluated\"] }}",
            "Candidate Slack Id": "={{ $('Check for Slack ID').item.json[\"Candidate Slack Id\"] }}",
            "Additional Comments": "={{ $('Check for Slack ID').item.json[\"Additional Comments\"] }}",
            "Areas of Improvement": "={{ $('Check for Slack ID').item.json[\"Areas of Improvement\"] }}",
            "Feedback Submitted (Y/N)": "=Y"
          },
          "schema": [
            {
              "id": "Interview ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Interview ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Candidate Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Candidate Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Candidate Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Candidate Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Candidate Slack Id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Candidate Slack Id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Interviewer Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Interviewer Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Interview Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Interview Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Interview Stage",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Interview Stage",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Position",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Position",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Skills Evaluated",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Skills Evaluated",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Rating (1\u20135)",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Rating (1\u20135)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Strengths",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Strengths",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Areas of Improvement",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Areas of Improvement",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Recommendation",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Recommendation",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Additional Comments",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Additional Comments",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Feedback Submitted (Y/N)",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Feedback Submitted (Y/N)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Feedback Submitted (Y/N)"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1780789038,
          "cachedResultUrl": "",
          "cachedResultName": "Interview_Feedback"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1cQ-TBf3-dqo7njDYzYpxpASYFvEp8lIzH7vpIqTLcwc",
          "cachedResultUrl": "",
          "cachedResultName": "N8N_Email_Attachment"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6,
      "alwaysOutputData": true
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "254a0e91-bb2b-4271-8036-a3908acde0ae",
  "connections": {
    "Check for Slack ID": {
      "main": [
        [
          {
            "node": "Send Email Reminder",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Slack Reminder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Email Reminder": {
      "main": [
        [
          {
            "node": "Update Reminder Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Slack Reminder": {
      "main": [
        [
          {
            "node": "Update Reminder Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Daily Reminder Trigger": {
      "main": [
        [
          {
            "node": "Fetch Interview Feedback Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Reminder Status": {
      "main": [
        []
      ]
    },
    "Fetch Interview Feedback Data": {
      "main": [
        [
          {
            "node": "Check If Feedback Is Submitted",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check If Feedback Is Submitted": {
      "main": [
        [],
        [
          {
            "node": "Check for Slack ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Send Post‑Interview Feedback Nudges from Google Sheets to Slack (with Email Fallback). Uses googleSheets, slack, gmail. Scheduled trigger; 9 nodes.

Source: https://github.com/weblineindia/n8n-Automate-post-interview-feedback-reminders-using-Google-Sheets-Slack-and-Gmail/blob/main/main.json — original creator credit. Request a take-down →

More Email & Gmail workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Email & Gmail

This workflow automatically scans AWS accounts for orphaned resources (unattached EBS volumes, old snapshots &gt;90 days, unassociated Elastic IPs) that waste money. It calculates cost impact, validat

Slack, Gmail, AWS Lambda +1
Email & Gmail

Streamline IT and operations change management by automating approval routing, Jira issue creation, audit logging, and real-time Slack alerts. This workflow ensures faster reviews, traceable approvals

Monday.com, Slack, Jira +2
Email & Gmail

Streamline IT and operations change management by automating approval routing, Jira issue creation, audit logging, and real-time Slack alerts. This workflow ensures faster reviews, traceable approvals

Monday.com, Slack, Jira +2
Email & Gmail

Automate your GoHighLevel (GHL) pipeline tracking and deal management process. This workflow fetches all opportunities, calculates the time spent in each stage, logs historical pipeline data in Google

High Level, Google Sheets, Gmail +1
Email & Gmail

Automatically consolidate Zendesk and Freshdesk ticket data into a unified performance dashboard with KPI calculations, Google Sheets logging, real-time Slack alerts, and weekly Gmail email reports. P

Slack, Gmail, Zendesk +2