This workflow corresponds to n8n.io template #4719 — we link there as the canonical source.
This workflow follows the Google Sheets → Googlesheetstrigger 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": "onboarding-workflow-template",
"meta": {
"templateCredsSetupCompleted": false
},
"name": "Discord Channel Creation from Google Sheets with Member Notifications",
"tags": [],
"nodes": [
{
"id": "c9ed5dd5-e2b9-4e6b-b0b5-3af3729428a7",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-720,
-60
],
"parameters": {
"width": 280,
"height": 340,
"content": "## Monitor New Project Entries\nMonitors Google Sheets for new project entries and initiates the workflow when a new row is added to the Project Onboarding sheet."
},
"typeVersion": 1
},
{
"id": "f8509721-482a-4088-93a8-59c3abd86af9",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-420,
-60
],
"parameters": {
"width": 280,
"height": 340,
"content": "## Filter Valid Project Entries\nFilters entries to only process projects that don't have Discord channels created yet (Discord ID is empty) and have a valid timestamp."
},
"typeVersion": 1
},
{
"id": "5c51ca61-5591-4512-8b26-5988d0ce9dc9",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-120,
-60
],
"parameters": {
"width": 280,
"height": 340,
"content": "## Create New Discord Channel\nCreates a new Discord channel with the Project ID as the channel name in the specified category for project organization."
},
"typeVersion": 1
},
{
"id": "b5a5eb5a-e4fa-4ed3-b590-972eb9c0080f",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
180,
-60
],
"parameters": {
"width": 280,
"height": 340,
"content": "## Update Google Sheets with Channel Info\nUpdates the Google Sheet with the newly created Discord channel ID and marks the status as 'Discord Created' for tracking purposes."
},
"typeVersion": 1
},
{
"id": "08e09442-ee10-4421-9ff8-9ed234c8dad3",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
760,
-60
],
"parameters": {
"width": 580,
"height": 360,
"content": "## Send Project Announcement\nSends a formatted message to the Discord channel announcing the new project with key details and team assignments."
},
"typeVersion": 1
},
{
"id": "f418dff7-e57c-40b7-a4a3-8b6357936b85",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1420,
-60
],
"parameters": {
"width": 280,
"height": 340,
"content": "## Complete Onboarding Process\nMarks the onboarding process as complete in the tracking sheet after all messages have been sent successfully."
},
"typeVersion": 1
},
{
"id": "9042f971-3a6e-4125-ba4c-326793446a9e",
"name": "Monitor New Project Entries",
"type": "n8n-nodes-base.googleSheetsTrigger",
"position": [
-620,
120
],
"parameters": {
"event": "rowAdded",
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyX"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "PROJECT_SHEET_ID",
"cachedResultName": "Project Onboarding"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "YOUR_GOOGLE_SHEET_URL_HERE"
}
},
"credentials": {
"googleSheetsTriggerOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "c0f8af86-cd7c-42d5-b8c3-d20a75e4a9cf",
"name": "Filter Valid Project Entries",
"type": "n8n-nodes-base.filter",
"position": [
-320,
120
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "a5d0b0c6-424b-441d-bcf7-7a5ac25698b2",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
},
"leftValue": "={{ $json['Discord ID'] }}",
"rightValue": "Created"
},
{
"id": "f3cef95a-0856-4eff-a2ad-c42a64bae076",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.Timestamp }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "97ddddfb-8bc8-43e9-b06a-4c95a423c7f6",
"name": "Create Discord Channel",
"type": "n8n-nodes-base.discord",
"position": [
-20,
120
],
"parameters": {
"name": "={{ $json['Project ID'] }}",
"guildId": {
"__rl": true,
"mode": "list",
"value": "YOUR_DISCORD_GUILD_ID",
"cachedResultName": "Your Discord Server"
},
"options": {
"categoryId": {
"__rl": true,
"mode": "list",
"value": "YOUR_DISCORD_CATEGORY_ID",
"cachedResultName": "New Projects Category"
}
}
},
"credentials": {
"discordBotApi": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "005657e7-eef2-45e0-aceb-694bee90757f",
"name": "Update Sheet with Discord Channel ID",
"type": "n8n-nodes-base.googleSheets",
"position": [
280,
120
],
"parameters": {
"columns": {
"value": {
"Domain ID": "={{ $('Filter Valid Project Entries').item.json['Domain ID'] }}",
"Discord ID": "={{ $json.id }}",
"Discord Server Creation": "Discord Created"
},
"mappingMode": "defineBelow",
"matchingColumns": [
"Domain ID"
]
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "PROJECT_SHEET_ID",
"cachedResultName": "Project Onboarding"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "YOUR_GOOGLE_SHEET_URL_HERE"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "2a5bfd36-9fe4-4832-8a6c-6063bd620483",
"name": "Check Message Sending Status",
"type": "n8n-nodes-base.filter",
"position": [
560,
120
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "36a3a601-2204-4080-a869-ee00506a7fec",
"operator": {
"type": "dateTime",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $('Monitor New Project Entries').item.json.Timestamp }}",
"rightValue": ""
},
{
"id": "7675f210-3bc8-41b9-9dee-53b13926eaa1",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json['Discord Server Creation'] }}",
"rightValue": "Discord Created"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "a7499f15-0c8d-4505-92c0-0967432700ee",
"name": "Send Project Announcement Message",
"type": "n8n-nodes-base.discord",
"position": [
900,
120
],
"parameters": {
"content": "=Congratulations Team! We Got A New Project \ud83e\udd29 \ud83e\udd73 @everyone\n\n@ProjectManager Please assign this project to the respective team\n\n**Project ID:** {{ $('Filter Valid Project Entries').item.json['Project ID'] }}\n**Project Type:** {{ $('Filter Valid Project Entries').item.json['Product Type'] }}\n**Client Name:** {{ $('Filter Valid Project Entries').item.json['Client Name'] }}\n\n**What is the main goal of this client? What he/she is trying to achieve with this project?**\n{{ $('Filter Valid Project Entries').item.json['What is the main goal of this client? What he/she is trying to achieve with this project?'] }}\n\n**Is there any task that we need to do immediately on this project?**\n{{ $('Filter Valid Project Entries').item.json['Is there any task that we need to do immediately on this project?'] }}\n\n**Our commitments to the client that operation team should know?**\n{{ $('Filter Valid Project Entries').item.json['Our commitments to the client that operation team should know?'] }}",
"guildId": {
"__rl": true,
"mode": "list",
"value": "YOUR_DISCORD_GUILD_ID",
"cachedResultName": "Your Discord Server"
},
"options": {},
"resource": "message",
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Update Sheet with Discord Channel ID').item.json['Discord ID'] }}"
}
},
"credentials": {
"discordBotApi": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "3c43a71e-fa48-407a-8cd6-b4fd866d1657",
"name": "Send Additional Project Details",
"type": "n8n-nodes-base.discord",
"position": [
1140,
120
],
"parameters": {
"content": "=**Additional Project Information:**\n\n**Anything else you want to share about this project?**\n{{ $('Filter Valid Project Entries').item.json['Anything else you want to share about this project?'] }}\n\n**Access Information:**\n**Google Analytics:** {{ $('Filter Valid Project Entries').item.json['Access [Google Analytics]'] }}\n**Google Search Console:** {{ $('Filter Valid Project Entries').item.json['Access [Google Search Console]'] }}\n**Website Backend:** {{ $('Filter Valid Project Entries').item.json['Access [Website Backend]'] }}\n\n**Competitors & Keywords:**\n{{ $('Filter Valid Project Entries').item.json['List of top competitors & seed keywords? (whatever is available)'] }}\n\n**Call Recording:** {{ $('Filter Valid Project Entries').item.json['Call Recording URL'] }}\n\n**Communication Method:** {{ $('Filter Valid Project Entries').item.json['Communication Method (if any)'] }}",
"guildId": {
"__rl": true,
"mode": "list",
"value": "YOUR_DISCORD_GUILD_ID",
"cachedResultName": "Your Discord Server"
},
"options": {},
"resource": "message",
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.channel_id }}"
}
},
"credentials": {
"discordBotApi": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "4a7b142a-9fc4-4eb8-baf2-1745a3597e69",
"name": "Mark Onboarding Complete",
"type": "n8n-nodes-base.googleSheets",
"position": [
1480,
120
],
"parameters": {
"columns": {
"value": {
"Discord ID": "={{ $('Check Message Sending Status').item.json['Discord ID'] }}",
"Discord Server Creation": "Discord Created, Onboarding Message Sent"
},
"mappingMode": "defineBelow",
"matchingColumns": [
"Discord ID"
]
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "PROJECT_SHEET_ID",
"cachedResultName": "Project Onboarding"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "YOUR_GOOGLE_SHEET_URL_HERE"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
}
],
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "template-version-id",
"connections": {
"Create Discord Channel": {
"main": [
[
{
"node": "Update Sheet with Discord Channel ID",
"type": "main",
"index": 0
}
]
]
},
"Monitor New Project Entries": {
"main": [
[
{
"node": "Filter Valid Project Entries",
"type": "main",
"index": 0
}
]
]
},
"Check Message Sending Status": {
"main": [
[
{
"node": "Send Project Announcement Message",
"type": "main",
"index": 0
}
]
]
},
"Filter Valid Project Entries": {
"main": [
[
{
"node": "Create Discord Channel",
"type": "main",
"index": 0
}
]
]
},
"Send Additional Project Details": {
"main": [
[
{
"node": "Mark Onboarding Complete",
"type": "main",
"index": 0
}
]
]
},
"Send Project Announcement Message": {
"main": [
[
{
"node": "Send Additional Project Details",
"type": "main",
"index": 0
}
]
]
},
"Update Sheet with Discord Channel ID": {
"main": [
[
{
"node": "Check Message Sending Status",
"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.
discordBotApigoogleSheetsOAuth2ApigoogleSheetsTriggerOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
A comprehensive n8n automation that monitors Google Sheets for new project entries, automatically creates dedicated Discord channels, and sends formatted member notifications with all essential project details.
Source: https://n8n.io/workflows/4719/ — 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 workflow is perfect for HR teams, recruiters, and hiring managers who want to streamline their hiring process by posting jobs to multiple boards from a single source of truth.
Get All Members Of A Discord Server With A Specific Role. Uses manualTrigger, googleSheets, noOp, discord. Event-driven trigger; 16 nodes.
This workflow retrieves all members of a Discord server or guild who have a specific role.
Google Sheets CRM Enrichment. Uses googleSheetsTrigger, httpRequest, googleSheets, slack. Event-driven trigger; 15 nodes.
This n8n workflow demonstrates how to automate customer interactions and appointment management via WhatsApp Business bot. After submitting a Google Form, the user receives a notification via WhatsApp