Din WhatsApp-inkorg rör sig snabbt. För snabbt. Ena minuten svarar du på ett enkelt ”Har ni öppet på lördag?”, nästa minut jonglerar du kalenderluckor, uppföljningar och samma FAQ-svar som du skrev i går.
Supportansvariga märker det först, men även tjänsteföretagare och byråteam som sköter kundbokning drabbas. Den här WhatsApp-bokningsautomationen gör inkommande meddelanden till besvarade frågor och bekräftade bokningar i Google Calendar, utan att du behöver sitta och vakta varje tråd.
Nedan ser du hur arbetsflödet dirigerar varje meddelande, hur det bokar eller listar kalenderhändelser och hur det kan mejla bekräftelser när det ingår i förfrågan.
Så fungerar den här automationen
Se hur detta löser problemet:
n8n Workflow Template: Twilio WhatsApp + Google Kalender: bokningar hanteras
flowchart LR
subgraph sg0["Incoming WhatsApp Message Flow"]
direction LR
n6@{ icon: "mdi:wrench", form: "rounded", label: "Calendar Tool", pos: "b", h: 48 }
n7@{ icon: "mdi:wrench", form: "rounded", label: "Knowledge Base Tool", pos: "b", h: 48 }
n8@{ icon: "mdi:wrench", form: "rounded", label: "Email Tool", pos: "b", h: 48 }
n9@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model1", pos: "b", h: 48 }
n15@{ icon: "mdi:robot", form: "rounded", label: "WhatsApp AI Support Agent", pos: "b", h: 48 }
n17@{ icon: "mdi:memory", form: "rounded", label: "Conversation Memory (Postgres)", pos: "b", h: 48 }
n20["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/twilio.svg' width='40' height='40' /></div><br/>Send WhatsApp Reply"]
n21["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/twilio.svg' width='40' height='40' /></div><br/>Incoming WhatsApp Message"]
n22@{ icon: "mdi:swap-vertical", form: "rounded", label: "Format Incoming Message", pos: "b", h: 48 }
n8 -.-> n15
n6 -.-> n15
n9 -.-> n15
n7 -.-> n15
n22 --> n15
n21 --> n22
n15 --> n20
n17 -.-> n15
end
subgraph sg1["When Executed by Another Workflow Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When Executed by Another Wor..", pos: "b", h: 48 }
n1@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n2@{ icon: "mdi:location-exit", form: "rounded", label: "Get many events in Google Ca..", pos: "b", h: 48 }
n3@{ icon: "mdi:location-exit", form: "rounded", label: "Create an event in Google Ca..", pos: "b", h: 48 }
n4@{ icon: "mdi:location-exit", form: "rounded", label: "Delete an event in Google Ca..", pos: "b", h: 48 }
n5@{ icon: "mdi:location-exit", form: "rounded", label: "Create an event in Google Ca..", pos: "b", h: 48 }
n18@{ icon: "mdi:robot", form: "rounded", label: "Calendar Agent", pos: "b", h: 48 }
n1 -.-> n18
n0 --> n18
n3 -.-> n18
n4 -.-> n18
n2 -.-> n18
n5 -.-> n18
end
subgraph sg2["Supabase Vector Stor Flow"]
direction LR
n10@{ icon: "mdi:cube-outline", form: "rounded", label: "Supabase Vector Store", pos: "b", h: 48 }
n11@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings OpenAI", pos: "b", h: 48 }
n12@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model2", pos: "b", h: 48 }
n16@{ icon: "mdi:robot", form: "rounded", label: "Knowledge Base Agent", pos: "b", h: 48 }
n11 -.-> n10
n12 -.-> n16
n10 -.-> n16
end
subgraph sg3["Email Agent Flow"]
direction LR
n13@{ icon: "mdi:message-outline", form: "rounded", label: "Send a message in Gmail", pos: "b", h: 48 }
n14@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model3", pos: "b", h: 48 }
n19@{ icon: "mdi:robot", form: "rounded", label: "Email Agent", pos: "b", h: 48 }
n14 -.-> n19
n13 -.-> n19
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n21,n0 trigger
class n15,n18,n16,n19 ai
class n9,n1,n12,n14 aiModel
class n6,n7,n8 ai
class n17 ai
class n10 ai
class n11 ai
classDef customIcon fill:none,stroke:none
class n20,n21 customIcon
Utmaningen: att göra WhatsApp-chattar till bokade tider
WhatsApp är där kunder faktiskt ber om hjälp, men det är en tuff plats att hantera bokning på. Du svarar på frågor, hoppar sedan in i Google Calendar för att kolla tillgänglighet, tillbaka till WhatsApp för att föreslå tider, och tillbaka igen för att boka luckan. Och om du dessutom förväntas ”låta konsekvent” som varumärke gör varje stressat svar saken värre. Det handlar inte bara om tid. Det är den mentala belastningen av ständiga kontextbyten, plus risken för dubbelbokningar när två personer frågar samtidigt.
Det bygger snabbt på. Här är var det faller isär i verkligheten:
- Du upprepar samma svar eftersom FAQ:er inte är samlade på ett ställe där teamet kan återanvända dem.
- Kalenderkollar sker en konversation i taget, så svarstiden sjunker så fort inkorgen blir stressig.
- Bokningsdetaljer kopieras manuellt, vilket bjuder in stavfel och ”Vänta, vilken tidszon?”-uppföljningar.
- Uppföljningar och bekräftelsemejl missas, särskilt när kunden bokar efter kontorstid.
Lösningen: AI-driven WhatsApp-support som kan boka i din kalender
Det här arbetsflödet kopplar Twilio WhatsApp till en AI-supportagent som kan förstå vad kunden vill och sedan ta rätt åtgärd automatiskt. Ett inkommande WhatsApp-meddelande fångas upp, struktureras (så att AI:n ser ett konsekvent format) och skickas till en orkestrerande agent. Därifrån avgör agenten om den ska svara från din FAQ-kunskapsbas, utföra en åtgärd i Google Calendar (lista tillgänglighet, skapa en bokning, ta bort en händelse) eller skriva och skicka ett mejl via Gmail. Till sist skickar arbetsflödet ett tydligt svar tillbaka till kunden på WhatsApp, så att dialogen stannar på ett ställe och resultatet kommer direkt.
Flödet startar med att WhatsApp-meddelandet kommer in via Twilio. Därefter hanterar OpenAI intention och routing, med Supabase-hämtning när användaren ställer vanliga frågor. Sedan slutför verktyg för Google Calendar och Gmail förfrågan, och arbetsflödet svarar på WhatsApp med resultatet.
Vad som förändras: före vs. efter
| Det här eliminerar du | Effekten du märker |
|---|---|
|
|
Effekt i verkligheten
Säg att du hanterar 15 WhatsApp-bokningsförfrågningar per dag. Manuell hantering tar vanligtvis cirka 10 minuter att läsa, förtydliga, kolla Google Calendar, bekräfta tiden och skicka ett tydligt svar, så du tappar ungefär 2,5 timmar dagligen. Med det här arbetsflödet är triggen omedelbar, AI:n dirigerar förfrågan på ett ögonblick och du granskar mest bara edge cases. I praktiken får många team ner det till cirka 2 minuter per förfrågan, vilket är nära 2 timmar tillbaka per dag.
Krav
- n8n-instans (testa n8n Cloud gratis)
- Självhostningsalternativ om du föredrar det (Hostinger fungerar bra)
- Twilio (WhatsApp aktiverat) för att ta emot och skicka WhatsApp-meddelanden.
- Google Calendar för att skapa, lista och ta bort bokningar.
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard) för intent-routing och svar.
- Gmail-konto för att skicka bekräftelser och uppföljningar.
- Supabase-projekt för lagring och hämtning av FAQ-kunskapsbas.
Svårighetsnivå: Medel. Du kopplar konton, klistrar in API-nycklar och justerar ett par prompts och fält.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Arbetsflödet steg för steg
Ett WhatsApp-meddelande når ditt Twilio-nummer. Twilio WhatsApp-triggern fångar den inkommande texten och startar körningen direkt, så du inte är beroende av att någon ”ser” en ny förfrågan.
Meddelandet normaliseras för konsekvent hantering. Ett Set Fields-steg strukturerar innehållet och standardiserar metadata (som avsändarinformation), vilket gör resten av arbetsflödet mer tillförlitligt och enklare att felsöka senare.
AI-agenten väljer rätt verktyg. WhatsApp Support Orchestrator använder OpenAI för att identifiera intention och dirigerar sedan förfrågan till kalenderoperationer, kunskapshämtning via Supabase vektorsökning, eller mejlskapande och utskick via Gmail.
Arbetsflödet svarar i WhatsApp med resultatet. Om en tid skapas kan svaret bekräfta tid och detaljer. Om det är en fråga svarar den utifrån dina sparade FAQ:er. Om det gäller mejl skickar den mejlet och talar om för kunden vad som hände.
Du kan enkelt ändra källan för FAQ-innehållet så att det matchar din verksamhet och justera bokningsreglerna (som längd eller buffertar) utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera Twilio-triggern
Det här arbetsflödet startar när ett WhatsApp-meddelande kommer in. Konfigurera triggern för att ta emot inkommande WhatsApp-meddelanden från Twilio.
- Lägg till noden WhatsApp Incoming Trigger i ert arbetsflöde.
- Öppna noden och anslut Twilio: Credential Required: Anslut era twilioApi-uppgifter.
- Behåll standarduppdateringen för inkommande händelser (
com.twilio.messaging.inbound-message.received). - Bekräfta körflödet: WhatsApp Incoming Trigger → Normalize Incoming Text.
Steg 2: Anslut triggern för överordnat arbetsflöde
Det här arbetsflödet stödjer även input från ett överordnat arbetsflöde för kalenderoperationer. Konfigurera arbetsflödets trigger så att den accepterar passthrough-data.
- Lägg till noden Triggered by Parent Flow.
- Ställ in Input Source till
passthrough. - Säkerställ kopplingen: Triggered by Parent Flow → Calendar Operations Agent.
Steg 3: Konfigurera normalisering av inkommande meddelanden
Normalisera råa WhatsApp-payloads till strukturerade fält som används av AI:n och svarssändaren.
- Lägg till noden Normalize Incoming Text.
- Konfigurera tilldelningar: usersMessage till
{{ $json.data.body }}, usersMobileNumber till{{ $json.data.from.replaceAll('whatsapp:', '') }}och WhatsappAiAgentNumber till{{ $json.data.to.replaceAll('whatsapp:', '') }}. - Koppla flödet: Normalize Incoming Text → WhatsApp Support Orchestrator.
Steg 4: Sätt upp kärnorkestreringen för AI
Huvudagenten förstår användarmeddelanden, koordinerar verktygsanrop och genererar WhatsApp-anpassade svar.
- Lägg till noden WhatsApp Support Orchestrator och ställ in Text till
{{ $json.usersMessage }}. - Anslut språkmodellen: OpenAI Chat Engine är ansluten som språkmodell för WhatsApp Support Orchestrator — Credential Required: Anslut era openAiApi-uppgifter i OpenAI Chat Engine.
- Aktivera minne: Postgres Chat Memory är ansluten som minne för WhatsApp Support Orchestrator — Credential Required: Anslut era postgres-uppgifter i Postgres Chat Memory.
- Säkerställ att verktygsrouting är ansluten från WhatsApp Support Orchestrator till Schedule Workflow Tool, FAQ Workflow Tool och Email Workflow Tool.
⚠️ Common Pitfall: Om AI:n inte svarar, verifiera att OpenAI Chat Engine har giltiga openAiApi-uppgifter och att sessionsnyckeln i Postgres Chat Memory använder {{ $json.usersMobileNumber }}.
Steg 5: Konfigurera underagenter för kalender, kunskap och e-post
Dessa agenter hanterar kalenderoperationer, kunskapsinhämtning och e-postleverans. De körs som verktyg som används av huvudorkestreraren.
- Kalenderverktyg: Konfigurera Retrieve Calendar Events med Operation
getAll, Time Min{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('After', ``, 'string') }}och Time Max{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Before', ``, 'string') }}. Lägg till Add Calendar Appointment, Remove Calendar Entry och Create Calendar Booking med Start{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Start', ``, 'string') }}och End{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('End', ``, 'string') }}. - Credential Required: Anslut era googleCalendarOAuth2Api-uppgifter på Retrieve Calendar Events, Add Calendar Appointment, Remove Calendar Entry och Create Calendar Booking.
- Kunskapsinhämtning: Konfigurera Supabase Vector Search med Mode
retrieve-as-tooloch anslut OpenAI Embeddings till den. Credential Required: Anslut era supabaseApi-uppgifter på Supabase Vector Search och openAiApi-uppgifter på OpenAI Embeddings. - E-postleverans: Konfigurera Gmail Dispatch Tool med Send To
{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('To', ``, 'string') }}, Subject{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}och Message{{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}. Credential Required: Anslut era gmailOAuth2-uppgifter på Gmail Dispatch Tool. - Språkmodeller: OpenAI Chat Core driver Calendar Operations Agent, OpenAI Chat Analyst driver Knowledge Retrieval Agent och OpenAI Chat Composer driver Email Delivery Agent. Credential Required: Anslut era openAiApi-uppgifter till var och en av dessa modellnoder.
⚠️ Common Pitfall: AI-verktygen är undernoder — uppgifter måste konfigureras på själva verktygsnoderna (t.ex. Retrieve Calendar Events, Supabase Vector Search, Gmail Dispatch Tool), inte på agentnoderna.
Steg 6: Konfigurera utdata för WhatsApp-svar
Det slutliga svaret skickas tillbaka till kunden via WhatsApp.
- Lägg till noden WhatsApp Response Sender.
- Ställ in To till
{{ $('Normalize Incoming Text').item.json.usersMobileNumber }}. - Ställ in From till
{{ $('Normalize Incoming Text').item.json.WhatsappAiAgentNumber }}och Message till{{ $json.output }}. - Aktivera To WhatsApp och anslut uppgifter: Credential Required: Anslut era twilioApi-uppgifter.
- Verifiera körflödet: WhatsApp Support Orchestrator → WhatsApp Response Sender.
Steg 7: Testa och aktivera ert arbetsflöde
Validera hela kedjan från inkommande WhatsApp till AI-svar och leverans av utdata.
- Klicka på Execute Workflow och skicka ett testmeddelande via WhatsApp till ert Twilio-nummer.
- Bekräfta att meddelandet normaliseras i Normalize Incoming Text och routas till WhatsApp Support Orchestrator.
- Kontrollera att svar returneras via WhatsApp Response Sender till ert telefonnummer.
- Testa kalenderoperationer genom att trigga en bokningsförfrågan och verifiera att händelser skapas via Create Calendar Booking.
- När allt fungerar, slå om arbetsflödet till Active för användning i produktion.
Saker att se upp med
- Twilio WhatsApp-inloggningsuppgifter kan löpa ut eller WhatsApp-avsändaren kan ändras. Om det slutar fungera, kontrollera först meddelandeloggarna i Twilio Console och inställningarna för WhatsApp-avsändare.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder misslyckas på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera utdata för alltid.
Vanliga frågor
Cirka en timme om dina Twilio-, Google Calendar- och Gmail-konton är klara.
Ja. Ingen kodning krävs, men någon bör vara bekväm med att koppla konton och klistra in API-nycklar i n8n.
Ja. n8n har ett gratis självhostat alternativ och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volymer. Du behöver också räkna med kostnader för OpenAI API-användning och Supabase-hosting om din kunskapsbas växer.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller självhosting på en VPS. För självhosting är Hostinger VPS prisvärt och hanterar n8n bra. Självhosting ger obegränsat antal körningar men kräver grundläggande serveradministration.
Börja med delarna ”Normalize Incoming Text” och ”WhatsApp Support Orchestrator”: det är där er tonalitet, affärsregler och routing ligger. Du kan byta ut Supabase Vector Search-kunskapsbasen mot en annan källa genom att ändra vilket hämtningsverktyg agenten anropar, samtidigt som WhatsApp-flödet är oförändrat. Vanliga justeringar är att lägga till buffertar mellan möten, begränsa bokningar till öppettider och anpassa formuleringen i uppföljningsmejlet för din exakta tjänst.
Oftast är det en ogiltig eller föråldrad Twilio-credential, eller att WhatsApp-sandboxen/numret inte är konfigurerat som triggern förväntar sig. Kontrollera Twilio Console-loggarna för att se om det inkommande meddelandet når Twilio först, och bekräfta sedan avsändarnummer och auth token i n8n. Om du nyligen bytte WhatsApp-nummer, uppdatera Set Fields-värdena så att svar skickas ut från rätt identitet.
Om du självhostar n8n finns ingen fast körningsgräns; det beror främst på din serverstorlek och API-rate limits från Twilio, Google Calendar och OpenAI.
Ofta, ja, eftersom det här flödet inte är en enkel ”meddelande in, meddelande ut”-zap. Du kombinerar intent-detektering, minne, kunskapshämtning och flera verktyg (kalender plus mejl) i en och samma konversation. n8n hanterar förgreningslogik utan att göra din automation till ett dussin betalda zaps, och du kan självhosta om volymen växer. Zapier eller Make kan fortfarande fungera om du bara behöver grundläggande skapande av tider från ett fast formulärmeddelande. Om du är osäker på vilken väg som är värd det för ditt team, prata med en automationsexpert.
När detta väl är igång slutar WhatsApp att vara en bokningsflaskhals och börjar fungera som en riktig reception. Ärligt talat är det svårt att gå tillbaka efter att du sett bokningar landa i Google Calendar automatiskt.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.