Bokningsbekräftelser låter enkelt tills receptionen drunknar i WhatsApp-trådar, påminnelser glöms bort och ”vi ses imorgon” blir till en utebliven patient.
Den här WhatsApp-kalenderautomationen slår först mot klinikchefer, men receptionsteam och upptagna klinikägare känner av det lika mycket. Du får bekräftelser som skickas i tid, svar som hamnar rätt och ett schema som håller sig korrekt utan att någon behöver vaka över det.
Nedan ser du exakt vilket flöde som används, vad det åtgärdar och hur det håller WhatsApp-meddelanden och Google Calendar-bokningar synkade dag efter dag.
Så fungerar den här automationen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: WhatsApp + Google Calendar: bekräftelser sköts åt dig
flowchart LR
subgraph sg0["Assistente Clínica Flow"]
direction LR
n6@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Assistente Clínica", pos: "b", h: 48 }
n8@{ icon: "mdi:message-outline", form: "rounded", label: "Enviar alerta de cancelamento", pos: "b", h: 48 }
n11@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n12@{ icon: "mdi:memory", form: "rounded", label: "Postgres Chat Memory1", pos: "b", h: 48 }
n13@{ icon: "mdi:wrench", form: "rounded", label: "MCP Google Calendar2", pos: "b", h: 48 }
n17@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model1", pos: "b", h: 48 }
n18["<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/webhook.dark.svg' width='40' height='40' /></div><br/>Webhook1"]
n19@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields1", pos: "b", h: 48 }
n20@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n21@{ icon: "mdi:robot", form: "rounded", label: "OpenAI", pos: "b", h: 48 }
n22@{ icon: "mdi:web", form: "rounded", label: "Evolution API", pos: "b", h: 48 }
n23@{ icon: "mdi:cog", form: "rounded", label: "Convert to File", pos: "b", h: 48 }
n24@{ icon: "mdi:robot", form: "rounded", label: "OpenAI1", pos: "b", h: 48 }
n25@{ icon: "mdi:robot", form: "rounded", label: "AI Agent2", pos: "b", h: 48 }
n26@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model2", pos: "b", h: 48 }
n27@{ icon: "mdi:web", form: "rounded", label: "Evolution API2", pos: "b", h: 48 }
n28@{ icon: "mdi:wrench", form: "rounded", label: "CallToHuman", pos: "b", h: 48 }
n21 --> n7
n20 --> n7
n20 --> n24
n20 --> n22
n24 --> n25
n11 --> n27
n18 --> n19
n25 --> n7
n28 -.-> n7
n19 --> n20
n22 --> n23
n23 --> n21
n6 -.-> n7
n7 --> n11
n13 -.-> n7
n12 -.-> n7
n17 -.-> n11
n26 -.-> n25
n8 -.-> n7
end
subgraph sg1["Receber Mensagem Telegram Flow"]
direction LR
n0@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model1", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "Assistente clinica interno", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "Google Tasks", pos: "b", h: 48 }
n3@{ icon: "mdi:wrench", form: "rounded", label: "MCP Google Calendar", pos: "b", h: 48 }
n4["<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/telegram.svg' width='40' height='40' /></div><br/>Receber Mensagem Telegram"]
n5@{ icon: "mdi:memory", form: "rounded", label: "Postgres Chat Memory", pos: "b", h: 48 }
n16["<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/telegram.svg' width='40' height='40' /></div><br/>Telegram"]
n2 -.-> n1
n0 -.-> n1
n3 -.-> n1
n5 -.-> n1
n4 --> n1
n1 --> n16
end
subgraph sg2["Gatilho diário Flow"]
direction LR
n9@{ icon: "mdi:play-circle", form: "rounded", label: "Gatilho diário", pos: "b", h: 48 }
n10@{ icon: "mdi:robot", form: "rounded", label: "Assistente de confirmação", pos: "b", h: 48 }
n14@{ icon: "mdi:wrench", form: "rounded", label: "MCP GMAIL", pos: "b", h: 48 }
n15@{ icon: "mdi:wrench", form: "rounded", label: "MCP CALENDAR", pos: "b", h: 48 }
n29@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model2", pos: "b", h: 48 }
n30@{ icon: "mdi:web", form: "rounded", label: "REMINDER", pos: "b", h: 48 }
n14 -.-> n10
n15 -.-> n10
n9 --> n10
n29 -.-> n10
n10 --> n30
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 n4,n9 trigger
class n7,n11,n21,n24,n25,n1,n10 ai
class n6,n17,n26,n0,n29 aiModel
class n13,n28,n3,n14,n15 ai
class n12,n5 ai
class n20 decision
class n18,n22,n27,n30 api
classDef customIcon fill:none,stroke:none
class n18,n4,n16 customIcon
Problemet: bekräftelser faller mellan stolarna
De flesta kliniker tappar inte patienter för att vården är dålig. De tappar tid (och intäkter) för att kommunikationen är rörig. En receptionist bekräftar fem tider, blir avbruten av ett akut samtal och kommer sedan tillbaka till 30 olästa WhatsApp-meddelanden. Någonstans i den högen finns en patient som vill boka om, en annan som frågar ”vilken tid var det nu igen?”, och någon som aldrig svarar alls. Nu är din Google Calendar tekniskt sett ”korrekt”, men verkligheten är det inte. Personalen förbereder fel rum, fel behandlare – eller så dyker ingen upp. Ärligt talat är det dränerande.
Friktionen byggs på. Här är var det brukar brista i verkliga kliniker.
- Bekräftelser skickas inkonsekvent, så patienter som hade svarat ”ja” får ingen tydlig prompt.
- Förfrågningar om ombokning kommer in, men begravs i chatthistoriken och hanteras för sent för att tiden ska kunna återanvändas.
- WhatsApp-röstmeddelanden och foton saktar ner allt eftersom någon måste lyssna, tolka och skriva ner det igen.
- Kalenderändringar och chattuppdateringar glider isär, vilket skapar dubbelbokningar eller pinsamma ”vi ser dig inte inbokad”-ögonblick.
Lösningen: WhatsApp-bekräftelser som uppdaterar din kalender
Det här n8n-flödet fungerar som ett kommunikationslager för kliniken mellan WhatsApp, Telegram (för personal) och Google Calendar. Inkommande WhatsApp-meddelanden går först till en webhook och klassificeras sedan efter typ (text, bild, ljud, dokument). Om det är media hämtar flödet filen och använder AI för att göra den till användbar text (ljudtranskribering eller bildtolkning). Därefter hanterar en specialiserad WhatsApp-assistent vanliga patientärenden som att bekräfta, boka om och enklare frågor. Sedan ser en formateringsagent till att det utgående meddelandet följer en WhatsApp-vänlig struktur innan det skickas via Evolution API. Separat, varje vardagsmorgon, kontrollerar flödet morgondagens bokningar i Google Calendar och skickar proaktivt bekräftelsemeddelanden, så att ”vänligen bekräfta”-steget sker pålitligt även under stressiga dagar.
Flödet startar med två ingångar: patientmeddelanden i WhatsApp och personalförfrågningar i Telegram. Därefter routas dialogen via rätt AI-agent, bokningsdetaljer hämtas eller uppdateras via Google Calendar-verktyg och slutligen skickas en korrekt formaterad bekräftelse tillbaka till patienten (och ett tydligt svar tillbaka till personalen när de initierar ändringar).
Det här får du: automation vs. resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att din klinik har 25 bokningar imorgon. Manuell hantering – skicka en WhatsApp-påminnelse, vänta och sedan logga utfallet – tar ofta cirka 4 minuter per patient när man räknar in kontextbyten, alltså ungefär 100 minuter. Och det är på en ”smidig” dag. Med det här flödet går bekräftelserna ut automatiskt kl. 08:00 och svaren routas automatiskt till rätt agent. Du kanske lägger 10 minuter på att granska specialfall – inte nästan två timmar på att jaga folk.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Evolution API (WhatsApp) för att skicka och ta emot WhatsApp-meddelanden.
- Google Calendar för att läsa och uppdatera bokningsdetaljer.
- Telegram-bot för personalens kommandon och interna notifieringar.
- OpenAI API-nyckel (hämta den i din OpenAI API-dashboard).
- PostgreSQL-databas för beständiga sessioner med chatthistorik.
Svårighetsgrad: Medel. Du kopplar några autentiseringar, klistrar in API-nycklar och testar meddelandeflöden end-to-end.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (kostnadsfri 15-minuters konsultation).
Så fungerar det
Patientmeddelanden triggar flödet. En inkommande WhatsApp-webhook tar emot varje meddelande och fält mappas så att flödet får ett konsekvent format att arbeta med.
Innehållet förstås, även när det är rörigt. En switch skickar text direkt till WhatsApp-assistenten, medan ljud och bilder hämtas och konverteras så att AI kan transkribera eller tolka vad patienten faktiskt skickade.
AI-agenter hanterar avsikt och nästa steg. Clinic WhatsApp Assistant och Appointment Confirmation Agent avgör om patienten bekräftar, vill boka om eller behöver eskaleras. När personalen initierar ändringar från Telegram hanterar Internal Clinic Assistant de förfrågningarna och svarar tillbaka i Telegram.
Bekräftelser skickas ut i korrekt form. En Message Formatting Agent förbereder det slutliga WhatsApp-svaret och sedan skickar Evolution API-sändnoderna det. På vardagar kl. 08:00 körs den schemalagda triggern en batch med påminnelser för nästa dag så att bekräftelser sker konsekvent.
Du kan enkelt ändra tidpunkten för bekräftelser så att den matchar klinikens öppettider utifrån dina behov. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera triggrarna
Sätt upp inkommande WhatsApp-, Telegram- och schemalagda triggers som startar arbetsflödets tre kärnflöden.
- Öppna Incoming WhatsApp Webhook och ställ in HTTP Method till
POSToch Path tillevolutionAPIKORE. - Öppna Telegram Message Intake och bekräfta att den lyssnar efter updates av
message. Credential Required: anslut eratelegramApi-inloggningsuppgifter. - Öppna Weekday Schedule Trigger och ställ in cron-uttrycket till
0 8 * * 1-5(vardag 08:00).
evolutionAPIKORE.Steg 2: mappa och routa inkommande WhatsApp-data
Normalisera inkommande WhatsApp-payload och routa den efter innehållstyp (text, bild, ljud eller dokument).
- I Map Incoming Fields, lägg till tilldelningar för nyckelfält som number med
{{$json.body.data.key.remoteJid}}och text med{{$json.body.data.message.conversation}}. - I Map Incoming Fields, inkludera mediafält som image.url med
{{$json.body.data.message.imageMessage.url}}och audio.url med{{$json.body.data.message.audioMessage.url}}. - I Route by Content Type, verifiera att reglerna kontrollerar
{{$json.text}},{{$json.image.url}},{{$json.audio.url}}och{{$json.document.url}}förnotEmpty.
Steg 3: konfigurera mediabearbetning för ljud och bilder
Sätt upp spåren för ljudtranskribering och bildanalys innan svar genereras.
- I Evolution Media Fetch, ställ in Operation till
get-media-base64, Message ID till{{$json.key_id}}och Instance Name till{{$('Incoming WhatsApp Webhook').item.json.body.instance}}. Credential Required: anslut eraevolutionApi-inloggningsuppgifter. - I Binary File Converter, ställ in Operation till
toBinaryoch Source Property tilldata.base64. - I OpenAI Audio Transcriber, ställ in Resource till
audio, Operation tilltranscribeoch Binary Property Name till=data. Credential Required: anslut eraopenAiApi-inloggningsuppgifter. - I OpenAI Vision Analyzer, ställ in Resource till
image, Operation tillanalyze, Text tillTRANSCRIBE OS TEXTOS e describe a imagemoch Image URLs till{{$json.image}}. Credential Required: anslut eraopenAiApi-inloggningsuppgifter. - I Image Insight Agent, ställ in Text till
{{$json.output}}och säkerställ att den använder OpenRouter Chat Engine B som språkmodell. Credential Required: anslut eraopenRouterApi-inloggningsuppgifter till OpenRouter Chat Engine B.
Steg 4: konfigurera WhatsApp-kedjan för AI-svar
Bygg assistenten som tolkar meddelanden, använder minne, formaterar svaret och skickar det till WhatsApp.
- I Clinic WhatsApp Assistant, ställ in Text till
{{$json.text}}{{$json.output}}och granska systemmeddelandet för klinikens policy. - Koppla Postgres Memory Session som minne med Session Key satt till
{{ $('Incoming WhatsApp Webhook').item.json.body.data.key.id }}och Context Window Length till50. Credential Required: anslut erapostgres-inloggningsuppgifter på Clinic WhatsApp Assistant (minnesnoden är en undernod). - Ställ in språkmodellen för Clinic WhatsApp Assistant till OpenAI Chat Engine. Credential Required: anslut era
openAiApi-inloggningsuppgifter till OpenAI Chat Engine. - För verktyg som används av Clinic WhatsApp Assistant, säkerställ att Send Cancellation Alert är tillgängligt med Text
{{$fromAI('Text', ``, 'string')}}och Chat ID{{$fromAI('Chat_ID', ``, 'string')}}. Credential Required: anslut eratelegramApi-inloggningsuppgifter på Clinic WhatsApp Assistant (verktygens inloggningsuppgifter tillhör den överordnade agenten). - Öppna Run Sub-Workflow (Configure Required) och ställ in Workflow ID till ert eskaleringsarbetsflöde. Behåll indata mappade till
{{$fromAI('nome', ``, 'string')}},{{$fromAI('telefone', ``, 'string')}}och{{$fromAI('ultima_mensagem', ``, 'string')}}. - I Message Formatting Agent, ställ in Text till
{{$json.output}}och använd OpenRouter Chat Engine A som språkmodell. Credential Required: anslut eraopenRouterApi-inloggningsuppgifter till OpenRouter Chat Engine A. - I WhatsApp Message Dispatch, ställ in Remote JID till
{{$('Incoming WhatsApp Webhook').item.json.body.data.key.remoteJid}}, Message Text till{{$json.output}}och Instance Name till{{$('Incoming WhatsApp Webhook').item.json.body.instance}}. Credential Required: anslut eraevolutionApi-inloggningsuppgifter.
Steg 5: konfigurera flödet för intern assistent i Telegram
Sätt upp den interna Telegram-drivna assistenten för ombokningar som drivs av personal och påminnelser om uppgifter.
- I Internal Clinic Assistant, ställ in Text till
{{$json.message.text}}och verifiera systeminstruktionerna för interna ombokningar och uppgifter för inköpslista. - Tilldela OpenAI Chat Engine A som språkmodell. Credential Required: anslut era
openAiApi-inloggningsuppgifter till OpenAI Chat Engine A. - Anslut Postgres Conversation Memory med Session Key satt till
100och Context Window Length till10. Credential Required: anslut erapostgres-inloggningsuppgifter på Internal Clinic Assistant (minnesinloggningsuppgifter tillhör den överordnade agenten). - Säkerställ att verktygsnoder för denna agent är kopplade: MCP Calendar Access och Add Task Reminder. Credential Required: anslut era
googleTasksOAuth2Api-inloggningsuppgifter på Internal Clinic Assistant (verktyget Add Task Reminder är en undernod). - I Telegram Reply Sender, ställ in Text till
{{$json.output}}och Chat ID till{{$('Telegram Message Intake').item.json.message.chat.id}}. Credential Required: anslut eratelegramApi-inloggningsuppgifter.
Steg 6: konfigurera automatisering för bokningsbekräftelse
Automatisera dagliga meddelanden för bokningsbekräftelse baserat på kalendern.
- Öppna Appointment Confirmation Agent och bekräfta att prompten instruerar den att lista händelser för nästa dag och skicka påminnelser.
- Tilldela OpenAI Chat Engine B som språkmodell. Credential Required: anslut era
openAiApi-inloggningsuppgifter till OpenAI Chat Engine B. - Koppla MCP-verktygen MCP Calendar Tool och MCP Gmail Connector till Appointment Confirmation Agent så att den kan läsa schemat och relaterad kommunikation.
- I Appointment Reminder Sender, ställ in Remote JID till
[YOUR_EMAIL], Message Text till{{$fromAI("reminder")}}och Instance Name tillinstance name. Credential Required: anslut eraevolutionApi-inloggningsuppgifter.
[YOUR_EMAIL] och instance name i Appointment Reminder Sender annars kommer påminnelser inte att nå riktiga mottagare.Steg 7: granska kopplingarna i exekveringsflödet
Verifiera att nodordningen matchar avsedda exekveringsvägar för WhatsApp, Telegram och schemalagda påminnelser.
- Bekräfta WhatsApp-kedjan: Incoming WhatsApp Webhook → Map Incoming Fields → Route by Content Type → Clinic WhatsApp Assistant → Message Formatting Agent → WhatsApp Message Dispatch.
- Bekräfta ljudgrenen: Route by Content Type → Evolution Media Fetch → Binary File Converter → OpenAI Audio Transcriber → Clinic WhatsApp Assistant.
- Bekräfta bildgrenen: Route by Content Type → OpenAI Vision Analyzer → Image Insight Agent → Clinic WhatsApp Assistant.
- Bekräfta Telegram-kedjan: Telegram Message Intake → Internal Clinic Assistant → Telegram Reply Sender.
- Bekräfta de schemalagda påminnelserna: Weekday Schedule Trigger → Appointment Confirmation Agent → Appointment Reminder Sender.
Steg 8: testa och aktivera ert arbetsflöde
Validera varje trigger och bekräfta svaren innan ni slår på arbetsflödet i produktion.
- Använd Execute Workflow för att skicka ett testmeddelande till Incoming WhatsApp Webhook och bekräfta att svaret skickas av WhatsApp Message Dispatch.
- Skicka ett Telegram-meddelande för att verifiera att Telegram Message Intake triggar Internal Clinic Assistant och returnerar ett svar via Telegram Reply Sender.
- Kör Weekday Schedule Trigger manuellt för att bekräfta att Appointment Reminder Sender skickar en påminnelse med
{{$fromAI("reminder")}}. - När testerna lyckas, växla arbetsflödet till Active för att aktivera körning i produktion.
Vanliga fallgropar
- Google Calendar OAuth-uppgifter kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först din OAuth-medgivandeskärm i Google Cloud och tokenstatus.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Evolution API (WhatsApp)-instanser fallerar ofta på grund av fel instansnamn eller återkallad API-nyckel. Verifiera instansen och nyckeln i din Evolution-dashboard och testa sedan ett enstaka utgående meddelande igen.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera utdata för alltid.
Vanliga frågor
Räkna med cirka 60 minuter om dina inloggningsuppgifter är redo.
Nej. Du kopplar mest konton och klistrar in API-nycklar. Logiken är redan inbyggd i flödet.
Ja. n8n har ett gratis alternativ för egen drift och en kostnadsfri provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in kostnader för OpenAI API-användning, som vanligtvis är några cent per konversation beroende på meddelandelängd och media.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärt och hanterar n8n bra. Egen drift ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. Du kan ändra vardagstiden i noden ”Weekday Schedule Trigger” och sedan justera formuleringarna i ”Appointment Confirmation Agent” och ”Message Formatting Agent” så att det matchar klinikens tonalitet. Vanliga justeringar är att lägga till en rad om avbokningspolicy, stöd för flera språk och att skicka en Telegram-notis till personalen när en patient vill boka om.
Oftast är det ett Evolution API-autentiseringsproblem: fel instansnamn, utgången nyckel eller att WhatsApp-sessionen kopplats ner. Uppdatera Evolution-uppgifterna i n8n och skicka sedan ett enkelt utgående testmeddelande för att bekräfta leverans. Om inkommande meddelanden inte kommer fram, dubbelkolla webhook-URL:en som är konfigurerad i Evolution. Håll också koll på rate limits om du skickar många påminnelser samtidigt.
För en typisk liten klinik är ett par dussin upp till några hundra bekräftelser per dag realistiskt.
Ofta, ja – om du bryr dig om driftsäkerhet och flexibilitet. Det här flödet är inte bara ”skicka en påminnelse”; det routar meddelanden efter innehållstyp, bearbetar ljud och bilder och använder minne så att patientkonversationer inte återställs varje gång. n8n ger dig också förgreningar utan att du betalar per gren, och egen drift undviker körningsbegränsningar när volymen växer. Zapier eller Make kan gå snabbare för mycket enkla tvåstegspåminnelser, men blir snabbt klumpiga när du lägger till mediabearbetning och eskaleringsregler. Om du vill ha hjälp att välja, prata med en automationsexpert och matcha det mot din faktiska patientvolym.
När bekräftelserna går på autopilot slutar schemat vara en daglig gissningslek. Flödet tar hand om de repetitiva uppföljningarna så att personalen kan fokusera på patienterna.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.