AI-Powered Salon Appointment Booking System with WhatsApp and Google Sheets
Dies ist ein Content Creation, Multimodal AI-Bereich Automatisierungsworkflow mit 13 Nodes. Hauptsächlich werden Twilio, TwilioTrigger, Agent, GoogleSheetsTool, LmChatOpenAi und andere Nodes verwendet.
- •Google Sheets API-Anmeldedaten
- •OpenAI API Key
Verwendete Nodes (13)
Kategorie
{
"id": "OuMVyHH0IcL51eRb",
"meta": {
"instanceId": "9272721148ea09184b6bbb7ce6219dab088562dd450e2df8280d57c2e34c7d84",
"templateCredsSetupCompleted": true
},
"name": "n8n-salon-appointment-booking-agent",
"tags": [],
"nodes": [
{
"id": "a2bcb9ef-6210-4d3a-8017-0fc50924e417",
"name": "KI-Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-64,
-128
],
"parameters": {
"text": "=[Identity]\n\nYou are an AI assistant for GlamourEdge Salon, a smart and helpful digital receptionist designed to handle service inquiries, manage bookings, and assist with appointment modifications or cancellations.\n\n[Style]\n\nSpeak in a warm, human tone, like chatting with a client on WhatsApp.\n\nRespond naturally, clearly, and respectfully.\n\nAlways return output in WhatsApp chat-friendly format:\n\nUse line breaks (\\n) for separate sentences.\n\nUse friendly, concise language.\n\nOptional emojis for casual friendliness (😊, 💇♀️, 📅, ⏰).\n\nKeep answers helpful, short, and human-like, never robotic.\n\nAlways polite and provide next steps.\n\n[Response Guidelines]\n\nAlways respond only after calling the appropriate tool.\n\nCall the tool according to the user’s intent (service info, stylist details, availability, booking, cancel, edit).\n\nIn StylistAvailableSlots Tool, always pass services as an array.\n\nStructure responses in conversational WhatsApp style, not lists.\n\nNever share or speak URLs.\n\nRefer to today as {{$now.day}} and current time as {{$now}}.\n\nRespect privacy: never repeat personal info unless necessary.\n\nUse phone number from {{ $json.data.from }} for booking.\n\nKeep replies short, friendly, and human-like.\n\n[Task & Goals]\n🔹 Service Inquiries\n\nCall SalonServices Tool to fetch current services.\n\nIf requested service unavailable → politely suggest valid services.\n\nWait for user confirmation before moving to stylists.\n\nIf confirmed → call StylistDetails Tool and ask if they want to check availability.\n\n🔹 Booking Appointments\n\nStep-by-step flow: service → stylist → time.\n\nCall StylistAvailableSlots Tool (services must be an array).\n\nSuggest only future slots.\n\nIf multiple services → stack them:\n\n“You can have this right after your haircut.”\n\nOnce slot chosen → confirm approximate end time (final confirmation only).\n\nBefore calling booking tool, verify:\n\nService chosen\n\nStylist chosen\n\nDate & Time confirmed\n\nUser name\n\nUser email\n\nUser phone: {{ $json.data.from }} (do not ask the user)\n\nIf any detail missing → ask politely first.\n\nWhen all details are ready → call UserSalonBooking Tool and confirm.\n\n🔹 Cancel Appointment\n\nAsk for phone number.\n\nCall GetUserAppointmentDetails Tool.\n\nConfirm details → ask reason → call UserCancelAppointment Tool.\n\n🔹 Edit Appointment\n\nAsk for phone number.\n\nCall GetUserAppointmentDetails Tool.\n\nConfirm existing appointment.\n\nAsk what they want to change (service, stylist, date/time).\n\nValidate with GetStylistAndServices Tool.\n\nIf valid → update via UpdateBooking Tool.\n\n[Error Handling / Fallback]\n\nStylist/service not found → suggest alternatives.\n\nSlot unavailable → suggest nearest future slot.\n\nBooking info incomplete → ask politely for missing details before tool call.\n\nSystem error → apologize and silently trigger transfer_call_tool.\n\n[WhatsApp Formatting Rules]\n\nAlways reply in WhatsApp chat style.\n\nWhen user selects multiple services → show them in WhatsApp with simple bullet points or numbers.\n\nUse line breaks for clarity.\n\nKeep messages friendly, short, and human-like.\n\nOptional emojis (😊, 💇♀️, 📅, ⏰).\n\nNo Markdown tables or lists; just plain text with natural line breaks.\n\n[User Input]\n\nHere is the user input:\n\n{{ $json.data.body }}",
"options": {},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "a0c064d7-8443-4e67-86cb-cb97f0707efd",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-448,
64
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "mXmp9rMNs1e1paxm",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "3c8fe6e3-f40a-4d51-b442-40601141a28b",
"name": "Simple Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
-320,
144
],
"parameters": {
"sessionKey": "={{ $json.data.from }}",
"sessionIdType": "customKey",
"contextWindowLength": 10
},
"typeVersion": 1.3
},
{
"id": "cf9c618c-48de-43da-9bc4-c6287f3b41eb",
"name": "Buchungsdienste",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
352,
192
],
"parameters": {
"columns": {
"value": {
"Date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Date', `send user selected date in this format:YYYY-MM-DD`, 'string') }}",
"Phone": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Phone', `Send user Phone number`, 'string') }}",
"Services": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Services', `Send user Services in array if user choose multiple services than pass in array, like [\"haircut\",\"spa\"] this type`, 'string') }}",
"Start_time": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start_time', `Send user Services Start Time in this format. hh:mm`, 'string') }}",
"Stylist_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Stylist_name', `Send user selected stylist name`, 'string') }}",
"customer_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('customer_name', `send user name`, 'string') }}"
},
"schema": [
{
"id": "Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone",
"type": "string",
"display": true,
"required": false,
"displayName": "Phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Services",
"type": "string",
"display": true,
"required": false,
"displayName": "Services",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Start_time",
"type": "string",
"display": true,
"required": false,
"displayName": "Start_time",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Stylist_name",
"type": "string",
"display": true,
"required": false,
"displayName": "Stylist_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "customer_name",
"type": "string",
"display": true,
"required": false,
"displayName": "customer_name",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit?usp=drivesdk",
"cachedResultName": "Salon Booking manage"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "oztTa0ZzQpSyJzhB",
"name": "Shivangi-Google Sheet"
}
},
"typeVersion": 4.7
},
{
"id": "ed3cb5f0-d9d6-49fe-b3f6-c116568ffd80",
"name": "Stylist vorschlagen",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-64,
240
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1978384237,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit#gid=1978384237",
"cachedResultName": "SuggestStylist"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit?usp=drivesdk",
"cachedResultName": "Salon Booking manage"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "oztTa0ZzQpSyJzhB",
"name": "Shivangi-Google Sheet"
}
},
"typeVersion": 4.7
},
{
"id": "84636255-2f7a-4f51-aa01-f64e6970dc8b",
"name": "Öffnungszeiten",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
224,
224
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1322339636,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit#gid=1322339636",
"cachedResultName": "openingHour"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit?usp=drivesdk",
"cachedResultName": "Salon Booking manage"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "oztTa0ZzQpSyJzhB",
"name": "Shivangi-Google Sheet"
}
},
"typeVersion": 4.7
},
{
"id": "9c0ed897-c90a-4fac-9c97-7b133bc62699",
"name": "Salondienstleistungen",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
-192,
192
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1011822210,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit#gid=1011822210",
"cachedResultName": "Services"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit?usp=drivesdk",
"cachedResultName": "Salon Booking manage"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "oztTa0ZzQpSyJzhB",
"name": "Shivangi-Google Sheet"
}
},
"typeVersion": 4.7
},
{
"id": "7ee2db3a-980a-4357-9e8b-66c27b6f853c",
"name": "Details zu bestimmten Stylisten",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
480,
144
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1861968928,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit#gid=1861968928",
"cachedResultName": "PerticullerStylistsDetails"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit?usp=drivesdk",
"cachedResultName": "Salon Booking manage"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "oztTa0ZzQpSyJzhB",
"name": "Shivangi-Google Sheet"
}
},
"typeVersion": 4.7
},
{
"id": "2dfde257-a813-40d4-8114-c5f35ab88d3e",
"name": "Buchung aktualisieren",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
592,
96
],
"parameters": {
"columns": {
"value": {
"Date": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Date', ``, 'string') }}",
"Phone": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Phone__using_to_match_', ``, 'string') }}",
"Services": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Services', ``, 'string') }}",
"Start_time": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start_time', ``, 'string') }}",
"Stylist_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Stylist_name', ``, 'string') }}",
"customer_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('customer_name', ``, 'string') }}"
},
"schema": [
{
"id": "Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Services",
"type": "string",
"display": true,
"required": false,
"displayName": "Services",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Start_time",
"type": "string",
"display": true,
"required": false,
"displayName": "Start_time",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Stylist_name",
"type": "string",
"display": true,
"required": false,
"displayName": "Stylist_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "customer_name",
"type": "string",
"display": true,
"required": false,
"displayName": "customer_name",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Phone"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit#gid=0",
"cachedResultName": "Order Booking"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit?usp=drivesdk",
"cachedResultName": "Salon Booking manage"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "oztTa0ZzQpSyJzhB",
"name": "Shivangi-Google Sheet"
}
},
"typeVersion": 4.7
},
{
"id": "2437b396-4f00-4b9e-bdd3-079c966ddf96",
"name": "Buchungsdetails abrufen",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
96,
240
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupValue": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values0_Value', ``, 'string') }}",
"lookupColumn": "Phone"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit#gid=0",
"cachedResultName": "Order Booking"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit?usp=drivesdk",
"cachedResultName": "Salon Booking manage"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "oztTa0ZzQpSyJzhB",
"name": "Shivangi-Google Sheet"
}
},
"typeVersion": 4.7
},
{
"id": "66a50036-1492-46f8-9706-590c34ad413a",
"name": "SMS/MMS/WhatsApp Nachricht senden",
"type": "n8n-nodes-base.twilio",
"position": [
448,
-128
],
"parameters": {
"to": "={{ $('Twilio Trigger').item.json.data.from.split(\"+\")[1] }}",
"from": "={{ $('Twilio Trigger').item.json.data.to.split(\"+\")[1] }}",
"message": "={{ $json.output }}",
"options": {},
"toWhatsapp": true
},
"credentials": {
"twilioApi": {
"id": "6iQoIInPmlEmV6R4",
"name": "Twilio account"
}
},
"typeVersion": 1
},
{
"id": "322c4e17-01a7-470e-83e6-e0125613d486",
"name": "Twilio Trigger",
"type": "n8n-nodes-base.twilioTrigger",
"position": [
-560,
-128
],
"webhookId": "f4df2914-0891-4e51-9971-5944df0592ef",
"parameters": {
"updates": [
"com.twilio.messaging.inbound-message.received"
]
},
"credentials": {
"twilioApi": {
"id": "6iQoIInPmlEmV6R4",
"name": "Twilio account"
}
},
"typeVersion": 1
},
{
"id": "1ca07c67-64a1-44db-9c7c-6959d7ca6b36",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-576,
-288
],
"parameters": {
"width": 368,
"height": 112,
"content": "## Sample Spreadsheet\nhttps://docs.google.com/spreadsheets/d/1jF0ACPiyK1gk4J_oWwpMQ8KG9Wek8RtG8Ay2npJClak/edit?usp=sharing"
},
"typeVersion": 1
}
],
"active": true,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "96457bbe-2529-4af5-84f5-151700f052b1",
"connections": {
"a2bcb9ef-6210-4d3a-8017-0fc50924e417": {
"main": [
[
{
"node": "66a50036-1492-46f8-9706-590c34ad413a",
"type": "main",
"index": 0
}
]
]
},
"84636255-2f7a-4f51-aa01-f64e6970dc8b": {
"ai_tool": [
[
{
"node": "a2bcb9ef-6210-4d3a-8017-0fc50924e417",
"type": "ai_tool",
"index": 0
}
]
]
},
"3c8fe6e3-f40a-4d51-b442-40601141a28b": {
"ai_memory": [
[
{
"node": "a2bcb9ef-6210-4d3a-8017-0fc50924e417",
"type": "ai_memory",
"index": 0
}
]
]
},
"2dfde257-a813-40d4-8114-c5f35ab88d3e": {
"ai_tool": [
[
{
"node": "a2bcb9ef-6210-4d3a-8017-0fc50924e417",
"type": "ai_tool",
"index": 0
}
]
]
},
"9c0ed897-c90a-4fac-9c97-7b133bc62699": {
"ai_tool": [
[
{
"node": "a2bcb9ef-6210-4d3a-8017-0fc50924e417",
"type": "ai_tool",
"index": 0
}
]
]
},
"ed3cb5f0-d9d6-49fe-b3f6-c116568ffd80": {
"ai_tool": [
[
{
"node": "a2bcb9ef-6210-4d3a-8017-0fc50924e417",
"type": "ai_tool",
"index": 0
}
]
]
},
"322c4e17-01a7-470e-83e6-e0125613d486": {
"main": [
[
{
"node": "a2bcb9ef-6210-4d3a-8017-0fc50924e417",
"type": "main",
"index": 0
}
]
]
},
"cf9c618c-48de-43da-9bc4-c6287f3b41eb": {
"ai_tool": [
[
{
"node": "a2bcb9ef-6210-4d3a-8017-0fc50924e417",
"type": "ai_tool",
"index": 0
}
]
]
},
"2437b396-4f00-4b9e-bdd3-079c966ddf96": {
"ai_tool": [
[
{
"node": "a2bcb9ef-6210-4d3a-8017-0fc50924e417",
"type": "ai_tool",
"index": 0
}
]
]
},
"a0c064d7-8443-4e67-86cb-cb97f0707efd": {
"ai_languageModel": [
[
{
"node": "a2bcb9ef-6210-4d3a-8017-0fc50924e417",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"7ee2db3a-980a-4357-9e8b-66c27b6f853c": {
"ai_tool": [
[
{
"node": "a2bcb9ef-6210-4d3a-8017-0fc50924e417",
"type": "ai_tool",
"index": 0
}
]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Fortgeschritten - Content-Erstellung, Multimodales KI
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
InfyOm Technologies
@infyomWe are an AI Automation Agency focusing on various AI Automation Services like, workflow automation, shopify automation, chatbot developerment, custom ai agent development and more.
Diesen Workflow teilen