Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

WhatsApp + Cal.com-bokningar, loggat i Google Sheets

Rickard Andersson Partner, Nodenordic.se

Bokningsförfrågningar låter enkla tills du fastnar i en WhatsApp-tråd där du ställer samma frågor, kollar kalendern och ändå oroar dig för att missa ett meddelande. Sedan dyker någon inte upp eftersom de ”inte såg detaljerna”.

Om du kör kundsessioner slår WhatsApp-bokningsautomation snabbt igenom. Coacher märker det i DM:s på kvällen. Klinikadministratörer märker det i receptionen. Och konsulter märker det när leads svalnar efter för mycket fram och tillbaka.

Det här arbetsflödet gör ett enda WhatsApp-meddelande till en riktig Cal.com-bokning, loggar den i Google Sheets och skickar en påminnelse via SMS före besöket. Du får se hur det fungerar, vad du behöver och var team oftast kör fast.

Så fungerar den här automationen

Hela n8n-flödet, från trigger till slutlig output:

n8n Workflow Template: WhatsApp + Cal.com-bokningar, loggat i Google Sheets

Problemet: bokningschattar i WhatsApp skapar dolt kaos

De flesta verksamheter som tar emot bokningar tappar inte leads för att de saknar efterfrågan. De tappar leads för att bokningen går långsamt. En prospekt skriver på WhatsApp, du svarar, de svarar senare, du kollar Cal.com, föreslår tider, sedan ändras något och du börjar om. Samtidigt försöker du leverera sessioner, hantera löner eller ta hand om patienter. Den ”snabba chatten” blir ett litet projekt, och de projekten staplas varje vecka. Ännu värre: manuell schemaläggning bjuder in fel: två personer frågar efter samma slot, någons e-postadress blir felstavad eller så skickas aldrig påminnelsen.

Det bygger upp snabbt. Här är var det fallerar i verkligheten.

  • Du slutar med att ställa samma kvalificerande frågor om och om igen (namn, e-post, tjänst), och det stjäl fokus från jobbet du faktiskt säljer.
  • Att kontrollera tillgänglighet manuellt skapar förseningar, vilket gör att prospekt ofta bokar någon annanstans eller helt enkelt slutar svara.
  • Detaljer ligger utspridda på olika ställen, så du saknar en strukturerad logg över bokningar, statusar och vem som behöver uppföljning.
  • Påminnelser är lätta att glömma, och uteblivanden slår dubbelt eftersom du förlorar både tid och intäkter.

Lösningen: AI sköter chatten, Cal.com sköter tiden

Det här arbetsflödet startar i samma ögonblick som någon skriver till dig på WhatsApp. I stället för att du går in i ”vilken dag passar?”-läge svarar en AI-bokningsassistent direkt, ställer rätt frågor och håller samtalet framåt. När den vet vem personen är och vad de vill ha (namn, e-post, vald tjänst) kontrollerar den Cal.com-tillgänglighet via API:t, erbjuder giltiga tider och bokar besöket när kunden bekräftar. Sedan uppdaterar den en Google Sheets-logg så att du kan följa varje bokning på ett ställe. Till sist kör den schemalagt i bakgrunden, hittar sessioner som snart börjar och skickar en SMS-påminnelse cirka 2 timmar före besöket.

Flödet börjar med en WhatsApp-webhook och routar sedan meddelandet: vanlig chatt går till AI-agenten, medan bekräftelser går vidare i bokningsspåret. I bokningsspåret formaterar den datumet, skapar Cal.com-bokningsförfrågan, verifierar att det lyckas och svarar tillbaka på WhatsApp så att kunden vet att allt är bokat. Senare kontrollerar den timvisa påminnelsetriggern Google Sheets och skickar SMS till personer vars tid snart är inne.

Det här får du: automation vs. resultat

Exempel: så kan det se ut

Säg att du får 12 bokningsförfrågningar i veckan via WhatsApp. Manuellt kanske du lägger cirka 10 minuter per förfrågan på svar, att kolla Cal.com, bekräfta detaljer och skicka påminnelser, vilket blir ungefär 2 timmar i veckan. Med det här flödet sjunker ”människotiden” till snabb översyn: kanske 2 minuter för att granska specialfall eller undantag, alltså runt 20 minuter totalt. Resten kör i bakgrunden, inklusive SMS-påminnelsen cirka 2 timmar före sessionen.

Det här behöver du

  • n8n-instans (prova n8n Cloud gratis)
  • Självhostat alternativ om du föredrar det (Hostinger fungerar bra)
  • WhatsApp API-leverantör för att ta emot och skicka meddelanden.
  • Cal.com för att hämta lediga tider och skapa bokningar.
  • Google Sheets för att logga bokningar och påminnelsestatus.
  • OpenAI API-nyckel (hämta den från OpenAI API-dashboarden).
  • Cal.com API-nyckel (hämta den från Cal.coms utvecklarinställningar).
  • Inloggningsuppgifter till SMS-leverantör (hämta dem från din SMS-tjänst, till exempel sms77).

Svårighetsgrad: Medel. Du kopplar mest konton och klistrar in API-nycklar, men du behöver vara bekväm med att testa webhooks och läsa loggar när något fallerar.

Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).

Så fungerar det

Ett WhatsApp-meddelande triggar flödet. WhatsApp Intake Webhook tar emot inkommande chattmeddelanden från din leverantör (som 360dialog, Twilio eller Ultramsg) och skickar dem direkt vidare till routningslogik.

Meddelanden routas till ”chatt” eller ”bekräfta”. En Switch-nod separerar vanlig konversation från bekräftelse-liknande svar, så arbetsflödet vet när det ska fortsätta ställa frågor och när det faktiskt ska boka en tid.

AI-assistenten sköter dialogen. AI Scheduling Assistant använder en OpenAI-chattmodell plus en minnesbuffer för konversationen, vilket behåller kontext så att den inte frågar samma sak tre gånger. Den kan också anropa ett HTTP-verktyg för att hämta Cal.com-tillgänglighet under chatten.

Bokning och loggning sker automatiskt. När kunden bekräftar normaliserar flödet tidsstämplar, formaterar bokningsdatumet, skapar bokningsförfrågan i Cal.com och verifierar utfallet. Det uppdaterar Google Sheets med fält som namn, e-post, datum, tid, status och reminder_sent, och svarar sedan tillbaka på WhatsApp med resultatet.

Påminnelser körs i bakgrunden. En timvis schematrigger läser kommande bokningar från Google Sheets, filtrerar besök inom de kommande 2 timmarna, skickar en SMS-påminnelse och markerar sedan påminnelsen som skickad så att folk inte blir spammade.

Du kan enkelt justera påminnelsetiden så att den passar din verksamhet (1 timme innan, 24 timmar innan) utifrån dina behov. Se hela implementeringsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementering

Steg 1: konfigurera webhook-triggern

Det här arbetsflödet startar när ett WhatsApp-meddelande når er webhook och routar sedan konversationen baserat på bekräftelseintention.

  1. Lägg till och öppna WhatsApp Intake Webhook.
  2. Ställ in HTTP Method till POST och Path till 6438cd95-74cb-4f40-a1a5-853706fe96f6.
  3. Ställ in Response Mode till responseNode så att Return WhatsApp Reply kan svara.
  4. I Route Confirm vs Chat, behåll reglerna som använder ={{ $json.body.userInput }} för att dela upp ”confirm” kontra chat-meddelanden.

Tips: skicka en exempel-payload från WhatsApp till webhooken för att bekräfta att body.userInput och body.contactId finns innan ni fortsätter.

Steg 2: anslut Google Sheets

Flera noder läser och uppdaterar samma kalkylark för lead-insamling, bokningsdetaljer och spårning av påminnelser.

  1. Öppna Add Prospect to Sheet och välj ert kalkylark: Document [YOUR_ID] och Sheet gid=0 (“mes RDV”).
  2. Inloggningsuppgifter krävs: anslut era googleSheetsOAuth2Api-uppgifter i Add Prospect to Sheet.
  3. Öppna Update Sheet Booking Info och bekräfta samma Document [YOUR_ID] och Sheet gid=0.
  4. Inloggningsuppgifter krävs: anslut era googleSheetsOAuth2Api-uppgifter i Update Sheet Booking Info.
  5. Öppna Lookup Prospect Record och säkerställ att filtret använder ={{ $('WhatsApp Intake Webhook').item.json.body.contactId }} med Lookup Column satt till ID du contact.
  6. Inloggningsuppgifter krävs: anslut era googleSheetsOAuth2Api-uppgifter i Lookup Prospect Record, Flag Booking Confirmed, Read Upcoming Bookings och Mark SMS Sent.

⚠️ Vanlig fallgrop: Mark SMS Sent har Document och Sheet satta till =. Ersätt båda med ert faktiska kalkylarks-ID och blad (t.ex. [YOUR_ID], gid=0), annars kommer uppdateringen att misslyckas.

Steg 3: konfigurera AI-assistenten för schemaläggning

AI-agenten hanterar konversationen, sparar leads och anropar verktyg för att kontrollera tillgänglighet och uppdatera bokningsdata.

  1. Öppna AI Scheduling Assistant och behåll Text-inmatningen som =input : {{ $json.body.userInput }}.
  2. Granska System Message för att säkerställa att er tjänstemappning, ton och språkregler matchar ert erbjudande.
  3. Öppna GPT-4o Chat Engine och behåll modellen inställd på gpt-4o.
  4. Inloggningsuppgifter krävs: anslut era openAiApi-uppgifter i GPT-4o Chat Engine. Den här noden driver AI Scheduling Assistant.
  5. I Conversation Memory Buffer behåll Session Key satt till ={{ $json.body.contactId }} och Context Window Length till 50.

Tips: Conversation Memory Buffer, Add Prospect to Sheet, Update Sheet Booking Info och Retrieve Available Slots är AI-verktyg—uppgifter och åtkomst ska konfigureras i respektive nod, men deras körning styrs av AI Scheduling Assistant.

Steg 4: konfigurera skapande av bokning och WhatsApp-svar

När en användare bekräftar söker arbetsflödet upp deras post, normaliserar tiden, skapar bokningen och svarar med lyckat resultat eller fel.

  1. Bekräfta körvägen: WhatsApp Intake WebhookRoute Confirm vs ChatLookup Prospect RecordNormalize Booking TimestampCreate Booking RequestFormat Booking DateVerify Booking Outcome.
  2. I Normalize Booking Timestamp, behåll JS-koden som outputar normalized i UTC Z-format.
  3. I Create Booking Request, ställ in URL till https://api.cal.com/v2/bookings och behåll JSON body-uttrycket: { "eventTypeId": {{ $('Lookup Prospect Record').item.json['ID de l’événement'] }}, "start": "{{ $json.normalized }}", "attendee": { "name": "{{ $('Lookup Prospect Record').item.json.Nom }}", "email": "{{ $('Lookup Prospect Record').item.json.Courriel }}", "timeZone": "Europe/Paris" }, "bookingFieldsResponses": { "title": "{{ $('Lookup Prospect Record').item.json['Résumé'] }}" } }
  4. I headers för Create Booking Request, ställ in Authorization till Bearer [CONFIGURE_YOUR_TOKEN], Content-Type till application/json och cal-api-version till 2024-08-13.
  5. I Verify Booking Outcome, behåll kontrollerna för lyckat resultat och fel som använder ={{ $('Create Booking Request').item.json.status }}.
  6. Anpassa vid behov meddelandena i Respond: Booking Success och Respond: Booking Error under Response Body.
  7. I Flag Booking Confirmed, säkerställ att Réservé är satt till confirm och att ID du contact använder ={{ $('Lookup Prospect Record').item.json['ID du contact'] }}.

⚠️ Vanlig fallgrop: Platshållaren för Cal.com API-token [CONFIGURE_YOUR_TOKEN] finns i Create Booking Request och Retrieve Available Slots. Ersätt den med en giltig token, annars kommer alla bokningsåtgärder att misslyckas.

Steg 5: konfigurera loop för sms-påminnelser

Ett schema som körs varje timme läser kommande bokningar, filtrerar dem inom 2 timmar och skickar samt loggar sms-påminnelser.

  1. Öppna Hourly Appointment Trigger och behåll Interval satt till hours så att den körs varje timme.
  2. Öppna Read Upcoming Bookings och verifiera att den pekar på Document [YOUR_ID] och Sheet gid=0.
  3. I Filter Next 2h Visits, behåll JS-logiken som kontrollerar Réservé och Rappel SMS envoyé, och beräknar tvåtimmarsfönstret.
  4. I Dispatch SMS Reminder, ställ in To till ={{ $('Read Upcoming Bookings').item.json['Numéro de téléphone'] }} och Message till =Bonjour {{ $json.Nom }}, ceci est un petit rappel : votre rendez-vous pour {{ $json['Nom de l’événement'] }} est prévu dans les 2 prochaines heures .
  5. Inloggningsuppgifter krävs: anslut era sms77Api-uppgifter i Dispatch SMS Reminder.
  6. I Mark SMS Sent, säkerställ att Rappel SMS envoyé är satt till envoyer och att ID du contact använder ={{ $('Read Upcoming Bookings').item.json['ID du contact'] }}.

Tips: använd en testrad i ert ark med ett bokningsdatum inom de kommande 2 timmarna och Réservé = confirm för att validera påminnelseflödet.

Steg 6: testa och aktivera ert arbetsflöde

Validera varje väg—chatflöde, bokningsbekräftelse och påminnelser—innan ni går live.

  1. Klicka på Execute Workflow och skicka en WhatsApp-testpayload till WhatsApp Intake Webhook med body.userInput, body.contactId och body.phoneNumber.
  2. Bekräfta att AI Scheduling Assistant svarar via Return WhatsApp Reply och att leads sparas i Add Prospect to Sheet.
  3. Testa ett “confirm”-meddelande för att följa bokningsvägen och verifiera att Create Booking Request returnerar status: success och att Respond: Booking Success triggas.
  4. Trigga Hourly Appointment Trigger manuellt och verifiera att Dispatch SMS Reminder skickar ett meddelande och att Mark SMS Sent uppdaterar arket.
  5. När alla vägar fungerar, växla arbetsflödet till Active för att aktivera produktionsanvändning.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Inloggningsuppgifter hos WhatsApp-leverantören kan löpa ut eller kräva specifika behörigheter för att svara på meddelanden. Om saker slutar fungera: börja med att kontrollera leverantörens dashboard-loggar och webhookens leveranshistorik.
  • Om du använder Wait-noder eller extern rendering varierar processtider. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
  • OpenAI-prompter är ofta för generiska som standard. Lägg in din tjänstelista, bokningsregler och tonalitet i systemprompten tidigt, annars kommer du redigera output i all evighet.

Vanliga frågor

Hur lång tid tar det att sätta upp den här WhatsApp-bokningsautomation-automationen?

Cirka 45 minuter om du redan har dina WhatsApp-, Cal.com- och Sheets-konton redo.

Behöver jag programmeringskunskaper för att automatisera WhatsApp-bokningsautomation?

Nej. Du kopplar konton, lägger in API-nycklar och testar några exempelchattar. Den enda ”tekniska” delen är att verifiera att din webhook tar emot meddelanden.

Är n8n gratis att använda för det här arbetsflödet för WhatsApp-bokningsautomation?

Ja. n8n har ett gratis självhostat alternativ och en gratis 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 OpenAI API-användning samt avgifter för WhatsApp-/SMS-leverantörer.

Var kan jag hosta n8n för att köra den här automationen?

Två alternativ: n8n Cloud (hanterat, enklast att sätta upp) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och klarar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.

Kan jag anpassa det här arbetsflödet för WhatsApp-bokningsautomation för flera tjänster och olika påminnelsetider?

Ja, och det är en av de bästa anledningarna att använda n8n här. Uppdatera prompten i AI Scheduling Assistant så att den speglar dina tjänster, längder och regler (till exempel ”intake-samtal är 15 minuter, sessioner är 60”). Om du vill ha olika tillgänglighet per tjänst, justera HTTP-verktygsanropet Retrieve Available Slots så att det filtrerar på eventtyp eller kalender/teammedlem i Cal.com. För påminnelser: ändra filterlogiken för ”nästa 2 timmar” och schematriggerns frekvens, och fortsätt använda fältet reminder_sent i Google Sheets för att förhindra dubletter.

Varför fallerar min WhatsApp-anslutning i det här arbetsflödet?

Oftast är det WhatsApp-leverantörens setup, inte n8n. Bekräfta att din webhook-URL är korrekt, att leverantören faktiskt levererar events och att du svarar inom leverantörens tillåtna meddelandefönster. Om arbetsflödet tar emot meddelanden men inte kan svara, kontrollera leverantörens auth-token och behörigheter för att skicka meddelanden. Bekräfta också att din Route Confirm vs Chat-logik matchar exakt de svarsformat dina användare skickar (folk skriver ärligt talat sällan ”confirm” på samma sätt två gånger).

Hur många bokningar kan den här WhatsApp-bokningsautomation-automationen hantera?

Många, så länge dina leverantörer hänger med. På n8n Cloud begränsas du främst av dina månatliga körningar och planstorlek; vid self-hosting begränsas du av din server. I praktiken kan de flesta småföretag köra hundratals bokningar per månad utan problem och sedan skala upp genom att optimera prompter, minska onödiga anrop till Cal.com och batcha påminnelsekontroller i Google Sheets.

Är den här WhatsApp-bokningsautomation-automationen bättre än att använda Zapier eller Make?

Ofta, ja. Det här flödet behöver förgrening (chatt vs bekräfta), minne för konversationen, HTTP-anrop till Cal.com och ett schemalagt påminnelsejobb, vilket är där n8n brukar vara flexibelt och prisvärt. Zapier eller Make kan fortfarande fungera för enklare automationer som ”ny bokning → logga rad”, men de blir klumpiga när du vill ha en AI-agent som driver chatten. Om du är osäker, prata med en automationsexpert och beskriv din volym och dina bokningsregler.

När det här väl är live slutar bokningar bo i ditt huvud (eller i din chatt-historik). Arbetsflödet tar hand om repetitiva moment så att du kan fokusera på själva besöket.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal