AutomationFlowsSlack & Telegram › Whatsapp Group Onboarding with Automated Welcome Messages & Airtable Point…

Whatsapp Group Onboarding with Automated Welcome Messages & Airtable Point…

Original n8n title: Whatsapp Group Onboarding with Automated Welcome Messages & Airtable Point System

ByDavid w/ SimpleGrow @davidxai on n8n.io

The workflow starts when a webhook receives a POST request from Whapi, notifying that a new participant has joined a WhatsApp group.

Webhook trigger★★★☆☆ complexity9 nodesHTTP RequestAirtable
Slack & Telegram Trigger: Webhook Nodes: 9 Complexity: ★★★☆☆ Added:

This workflow corresponds to n8n.io template #5686 — we link there as the canonical source.

This workflow follows the Airtable → HTTP Request 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
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "42e2143e-5d85-4c28-8e96-8e50e89886e4",
      "name": "New group participant",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -160,
        -60
      ],
      "parameters": {
        "path": "0d328573-da59-489e-8f2f-784aa4c19b82",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2
    },
    {
      "id": "ee6f7d26-f8fb-4a16-9a5f-0f3bef27ee0a",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -220,
        -200
      ],
      "parameters": {
        "height": 300,
        "content": "## New participant  \nA new user has joined the group."
      },
      "typeVersion": 1
    },
    {
      "id": "3d747c5d-b256-4f1d-8d96-f321b9dc4efd",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        360,
        -200
      ],
      "parameters": {
        "color": 6,
        "height": 300,
        "content": "## Welcome message  \nSend a \"welcome message\" via Whapi to the new user in the WhatsApp group."
      },
      "typeVersion": 1
    },
    {
      "id": "379f97c8-d062-4c25-a19f-ad721728e270",
      "name": "Welcome WhatsApp message",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        440,
        -60
      ],
      "parameters": {
        "url": "https://gate.whapi.cloud/messages/text",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"to\": \"{{ $json.body.groups_participants[0].participants[0] }}\",\n  \"body\": \"MESSAGE\"\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json"
            },
            {
              "name": "authorization",
              "value": "Bearer {TOKEN}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "27e3e20d-780d-4b4f-8a85-2f1cda4ac041",
      "name": "Filter",
      "type": "n8n-nodes-base.filter",
      "position": [
        140,
        -60
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "da41e332-6556-4470-92df-ef1b77915fc7",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.body.groups_participants[0].group_id }}",
              "rightValue": "user@example.com"
            },
            {
              "id": "f6aac86c-5794-43ce-87ed-3720f7a03aab",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.body.groups_participants[0].action }}",
              "rightValue": "add"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "0b28e17a-7f57-4f5e-a174-15c71fd9741c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        80,
        -200
      ],
      "parameters": {
        "color": 5,
        "height": 300,
        "content": "## Conditions: \n1. Right group?\n2. Type \"add\"?"
      },
      "typeVersion": 1
    },
    {
      "id": "4172ad9e-0f61-4581-95b9-a4dfc1b9efb9",
      "name": "Airtable Create",
      "type": "n8n-nodes-base.airtable",
      "position": [
        720,
        -60
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appREiqyOxTYwsigc",
          "cachedResultUrl": "https://airtable.com/appREiqyOxTYwsigc",
          "cachedResultName": "WhatsApp Engagement Database"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblIf7YbtyvUvDNm0",
          "cachedResultUrl": "https://airtable.com/appREiqyOxTYwsigc/tblIf7YbtyvUvDNm0",
          "cachedResultName": "Table 1"
        },
        "columns": {
          "value": {
            "Count": 100,
            "WhatsApp_ID": "={{ $('New group participant').item.json.body.groups_participants[0].participants[0] }}",
            "Last interaction": "={{ $now.format('yyyy.MM.dd') }}"
          },
          "schema": [
            {
              "id": "WhatsApp_ID",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "WhatsApp_ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Count",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last interaction",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Last interaction",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Raffle vouchers",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "Raffle vouchers",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "create"
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "a238eaba-2fda-441f-93b6-fbdd810619a9",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        660,
        -200
      ],
      "parameters": {
        "color": 4,
        "height": 300,
        "content": "## 100 Start Points  \nNew users start with 100 points (for example)"
      },
      "typeVersion": 1
    },
    {
      "id": "bc5aefc1-fd7c-42cc-8110-4687a4845402",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1540,
        -240
      ],
      "parameters": {
        "color": 6,
        "width": 1260,
        "height": 1000,
        "content": "# New WhatsApp Group Participant Workflow\n\n## Receive Webhook Notification\n### The workflow starts when a webhook receives a POST request from Whapi, notifying that a new participant has joined a WhatsApp group.\n\n## Filter the Event\n### The workflow checks two conditions:\n\n### The event is for the correct WhatsApp group (matching the specific group ID).\n\n### The action type is \"add\" (meaning a user was added to the group).\n\n## Send Welcome Message\n### If both conditions are met, the workflow sends a personalized welcome message to the new participant via Whapi.\nThe message explains the group rules and how the user can earn points and participate in weekly raffles.\n\n## Create Airtable Record\n### After sending the welcome message, the workflow creates a new record in the Airtable database for the new participant.\n### The record includes:\n\n### The participant\u2019s WhatsApp ID\n\n### An initial engagement count of 100 points\n\n### The date of the last interaction (set to today)\n\n## Result\n### Every new group member is automatically welcomed and registered in your engagement database with starter points, ready to participate in your group\u2019s activities and rewards.\n\n## This workflow ensures new users are greeted, informed, and instantly included in your engagement tracking system."
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Filter": {
      "main": [
        [
          {
            "node": "Welcome WhatsApp message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "New group participant": {
      "main": [
        [
          {
            "node": "Filter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Welcome WhatsApp message": {
      "main": [
        [
          {
            "node": "Airtable Create",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

The workflow starts when a webhook receives a POST request from Whapi, notifying that a new participant has joined a WhatsApp group.

Source: https://n8n.io/workflows/5686/ — original creator credit. Request a take-down →

More Slack & Telegram workflows → · Browse all categories →

Related workflows

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

Slack & Telegram

It first filters messages to ensure they come from the correct group, then identifies the message type—text, emoji reaction, voice, or image. The workflow searches for the user in an Airtable database

Airtable
Slack & Telegram

Telegram Comms (Polls & Messages to Group Topics). Uses httpRequest. Webhook trigger; 11 nodes.

HTTP Request
Slack & Telegram

This template is perfect for community managers, business owners, and WhatsApp group administrators who want to create a welcoming experience for new members. Whether you're running a support group, m

HTTP Request
Slack & Telegram

🚀 Lightning-fast setup - Deploy in under 5 minutes 💡 Zero AI costs - Uses simple math instead of expensive LLM calls 🛡️ 99% spam blocking - Mathematical CAPTCHAs stop bots instantly ⚡ Ultra-efficient

Telegram Trigger, Google Sheets, Telegram +1
Slack & Telegram

🧩 Jamf Smart Group Membership to Slack Automatically export Jamf smart group membership to Slack in CSV format. Perfect for IT and security teams who need fast visibility into device grouping—without

HTTP Request, Slack