AutomationFlowsAI & RAG › Provision New Hires in Google Workspace, Slack, Notion, Gmail and Sheets with AI

Provision New Hires in Google Workspace, Slack, Notion, Gmail and Sheets with AI

ByYurie Ino @tadayuri on n8n.io

This workflow automates the end-to-end employee onboarding process by provisioning new hires across multiple internal systems and delivering a personalized welcome experience.

Webhook trigger★★★★☆ complexityAI-powered23 nodesHTTP RequestSlackNotionAgentOpenAI ChatGmailGoogle Sheets
AI & RAG Trigger: Webhook Nodes: 23 Complexity: ★★★★☆ AI nodes: yes Added:

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 →

Download .json
{
  "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
          }
        ]
      ]
    }
  }
}
Pro

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 →

More AI & RAG workflows → · Browse all categories →

Related workflows

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

AI & RAG

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

Google Sheets, HTTP Request, Slack +10
AI & RAG

🧾 Short Description

Agent, OpenAI Chat, Output Parser Structured +4
AI & RAG

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

OpenAI Chat, Output Parser Structured, Agent +4
AI & RAG

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

Google Drive, OpenAI Chat, Output Parser Structured +8
AI & RAG

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

Agent, OpenAI Chat, Gmail +3