This workflow corresponds to n8n.io template #5855 — we link there as the canonical source.
This workflow follows the WhatsApp → WhatsApp Trigger 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": "qDPYHrEKhM6zwpTH",
"name": "WA-SellFlow-Booking_Calendar-v1",
"nodes": [
{
"id": "eaafdd14-1774-41f5-93cf-76fa12dfecba",
"name": "Is bot starts?",
"type": "n8n-nodes-base.if",
"position": [
800,
80
],
"parameters": {},
"typeVersion": 2.2
},
{
"id": "0b89a59c-2881-4e0d-a59b-9607f2764a2d",
"name": "WhatsApp Trigger",
"type": "n8n-nodes-base.whatsAppTrigger",
"position": [
-80,
80
],
"parameters": {},
"typeVersion": 1
},
{
"id": "aed3ba09-f21c-4b55-ac32-04a7d854b621",
"name": "Initialization",
"type": "n8n-nodes-base.set",
"position": [
140,
80
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "eb3493d3-cc45-4abb-93ce-aa3afbf303d2",
"name": "Welcome Message",
"type": "n8n-nodes-base.whatsApp",
"position": [
3880,
1280
],
"parameters": {},
"typeVersion": 1
},
{
"id": "d93e9a37-aa69-44b2-b71a-f067163026c5",
"name": "Main Menu",
"type": "n8n-nodes-base.whatsApp",
"position": [
3880,
1080
],
"parameters": {},
"typeVersion": 1
},
{
"id": "e75f72b0-860d-4dea-a877-fbc8fa046031",
"name": "Get bot status",
"type": "n8n-nodes-base.postgres",
"position": [
360,
80
],
"parameters": {},
"typeVersion": 2.5,
"alwaysOutputData": true
},
{
"id": "986d1a03-d0a2-4af8-8fe4-319b22b5a7d7",
"name": "Define flow",
"type": "n8n-nodes-base.switch",
"position": [
1020,
80
],
"parameters": {},
"typeVersion": 3.2,
"alwaysOutputData": false
},
{
"id": "a2f0245e-f763-4eb6-90ff-4adb97643f78",
"name": "Commands",
"type": "n8n-nodes-base.switch",
"position": [
1240,
280
],
"parameters": {},
"retryOnFail": false,
"typeVersion": 3.2
},
{
"id": "783bd953-4e59-4d2d-b8d9-2833ee2e1ed9",
"name": "Get available question",
"type": "n8n-nodes-base.postgres",
"position": [
1680,
80
],
"parameters": {},
"typeVersion": 2.5,
"alwaysOutputData": true
},
{
"id": "f8c8e3f2-ef35-4d0a-9568-56c72ab7fa5d",
"name": "Is found?",
"type": "n8n-nodes-base.if",
"position": [
1900,
80
],
"parameters": {},
"typeVersion": 2.2
},
{
"id": "b63863ca-4203-4af3-b9b0-e3a63165bfca",
"name": "Get available questions",
"type": "n8n-nodes-base.postgres",
"position": [
2120,
-120
],
"parameters": {},
"executeOnce": true,
"typeVersion": 2.5,
"alwaysOutputData": true
},
{
"id": "68d6fe0a-cf9c-49df-9b36-acedf2029b34",
"name": "Add Answer",
"type": "n8n-nodes-base.postgres",
"position": [
2120,
80
],
"parameters": {},
"typeVersion": 2.5
},
{
"id": "14244a93-5f2a-4fca-9399-eb7d144dffcc",
"name": "Add pred Answer",
"type": "n8n-nodes-base.postgres",
"position": [
3660,
80
],
"parameters": {},
"typeVersion": 2.5
},
{
"id": "0bb3a9e8-3094-4511-81ca-3bbe0cfefa6e",
"name": "Is Questions available?",
"type": "n8n-nodes-base.if",
"position": [
2340,
-120
],
"parameters": {},
"executeOnce": true,
"typeVersion": 2.2
},
{
"id": "237ea952-6397-4297-b79a-56a0820278b3",
"name": "Error",
"type": "n8n-nodes-base.whatsApp",
"position": [
3880,
480
],
"parameters": {},
"typeVersion": 1
},
{
"id": "dff7f885-7751-47e0-97b0-5633ed80264d",
"name": "Update bot status on BOOKING",
"type": "n8n-nodes-base.postgres",
"position": [
1460,
280
],
"parameters": {},
"typeVersion": 2.5
},
{
"id": "9ec1e0fa-2b52-487c-8c14-639b199bdf00",
"name": "Question",
"type": "n8n-nodes-base.whatsApp",
"position": [
3880,
280
],
"parameters": {},
"typeVersion": 1
},
{
"id": "1bbe48f9-6de2-4a8c-90c4-c73dffd95d7b",
"name": "Finish",
"type": "n8n-nodes-base.whatsApp",
"position": [
3880,
680
],
"parameters": {},
"typeVersion": 1
},
{
"id": "3f4e4568-c4bd-484d-b125-678c66e98b87",
"name": "Create an event",
"type": "n8n-nodes-base.googleCalendar",
"position": [
1680,
880
],
"parameters": {},
"typeVersion": 1.3
},
{
"id": "74501a5a-6e4c-47c4-8cce-d4ccac8a8dfb",
"name": "Get Answers",
"type": "n8n-nodes-base.postgres",
"position": [
1240,
880
],
"parameters": {},
"typeVersion": 2.5
},
{
"id": "f28995b5-8b56-46c0-a248-14e5397e6b0b",
"name": "Set Datetime AND Name",
"type": "n8n-nodes-base.set",
"position": [
1460,
880
],
"parameters": {},
"executeOnce": true,
"typeVersion": 3.4
},
{
"id": "c4a9cc76-f4d1-44d8-8387-ac86050ed59e",
"name": "Date?",
"type": "n8n-nodes-base.if",
"position": [
2560,
-120
],
"parameters": {},
"typeVersion": 2.2
},
{
"id": "e5975182-bb7f-4112-967c-ec6542711041",
"name": "Set Free Time Slots",
"type": "n8n-nodes-base.set",
"position": [
3440,
-120
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "28d43d4a-741b-4b0d-bd91-7a0f231f1a87",
"name": "Is First?",
"type": "n8n-nodes-base.if",
"position": [
580,
80
],
"parameters": {},
"typeVersion": 2.2
},
{
"id": "e358368c-7f43-4d1e-aaa6-32512bdf8a69",
"name": "Get Day Event",
"type": "n8n-nodes-base.googleCalendar",
"position": [
3000,
-120
],
"parameters": {},
"executeOnce": true,
"typeVersion": 1.3,
"alwaysOutputData": true
},
{
"id": "a70b08bf-6e23-49d3-b639-0b7c0e710527",
"name": "Request Time",
"type": "n8n-nodes-base.whatsApp",
"position": [
3880,
-120
],
"parameters": {},
"typeVersion": 1
},
{
"id": "e5e7ef99-e46b-49b0-bff3-ddc98ed3e28e",
"name": "Update bot status on START ",
"type": "n8n-nodes-base.postgres",
"position": [
1020,
1080
],
"parameters": {},
"executeOnce": true,
"typeVersion": 2.5
},
{
"id": "3d5a7690-81f2-46f0-b2fd-6ce1bfadfc03",
"name": "Update bot status on START",
"type": "n8n-nodes-base.postgres",
"position": [
1020,
1280
],
"parameters": {},
"executeOnce": true,
"typeVersion": 2.5
},
{
"id": "b2659d5c-f57c-47c8-87ec-cbbf6f6beab0",
"name": "Set Work Hours",
"type": "n8n-nodes-base.code",
"position": [
3220,
-120
],
"parameters": {},
"executeOnce": true,
"typeVersion": 2
},
{
"id": "55e3489d-47d2-4e9a-9afe-967db6a4eb67",
"name": "Delete Answers",
"type": "n8n-nodes-base.postgres",
"position": [
1900,
880
],
"parameters": {},
"typeVersion": 2.5
},
{
"id": "2fbf5296-23a4-4637-a1ab-943cf24ff96d",
"name": "Union Slots",
"type": "n8n-nodes-base.summarize",
"position": [
3660,
-120
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "478f8c66-b07b-4fd0-a4ad-63231d85e1fd",
"name": "Set Date",
"type": "n8n-nodes-base.set",
"position": [
2780,
-120
],
"parameters": {},
"typeVersion": 3.4
},
{
"id": "632a6248-6c39-42a5-91c0-2b89c2238e0f",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-480,
400
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "c7286a72-3e21-4ba8-9657-0885e2d11ba1",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-480,
80
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "18a9fb65-116b-4f20-802a-7f7b4b8b96af",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
-480,
-260
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "cd4dac72-e88d-4a17-8991-461b6778edde",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-900,
80
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "9a36f447-b5fb-430c-a87e-d1af5b7743e2",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-900,
-260
],
"parameters": {
"content": ""
},
"typeVersion": 1
},
{
"id": "4f164607-b1f6-4d71-8b88-2618e1c8f779",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
-900,
400
],
"parameters": {
"content": ""
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "76ddb9f2-a6c5-4b28-8409-7e68878e0b32",
"connections": {
"Date?": {
"main": [
[
{
"node": "Set Date",
"type": "main",
"index": 0
}
],
[
{
"node": "Question",
"type": "main",
"index": 0
}
]
]
},
"Finish": {
"main": [
[
{
"node": "Get Answers",
"type": "main",
"index": 0
}
]
]
},
"Commands": {
"main": [
[
{
"node": "Update bot status on BOOKING",
"type": "main",
"index": 0
}
],
[
{
"node": "Error",
"type": "main",
"index": 0
}
]
]
},
"Question": {
"main": [
[
{
"node": "Add pred Answer",
"type": "main",
"index": 0
}
]
]
},
"Set Date": {
"main": [
[
{
"node": "Get Day Event",
"type": "main",
"index": 0
}
]
]
},
"Is First?": {
"main": [
[
{
"node": "Update bot status on START",
"type": "main",
"index": 0
}
],
[
{
"node": "Is bot starts?",
"type": "main",
"index": 0
}
]
]
},
"Is found?": {
"main": [
[
{
"node": "Get available questions",
"type": "main",
"index": 0
}
],
[
{
"node": "Add Answer",
"type": "main",
"index": 0
}
]
]
},
"Add Answer": {
"main": [
[
{
"node": "Get available questions",
"type": "main",
"index": 0
}
]
]
},
"Define flow": {
"main": [
[
{
"node": "Get available question",
"type": "main",
"index": 0
}
],
[
{
"node": "Commands",
"type": "main",
"index": 0
}
]
]
},
"Get Answers": {
"main": [
[
{
"node": "Set Datetime AND Name",
"type": "main",
"index": 0
}
]
]
},
"Union Slots": {
"main": [
[
{
"node": "Request Time",
"type": "main",
"index": 0
}
]
]
},
"Request Time": {
"main": [
[
{
"node": "Add pred Answer",
"type": "main",
"index": 0
}
]
]
},
"Get Day Event": {
"main": [
[
{
"node": "Set Work Hours",
"type": "main",
"index": 0
}
]
]
},
"Delete Answers": {
"main": [
[
{
"node": "Update bot status on START ",
"type": "main",
"index": 0
}
]
]
},
"Get bot status": {
"main": [
[
{
"node": "Is First?",
"type": "main",
"index": 0
}
]
]
},
"Initialization": {
"main": [
[
{
"node": "Get bot status",
"type": "main",
"index": 0
}
]
]
},
"Is bot starts?": {
"main": [
[
{
"node": "Update bot status on START ",
"type": "main",
"index": 0
}
],
[
{
"node": "Define flow",
"type": "main",
"index": 0
}
]
]
},
"Set Work Hours": {
"main": [
[
{
"node": "Set Free Time Slots",
"type": "main",
"index": 0
}
]
]
},
"Create an event": {
"main": [
[
{
"node": "Delete Answers",
"type": "main",
"index": 0
}
]
]
},
"WhatsApp Trigger": {
"main": [
[
{
"node": "Initialization",
"type": "main",
"index": 0
}
]
]
},
"Set Free Time Slots": {
"main": [
[
{
"node": "Union Slots",
"type": "main",
"index": 0
}
]
]
},
"Set Datetime AND Name": {
"main": [
[
{
"node": "Create an event",
"type": "main",
"index": 0
}
]
]
},
"Get available question": {
"main": [
[
{
"node": "Is found?",
"type": "main",
"index": 0
}
]
]
},
"Get available questions": {
"main": [
[
{
"node": "Is Questions available?",
"type": "main",
"index": 0
}
]
]
},
"Is Questions available?": {
"main": [
[
{
"node": "Date?",
"type": "main",
"index": 0
}
],
[
{
"node": "Finish",
"type": "main",
"index": 0
}
]
]
},
"Update bot status on START": {
"main": [
[
{
"node": "Welcome Message",
"type": "main",
"index": 0
}
]
]
},
"Update bot status on START ": {
"main": [
[
{
"node": "Main Menu",
"type": "main",
"index": 0
}
]
]
},
"Update bot status on BOOKING": {
"main": [
[
{
"node": "Get available question",
"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 is for service-based businesses and freelancers who want to automate booking appointments via WhatsApp without relying on third-party scheduling tools. It's perfect for small teams who want full control over the reservation system and calendar integration.
Source: https://n8n.io/workflows/5855/ — 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 designed for **customer support teams, e-commerce founders, and operations managers** who want to handle thousands of customer queries seamlessly. Instead of building a brand-new chat
This workflow enables seamless, bidirectional communication between WhatsApp and Slack using n8n. It automates the reception, processing, and forwarding of messages (text, media, and documents) betwee
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
Filter Whatsapp. Uses stickyNote, whatsAppTrigger, CUSTOM, whatsApp. Event-driven trigger; 12 nodes.
Community Node Disclaimer: This workflow uses KlickTipp community nodes.