Notificateur d'état des candidats automatisé
Ceci est unHRworkflow d'automatisation du domainecontenant 5 nœuds.Utilise principalement des nœuds comme Slack, Webhook, Function. via Slack notificationdeautomatisation招聘状态mise à jour
- •Token Bot Slack ou URL Webhook
- •Point de terminaison HTTP Webhook (généré automatiquement par n8n)
Nœuds utilisés (5)
Catégorie
{
"id": "q6IkLPK3fhmaaUBg",
"meta": {
"instanceId": "a287613f1596da776459594685fbf4e2b4a12124f80ab8c8772f5e37bff103ae"
},
"name": "Automated Candidate Status Notifier",
"tags": [],
"nodes": [
{
"id": "ef1fe3c8-04ab-404e-b703-667f21caac0a",
"name": "1. Déclencheur Webhook (Mise à jour de statut)",
"type": "n8n-nodes-base.webhook",
"position": [
0,
0
],
"webhookId": "5f3424e2-ffb3-4248-9d3d-971e15737c1b",
"parameters": {
"path": "candidate-status-update",
"options": {},
"httpMethod": "POST"
},
"description": "Receives candidate status updates (e.g., from a form, ATS webhook, or custom script). Copy this Webhook URL into your sending system.",
"typeVersion": 1
},
{
"id": "60448125-d750-46ee-9e42-e92267d0407c",
"name": "2. Extraire et Préparer les Données",
"type": "n8n-nodes-base.function",
"position": [
260,
0
],
"parameters": {
"functionCode": "const inputData = items[0].json.body;\n\n// --- IMPORTANT: ADJUST THESE FIELD NAMES TO MATCH YOUR INCOMING DATA ---\n// Common assumption: Incoming data contains 'candidateName', 'position', 'newStatus', and optionally 'oldStatus' and 'notes'.\n// Example:\n// If your system sends: { \"applicant_name\": \"John Doe\", \"job_role\": \"Software Engineer\", \"current_stage\": \"Interview Scheduled\" }\n// Adjust the variables below:\n// const candidateName = inputData.applicant_name;\n// const position = inputData.job_role;\n// const newStatus = inputData.current_stage;\n\nconst candidateName = inputData.candidateName || inputData.applicant_name || 'Unknown Candidate';\nconst position = inputData.position || inputData.job_role || 'Unknown Position';\nconst newStatus = inputData.newStatus || inputData.current_status || 'No New Status';\nconst oldStatus = inputData.oldStatus || inputData.previous_status || null;\nconst notes = inputData.notes || inputData.comment || ''; // Optional: for additional notes\n\nif (!candidateName || !newStatus) {\n throw new Error('Candidate data (name or new status) is incomplete. Please check your data sender configuration.');\n}\n\n// Prepare message for Slack/Email\nlet statusMessage;\nif (oldStatus && newStatus !== oldStatus) {\n statusMessage = `Candidate Status Updated: *${candidateName}* for position *${position}* changed from *${oldStatus}* to *${newStatus}*.`;\n} else {\n statusMessage = `New Candidate Status: *${candidateName}* for position *${position}* is now *${newStatus}*.`;\n}\n\nif (notes) {\n statusMessage += `\\nNotes: ${notes}`; // Add notes if available\n}\n\nreturn [{\n json: {\n candidateName: candidateName,\n position: position,\n newStatus: newStatus,\n oldStatus: oldStatus,\n slackMessage: statusMessage, // Message formatted for Slack (supports simple Markdown)\n emailSubject: `Candidate Status Update: ${candidateName} (${position})`,\n emailBody: statusMessage.replace(/\\*/g, '**') // Convert Slack Markdown to bold for email\n }\n}];"
},
"description": "Extracts candidate details and prepares the notification message.",
"typeVersion": 1
},
{
"id": "abe896cc-945f-4d49-be11-a53932b69d3d",
"name": "3. Envoyer une Notification Slack",
"type": "n8n-nodes-base.slack",
"position": [
500,
0
],
"parameters": {
"text": "={{ $json.slackMessage }}",
"channel": "YOUR_SLACK_CHANNEL_ID_OR_NAME",
"attachments": [],
"otherOptions": {}
},
"description": "Sends a real-time notification to your Slack channel about the candidate status update.",
"typeVersion": 1
},
{
"id": "63686a52-aec3-4fb2-8bbe-24cdb61e446f",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
-60
],
"parameters": {
"color": 3,
"width": 800,
"height": 240,
"content": "## Flow"
},
"typeVersion": 1
},
{
"id": "51a80419-1aaf-41b8-9d4b-bba9f866d10b",
"name": "Note adhésive 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
220
],
"parameters": {
"color": 4,
"width": 800,
"height": 1820,
"content": "# Workflow Documentation: Automated Candidate Status Notifier\n\n## Problem 😩\nIn busy recruitment processes, keeping the entire hiring team updated on candidate status changes is a constant challenge. Manual communication about status updates (e.g., 'Applied' to 'Interview Scheduled' to 'Offered') is inefficient, leads to communication gaps, and slows down the hiring process.\n\n## Solution ✨\nThis n8n workflow automates instant notifications about candidate status changes. It ensures that your recruiting team, hiring managers, or other relevant stakeholders are immediately informed about critical updates, improving transparency and collaboration.\n\n## For Who 🤝\nThis workflow is perfect for:\n* **Recruitment Teams:** To streamline internal communication.\n* **Hiring Managers:** To stay informed without constantly checking systems.\n* **HR Departments:** To ensure all stakeholders are aligned on candidate progress.\n* **Agencies & Freelance Recruiters:** To enhance their internal tracking and client communication.\n\n## Scope 🎯\n* **Input Data:** Candidate details and their new/old status (e.g., from a custom form, ATS webhook, or simple spreadsheet integration).\n* **Trigger:** Webhook (ideal for real-time updates from various sources).\n* **Logic:** Extracts candidate name, position, old status, and new status; constructs a concise notification message.\n* **Output:** Real-time notifications sent to a Slack channel (easily adaptable to email or other communication tools).\n* **Customization:** Flexible for different data input formats and notification channels.\n\n## How It Works ⚙️\n\nThis workflow acts as a communication bridge for your candidate pipeline:\n\n1. **Webhook Trigger (Status Update):** 🚀 The workflow activates when it receives data indicating a candidate's status has changed. This data could come from an internal form, a custom script, or a webhook from a basic Applicant Tracking System (ATS).\n2. **Extract & Prepare Data (Function):** 🧹 This node processes the incoming data. It extracts key information such as the candidate's name, the position they applied for, their previous status (if available), and their new status. It then formats this information into a clear, concise message suitable for a notification.\n3. **Send Slack Notification:** 📢 The prepared message is sent to a designated Slack channel (e.g., `#recruitment-updates`). This provides instant, real-time updates to your team, ensuring everyone is on the same page.\n * **(Alternative: Send Email Notification):** This node can easily be swapped with a Gmail or SendGrid node to send email notifications to a predefined list of recipients instead of Slack.\n\n## How to Set Up 🛠️\n\nFollow these steps carefully to get your \"Automated Candidate Status Notifier\" workflow up and running:\n\n1. **Import Workflow JSON:**\n * Open your n8n instance.\n * Click on 'Workflows' in the left sidebar.\n * Click the '+' button or 'New' to create a new workflow.\n * Click the '...' (More Options) icon in the top right.\n * Select 'Import from JSON' and paste the entire JSON code for this workflow.\n\n2. **Configure Webhook Trigger (Status Update):**\n * Locate the 'Webhook Trigger (Status Update)' node (1. Webhook Trigger).\n * Activate the workflow. n8n will provide a unique 'Webhook URL'.\n * **Crucial Step:** Configure your data-sending system (e.g., a form submission, an ATS's webhook settings, or your custom script) to send candidate status update data (preferably in JSON format via POST request) to this n8n Webhook URL.\n\n3. **Configure Extract & Prepare Data (Function):**\n * Locate the 'Extract & Prepare Data' node (2. Extract & Prepare Data).\n * **Adjust Field Names:** Review the `functionCode` inside this node. **You MUST adjust the variable assignments (e.g., `inputData.candidateName`, `inputData.position`)** to accurately match the exact field names your sending system uses for candidate name, position, new status, old status, and notes. Use the 'Test Workflow' feature after sending a test webhook to inspect the incoming `items[0].json.body` data structure.\n * The node automatically formats messages for Slack and Email.\n\n4. **Configure Send Slack Notification:**\n * Locate the 'Send Slack Notification' node (3. Send Slack Notification).\n * **Credentials:** Select your existing Slack API credential or click 'Create New' to set one up. Replace `YOUR_SLACK_CREDENTIAL_ID` with the actual ID or name of your credential from your n8n credentials.\n * **Channel:** Replace `YOUR_SLACK_CHANNEL_ID_OR_NAME` with the exact ID or name of the Slack channel where you want to receive notifications (e.g., `#recruitment-updates`).\n\n * **OPTIONAL: Switch to Email Notification"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "1ff87f1e-2e7f-4bbb-a796-135989964d30",
"connections": {
"60448125-d750-46ee-9e42-e92267d0407c": {
"main": [
[
{
"node": "abe896cc-945f-4d49-be11-a53932b69d3d",
"type": "main",
"index": 0
}
]
]
},
"ef1fe3c8-04ab-404e-b703-667f21caac0a": {
"main": [
[
{
"node": "60448125-d750-46ee-9e42-e92267d0407c",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Débutant - Ressources Humaines
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Marth
@marthSimplifying Business with Smart Automation. I create and share user-friendly, highly efficient n8n workflow templates for SMEs, focusing on digital marketing, sales, and operational excellence. Get ready to automate, innovate, and elevate your business. Connect me on Linkedin for custom solutions.
Partager ce workflow