Quick overview
This workflow syncs new job applicants from Google Sheets into a Notion candidates database on a schedule, and sends stage-based emails via Gmail when a candidate’s Notion status changes using email templates stored in a separate Notion database.
How it works
- Runs every hour (or manually) to read unprocessed applicant rows from a Google Sheets form responses sheet.
- Looks up each applicant by email in a Notion “Candidates Tracker” database and filters out anyone who already exists to prevent duplicates.
- Creates a new candidate page in Notion for each remaining applicant and then updates the Google Sheets row to mark it as processed.
- Triggers when a page is updated in the Notion “Candidates Tracker” database and loads the previously stored candidate snapshot from an n8n Data Table.
- Stores the updated candidate snapshot back to the Data Table and continues only when the candidate’s Status has changed.
- Fetches the matching email template for the new Status from a Notion “Email Templates” database, fills placeholders with candidate fields, and sends the email to the candidate via Gmail.
Setup
- Connect your Notion OAuth2 account, Google Sheets OAuth2 account, and Gmail OAuth2 account in n8n.
- Provide the correct Notion database IDs for your Candidates Tracker database and your Email Templates database, and ensure the candidate database includes Email and Status properties.
- Update the Google Sheets document and sheet to your form responses sheet and ensure it has a Processed column and a row_number field available for updates.
- Create one Notion email template page per Status value, with fields for the subject and body and a “For Status” select that matches your candidate Status options.
- Ensure the n8n Data Table used for history exists and has columns for notion_id and values so the workflow can detect real Status changes.