New hire welcome kit: email, first-day invite and team intro

Add a new hire to a sheet and they get a welcome email, a first-day calendar invite, and a hello from the team on Slack.

Easy Saves ~3 hours/month HR & TeamBy Flowngn team

Works with n8n · Make · Zapier

How it works

Trigger: Google Sheets — new row in New hires
  1. Add the new hire to your New hires sheet (name, email, role, start date, manager).
  2. Send them a welcome email with the first-day details.
  3. Book a one-hour welcome session on their first morning and invite them.
  4. Announce them to the team on Slack.

Diagram

GNew hire addedGoogle Sheets TriggerGSend welcome emailGmailCBook welcome sessionGoogle CalendarSTell the teamSlack
Trigger App

Build it

Pick your tool — same automation, step by step.

Copy and paste straight into an n8n canvas (Ctrl+V), or download and use Import from File. Then connect your own credentials and replace every YOUR_… placeholder.

Workflow JSON
Show code (158 lines)
{
  "name": "New hire welcome kit: email, first-day invite and team intro (Flowngn)",
  "nodes": [
    {
      "parameters": {
        "content": "## New hire welcome kit: email, first-day invite and team intro\nAdd a new hire to a sheet and they get a welcome email, a first-day calendar invite, and a hello from the team on Slack.\n\n**Setup**\n1. Open each node and connect your own credentials.\n2. Replace every YOUR_… placeholder.\n3. Test once, then activate.\n\nFree template from Flowngn",
        "height": 260,
        "width": 340
      },
      "id": "343164f5-4864-4c3c-a1f0-fbba526625be",
      "name": "Setup notes",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -420,
        -60
      ]
    },
    {
      "parameters": {
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "documentId": {
          "__rl": true,
          "value": "YOUR_SPREADSHEET_ID",
          "mode": "id"
        },
        "sheetName": {
          "__rl": true,
          "value": "New hires",
          "mode": "name"
        },
        "event": "rowAdded",
        "options": {}
      },
      "id": "343164f5-4864-4c3c-a1f0-fbba526625be",
      "name": "New hire added",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "typeVersion": 1,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "sendTo": "={{ $json.email }}",
        "subject": "=Welcome to YOUR_COMPANY, {{ $json.name.split(' ')[0] }}!",
        "emailType": "text",
        "message": "=Hi {{ $json.name.split(' ')[0] }},\n\nWe're so happy you're joining us as {{ $json.role }}.\n\nYour first day: {{ $json.start_date }} at 9:00\nWhere: YOUR_OFFICE_ADDRESS\nAsk for: {{ $json.manager }}\n\nPlease bring your ID and bank details for payroll. You'll get a calendar invite for your first-day welcome session.\n\nSee you soon,\nYOUR_NAME",
        "options": {
          "appendAttribution": false
        }
      },
      "id": "343164f5-4864-4c3c-a1f0-fbba526625be",
      "name": "Send welcome email",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        300,
        0
      ]
    },
    {
      "parameters": {
        "calendar": {
          "__rl": true,
          "value": "primary",
          "mode": "id"
        },
        "start": "={{ $('New hire added').item.json.start_date }}T09:00:00",
        "end": "={{ $('New hire added').item.json.start_date }}T10:00:00",
        "additionalFields": {
          "summary": "=Welcome session: {{ $('New hire added').item.json.name }}",
          "attendees": [
            "={{ $('New hire added').item.json.email }}"
          ]
        }
      },
      "id": "343164f5-4864-4c3c-a1f0-fbba526625be",
      "name": "Book welcome session",
      "type": "n8n-nodes-base.googleCalendar",
      "typeVersion": 1.3,
      "position": [
        600,
        0
      ]
    },
    {
      "parameters": {
        "select": "channel",
        "channelId": {
          "__rl": true,
          "value": "#general",
          "mode": "name"
        },
        "text": "=👋 Please welcome {{ $('New hire added').item.json.name }}, joining as {{ $('New hire added').item.json.role }} on {{ $('New hire added').item.json.start_date }}!",
        "otherOptions": {}
      },
      "id": "343164f5-4864-4c3c-a1f0-fbba526625be",
      "name": "Tell the team",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.2,
      "position": [
        900,
        0
      ]
    }
  ],
  "connections": {
    "New hire added": {
      "main": [
        [
          {
            "node": "Send welcome email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send welcome email": {
      "main": [
        [
          {
            "node": "Book welcome session",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Book welcome session": {
      "main": [
        [
          {
            "node": "Tell the team",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "templateCredsSetupCompleted": false
  },
  "tags": []
}

Open in the playground to edit →

Tips

  • Write start_date as YYYY-MM-DD so the calendar step reads it correctly.

Related flows