This workflow corresponds to n8n.io template #11848 — we link there as the canonical source.
This workflow follows the Agent → Gmail 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 →
{
"id": "tRK7RHW56gjRV5YG",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Employee Onboarding Automation with Multi-System Provisioning",
"tags": [],
"nodes": [
{
"id": "15365542-2f8b-40e5-8c2c-e5e5e4b267ae",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1360,
160
],
"parameters": {
"width": 320,
"height": 340,
"content": "## Employee Onboarding Automation\n\nAutomatically provisions new employees across multiple systems:\n- Google Workspace account creation\n- Slack workspace invitation\n- Notion workspace setup\n- AI-generated welcome materials\n\n**Trigger**: Form submission or manual webhook\n**Output**: Complete onboarding with notifications"
},
"typeVersion": 1
},
{
"id": "3a760d6d-3d00-4aad-9056-cc6718a332e8",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1232,
688
],
"parameters": {
"color": 7,
"width": 260,
"height": 120,
"content": "### Step 1: Receive Employee Data\nForm trigger receives new hire information including name, email, department, and start date."
},
"typeVersion": 1
},
{
"id": "66fcaa2a-fd3a-43d1-9981-c4c406859089",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-800,
256
],
"parameters": {
"color": 7,
"width": 520,
"height": 680,
"content": "### Step 2: Parallel Account Provisioning\nSimultaneously creates accounts in Google Workspace, Slack, and Notion for faster onboarding."
},
"typeVersion": 1
},
{
"id": "a36067ff-30cd-42e1-a564-d8b163cdf5b6",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-16,
416
],
"parameters": {
"color": 7,
"width": 300,
"height": 472,
"content": "### Step 3: AI Welcome Package\nGenerates personalized welcome message, training schedule, and team introduction using AI."
},
"typeVersion": 1
},
{
"id": "3fb58d41-1294-4c61-8e05-8f166691b6f7",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
736,
272
],
"parameters": {
"color": 7,
"width": 420,
"height": 856,
"content": "### Step 4: Notification & Logging\nSends welcome email to employee, notifies HR and manager, logs to tracking sheet."
},
"typeVersion": 1
},
{
"id": "5bd14364-675a-4087-b6d8-1ce604d5e684",
"name": "New Employee Form",
"type": "n8n-nodes-base.webhook",
"position": [
-1040,
560
],
"parameters": {
"path": "new-employee",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2
},
{
"id": "2898680c-fb01-4342-b701-7a174a1a4561",
"name": "Prepare Employee Data",
"type": "n8n-nodes-base.set",
"position": [
-816,
560
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1",
"name": "firstName",
"type": "string",
"value": "={{ $json.body.firstName || 'New' }}"
},
{
"id": "2",
"name": "lastName",
"type": "string",
"value": "={{ $json.body.lastName || 'Employee' }}"
},
{
"id": "3",
"name": "personalEmail",
"type": "string",
"value": "={{ $json.body.personalEmail }}"
},
{
"id": "4",
"name": "department",
"type": "string",
"value": "={{ $json.body.department || 'General' }}"
},
{
"id": "5",
"name": "jobTitle",
"type": "string",
"value": "={{ $json.body.jobTitle || 'Team Member' }}"
},
{
"id": "6",
"name": "startDate",
"type": "string",
"value": "={{ $json.body.startDate || $now.format('yyyy-MM-dd') }}"
},
{
"id": "7",
"name": "managerId",
"type": "string",
"value": "={{ $json.body.managerId || '' }}"
},
{
"id": "8",
"name": "workEmail",
"type": "string",
"value": "={{ ($json.body.firstName || 'new').toLowerCase() }}.{{ ($json.body.lastName || 'employee').toLowerCase() }}@company.com"
},
{
"id": "9",
"name": "onboardingId",
"type": "string",
"value": "={{ 'ONB-' + $now.format('yyyyMMdd') + '-' + Math.random().toString(36).substring(2, 8).toUpperCase() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "e8807002-41a4-446e-be26-de331d89649f",
"name": "Create Google Account",
"type": "n8n-nodes-base.httpRequest",
"position": [
-560,
400
],
"parameters": {
"url": "https://admin.googleapis.com/admin/directory/v1/users",
"method": "POST",
"options": {},
"jsonBody": "={\n \"primaryEmail\": \"{{ $json.workEmail }}\",\n \"name\": {\n \"givenName\": \"{{ $json.firstName }}\",\n \"familyName\": \"{{ $json.lastName }}\"\n },\n \"password\": \"TempPass123!\",\n \"changePasswordAtNextLogin\": true,\n \"orgUnitPath\": \"/{{ $json.department }}\"\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleApi"
},
"typeVersion": 4.2
},
{
"id": "547bc7a3-e26f-441b-94d0-d9f4ee3d4543",
"name": "Invite to Slack",
"type": "n8n-nodes-base.slack",
"position": [
-560,
560
],
"parameters": {
"resource": "user",
"operation": "invite"
},
"typeVersion": 2.2
},
{
"id": "572e61d4-15e0-4dfd-8079-efe9d308ab60",
"name": "Create Notion Onboarding",
"type": "n8n-nodes-base.notion",
"position": [
-560,
720
],
"parameters": {
"title": "=Onboarding: {{ $json.firstName }} {{ $json.lastName }}",
"pageId": {
"__rl": true,
"mode": "url",
"value": ""
},
"blockUi": {
"blockValues": [
{
"type": "heading_2"
},
{}
]
},
"options": {}
},
"typeVersion": 2.2
},
{
"id": "ab98704f-c6aa-48b9-b4c8-6d9dcc9d97d1",
"name": "Merge Google & Slack",
"type": "n8n-nodes-base.merge",
"position": [
-320,
480
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3
},
{
"id": "adb7af50-eb3d-49c5-98ba-22c7ffe60bd9",
"name": "Merge All Accounts",
"type": "n8n-nodes-base.merge",
"position": [
-112,
592
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3
},
{
"id": "87b0b3fb-991a-49d6-b1d6-7d4293482063",
"name": "Compile Provisioning Results",
"type": "n8n-nodes-base.code",
"position": [
96,
592
],
"parameters": {
"jsCode": "const employee = $('Prepare Employee Data').first().json;\nconst googleResult = $('Create Google Account').first().json;\nconst slackResult = $('Invite to Slack').first().json;\nconst notionResult = $('Create Notion Onboarding').first().json;\n\nconst provisioningResults = {\n onboardingId: employee.onboardingId,\n employee: {\n name: employee.firstName + ' ' + employee.lastName,\n workEmail: employee.workEmail,\n personalEmail: employee.personalEmail,\n department: employee.department,\n jobTitle: employee.jobTitle,\n startDate: employee.startDate,\n managerId: employee.managerId\n },\n accounts: {\n google: { status: googleResult.id ? 'created' : 'pending', email: employee.workEmail },\n slack: { status: slackResult.ok ? 'invited' : 'pending' },\n notion: { status: notionResult.id ? 'created' : 'pending', pageUrl: notionResult.url || '' }\n },\n provisionedAt: new Date().toISOString()\n};\n\nreturn [{ json: provisioningResults }];"
},
"typeVersion": 2
},
{
"id": "9b229a16-1938-41f7-af30-01c1fee72a8b",
"name": "AI Welcome Generator",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
288,
592
],
"parameters": {
"text": "=Create a personalized welcome package for a new employee:\n\nEmployee Name: {{ $json.employee.name }}\nDepartment: {{ $json.employee.department }}\nJob Title: {{ $json.employee.jobTitle }}\nStart Date: {{ $json.employee.startDate }}\n\nGenerate:\n1. A warm welcome message (2-3 sentences)\n2. First week suggested schedule with 5 key activities\n3. 3 tips for success in their role\n\nFormat as JSON with keys: welcomeMessage, firstWeekSchedule (array), successTips (array)",
"options": {
"systemMessage": "You are a friendly HR assistant helping with employee onboarding. Be warm, professional, and helpful."
},
"promptType": "define"
},
"typeVersion": 1.7
},
{
"id": "68ad9eec-15ea-4d0d-b096-9bcafc1e5a13",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
288,
800
],
"parameters": {
"model": "gpt-4o-mini",
"options": {
"temperature": 0.7
}
},
"typeVersion": 1.2
},
{
"id": "817a0b72-47f2-424e-98c3-b0923271236a",
"name": "Prepare Welcome Package",
"type": "n8n-nodes-base.code",
"position": [
496,
592
],
"parameters": {
"jsCode": "const provisionData = $('Compile Provisioning Results').first().json;\nconst aiResponse = $input.first().json;\n\nlet aiContent = {};\ntry {\n const outputText = aiResponse.output || '{}';\n const jsonMatch = outputText.match(/\\{[\\s\\S]*\\}/);\n if (jsonMatch) {\n aiContent = JSON.parse(jsonMatch[0]);\n }\n} catch (e) {\n aiContent = {\n welcomeMessage: 'Welcome to the team! We are excited to have you.',\n firstWeekSchedule: ['Day 1: Orientation', 'Day 2: Team introductions', 'Day 3: System setup', 'Day 4: Training', 'Day 5: Project overview'],\n successTips: ['Ask questions', 'Take notes', 'Connect with colleagues']\n };\n}\n\nconst welcomePackage = {\n ...provisionData,\n welcomeContent: aiContent,\n emailSubject: 'Welcome to ' + provisionData.employee.department + '! - ' + provisionData.employee.name,\n emailBody: 'Dear ' + provisionData.employee.name + ',\\n\\n' + (aiContent.welcomeMessage || 'Welcome!') + '\\n\\nYour work email: ' + provisionData.employee.workEmail + '\\n\\nFirst Week Schedule:\\n' + (aiContent.firstWeekSchedule || []).map(function(item, i) { return (i + 1) + '. ' + item; }).join('\\n') + '\\n\\nTips for Success:\\n' + (aiContent.successTips || []).map(function(item) { return '- ' + item; }).join('\\n') + '\\n\\nBest regards,\\nHR Team'\n};\n\nreturn [{ json: welcomePackage }];"
},
"typeVersion": 2
},
{
"id": "65739319-a3aa-4261-8dfe-46736094217f",
"name": "Can Send Welcome Email?",
"type": "n8n-nodes-base.if",
"position": [
688,
592
],
"parameters": {
"options": {},
"conditions": {
"options": {
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "check-email",
"operator": {
"type": "string",
"operation": "exists"
},
"leftValue": "={{ $json.employee.personalEmail }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "2529302b-a051-46da-a531-c8fe8334fe0b",
"name": "Send Welcome Email",
"type": "n8n-nodes-base.gmail",
"position": [
928,
496
],
"parameters": {
"sendTo": "={{ $json.employee.personalEmail }}",
"message": "={{ $json.emailBody }}",
"options": {},
"subject": "={{ $json.emailSubject }}"
},
"typeVersion": 2.1
},
{
"id": "cfad447d-a181-422f-9062-acc3630b1ea0",
"name": "Notify HR Channel",
"type": "n8n-nodes-base.slack",
"position": [
928,
656
],
"parameters": {
"text": "=:tada: New Employee Onboarded!\n\nName: {{ $json.employee.name }}\nDepartment: {{ $json.employee.department }}\nTitle: {{ $json.employee.jobTitle }}\nStart Date: {{ $json.employee.startDate }}\n\nOnboarding ID: {{ $json.onboardingId }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "name",
"value": "#hr-notifications"
},
"otherOptions": {}
},
"typeVersion": 2.2
},
{
"id": "0144867b-ed90-4a7c-9555-8b4283fdefd8",
"name": "Log to Onboarding Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
928,
816
],
"parameters": {
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"typeVersion": 4.5
},
{
"id": "cf9224e6-360f-40c5-8ada-e2eedb826cc9",
"name": "Skip Email",
"type": "n8n-nodes-base.noOp",
"position": [
928,
976
],
"parameters": {},
"typeVersion": 1
},
{
"id": "abac2ae0-bbc0-4e7d-8f26-2dfe741964eb",
"name": "Merge Notification Results",
"type": "n8n-nodes-base.merge",
"position": [
1168,
592
],
"parameters": {
"mode": "chooseBranch"
},
"typeVersion": 3
},
{
"id": "0e3bef7d-b3f0-4382-b229-765c17deabf3",
"name": "Respond to Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
1376,
592
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "={\n \"success\": true,\n \"onboardingId\": \"{{ $('Prepare Welcome Package').first().json.onboardingId }}\",\n \"employee\": \"{{ $('Prepare Welcome Package').first().json.employee.name }}\",\n \"message\": \"Employee onboarding initiated successfully\"\n}"
},
"typeVersion": 1.1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "4860e87f-9e17-4e1c-914e-c8fcbce5ce86",
"connections": {
"Skip Email": {
"main": [
[
{
"node": "Merge Notification Results",
"type": "main",
"index": 1
}
]
]
},
"Invite to Slack": {
"main": [
[
{
"node": "Merge Google & Slack",
"type": "main",
"index": 1
}
]
]
},
"New Employee Form": {
"main": [
[
{
"node": "Prepare Employee Data",
"type": "main",
"index": 0
}
]
]
},
"Notify HR Channel": {
"main": [
[
{
"node": "Merge Notification Results",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Welcome Generator",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Merge All Accounts": {
"main": [
[
{
"node": "Compile Provisioning Results",
"type": "main",
"index": 0
}
]
]
},
"Send Welcome Email": {
"main": [
[
{
"node": "Merge Notification Results",
"type": "main",
"index": 0
}
]
]
},
"AI Welcome Generator": {
"main": [
[
{
"node": "Prepare Welcome Package",
"type": "main",
"index": 0
}
]
]
},
"Merge Google & Slack": {
"main": [
[
{
"node": "Merge All Accounts",
"type": "main",
"index": 0
}
]
]
},
"Create Google Account": {
"main": [
[
{
"node": "Merge Google & Slack",
"type": "main",
"index": 0
}
]
]
},
"Prepare Employee Data": {
"main": [
[
{
"node": "Create Google Account",
"type": "main",
"index": 0
},
{
"node": "Invite to Slack",
"type": "main",
"index": 0
},
{
"node": "Create Notion Onboarding",
"type": "main",
"index": 0
}
]
]
},
"Can Send Welcome Email?": {
"main": [
[
{
"node": "Send Welcome Email",
"type": "main",
"index": 0
},
{
"node": "Notify HR Channel",
"type": "main",
"index": 0
},
{
"node": "Log to Onboarding Sheet",
"type": "main",
"index": 0
}
],
[
{
"node": "Skip Email",
"type": "main",
"index": 0
},
{
"node": "Notify HR Channel",
"type": "main",
"index": 0
},
{
"node": "Log to Onboarding Sheet",
"type": "main",
"index": 0
}
]
]
},
"Prepare Welcome Package": {
"main": [
[
{
"node": "Can Send Welcome Email?",
"type": "main",
"index": 0
}
]
]
},
"Create Notion Onboarding": {
"main": [
[
{
"node": "Merge All Accounts",
"type": "main",
"index": 1
}
]
]
},
"Merge Notification Results": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Compile Provisioning Results": {
"main": [
[
{
"node": "AI Welcome Generator",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automates the end-to-end employee onboarding process by provisioning new hires across multiple internal systems and delivering a personalized welcome experience.
Source: https://n8n.io/workflows/11848/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This n8n workflow orchestrates a powerful suite of AI Agents and automations to manage and optimize various aspects of an e-commerce operation, particularly for platforms like Shopify. It leverages La
🧾 Short Description
This workflow automates end-to-end concert ticket booking validation and fan experience management using two coordinated AI agents. It is designed for ticketing platforms, event operators, and venue o
🧾 An intelligent automation system that turns Google Meet recordings into structured meeting notes — integrating Fireflies.ai, OpenAI GPT-4.1-mini, Notion, Slack, Google Drive, and Gmail via n8n.
Agencies, service businesses, and GoHighLevel users who want to automatically update their CRM, notify their team, and send a professional invoice to the customer the moment a Stripe payment lands. We