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

Vapi + Google Calendar: samtal bokar åt dig

Rickard Andersson Partner, Nodenordic.se

Telefonleads väntar inte. Om någon ringer efter stängning, hamnar i röstbrevlådan eller får vänta i kö, blir den där ”heta” leaden kall till morgonen. Sedan sitter du fast med att jaga dem, kolla kalendrar och försöka lista ut vad de ville utifrån en halvskriven anteckning.

Ägare av serviceföretag känner det i magen. Det gör också marknadschefer som driver betalda samtal och driftskoordinatorer som försöker hålla schemat snyggt. Den här automatiseringen för Vapi Calendar booking gör samtal till faktiska bokningar, med namn, adress och tjänstetype korrekt insamlat.

Nedan ser du arbetsflödet, vad det automatiserar, resultaten du kan förvänta dig och vad du behöver för att få igång det i n8n utan att skriva kod.

Så fungerar automatiseringen

Hela n8n-flödet, från trigger till slutligt resultat:

n8n Workflow Template: Vapi + Google Calendar: samtal bokar åt dig

Problemet: telefonsamtal skapar röriga, missade bokningar

Att boka via telefonsamtal låter enkelt tills du gör det hela dagen. Du svarar, ställer samma frågor, och alt-tabbar sedan in i Google Kalender för att leta efter en tid som funkar med arbetstider, buffertar och verklig restid. Om du kör bil kladdar du ner anteckningar och ”fixar det senare”. Senare blir till i morgon. Och i morgon är när leaden går till konkurrenten som bokade direkt. Det värsta är den mentala belastningen. Du gör försäljning, schemaläggning och dataregistrering samtidigt, och det är där misstagen smyger sig in.

Det blir snabbt mycket. Här är var det oftast faller isär.

  • Du lägger cirka 10 minuter per samtal bara på att samla in detaljer och sedan upprepa dem för att bekräfta.
  • Att kontrollera tillgänglighet manuellt tar tid, särskilt när buffertar och möteslängd spelar roll.
  • Detaljer försvinner, så kalenderhändelsen blir ”Ny kund??” utan adress.
  • Missade samtal blir till missade intäkter eftersom det inte finns någon direkt väg till en bekräftad bokning.

Lösningen: Vapi-samtal som kontrollerar tillgänglighet och bokar i Google Kalender

Det här n8n-flödet kopplar en Vapi AI-röstagent till din Google Kalender så att möten bokas medan uppringaren fortfarande är kvar i samtalet. En webhook tar emot ”tool calls” från Vapi och routar sedan begäran utifrån vad agenten behöver göra: kontrollera tillgänglighet eller boka en tid. När någon frågar efter en tid hämtar flödet dina kalenderhändelser för den dagen, genererar möjliga tider baserat på dina öppettider och bokningskadenser, filtrerar bort krockar (inklusive buffertar) och returnerar en strukturerad lista med lediga tider till röstagenten. När uppringaren väljer en tid skapar flödet en Google Kalender-händelse som inkluderar kundens namn, fastighetsadress och tjänstetype i händelsedetaljerna och bekräftar sedan bokningen tillbaka till Vapi.

Flödet startar med ett Vapi tool call in i n8n. Därifrån tittar n8n antingen upp lediga tider i Google Kalender eller skapar händelsen direkt. Till sist får Vapi ett tydligt svar att säga till uppringaren, vilket gör att samtalet avslutas med en bekräftad tid, inte ett ”vi ringer tillbaka”.

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

Exempel: så här ser det ut

Säg att du hanterar 8 inkommande samtal per dag för offertförfrågningar eller servicebesök. Manuellt kan du lägga ungefär 10 minuter på att ställa frågor och ytterligare 5 minuter på att kontrollera Google Kalender och skapa händelsen, så du landar på runt 2 timmar per dag. Med det här flödet triggar uppringaren schemaläggningen under samtalet och du behöver bara granska kalendern senare för undantag. Det brukar göra ”2 timmar admin” till en snabb 10-minuters kontroll.

Det här behöver du

  • n8n-instans (testa n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • Vapi för att köra AI-röstagenten och verktygen.
  • Google Kalender för tillgänglighetskontroller och bokningshändelser.
  • Google OAuth-inloggning (skapa den i n8n Credentials).

Svårighetsgrad: Nybörjare. Du kopierar en webhook-URL, kopplar Google OAuth och ändrar några schemaläggningsinställningar som tidszon och arbetstider.

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

Så fungerar det

En uppringare triggar en Vapi-verktygsbegäran. Vapi skickar ett toolCalls-meddelande till din n8n Webhook ”Production URL”, vilket i praktiken är arbetsflödets ytterdörr.

Dina schemaregler appliceras först. Flödet laddar din tidszon, start- och sluttid för arbetsdagen, möteslängd, buffertminuter och bokningskadens så att tidsförslagen blir realistiska.

Tillgänglighet kontrolleras eller så skapas bokningen. En Switch routar baserat på exakt verktygsnamn (checkAvailability eller bookAppointment). Om det är en tillgänglighetsförfrågan läser n8n dagens Google Kalender-händelser, genererar möjliga tider, tar bort krockar och returnerar lediga tider till Vapi. Om det är en bokningsförfrågan skapar n8n Google Kalender-händelsen med de insamlade uppgifterna.

Vapi får ett strukturerat svar att läsa upp. Flödet svarar på webhooken med antingen listan över lediga tider eller en bokningsbekräftelse så att uppringaren får ett tydligt nästa steg direkt.

Du kan enkelt ändra arbetstider och möteslängd för att matcha olika tjänster (som offertbesök vs. installationer) utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.

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

Steg 1: konfigurera webhook-triggern

Konfigurera den inkommande webhooken så att Vapi kan skicka tool calls som driver bokningsflödet.

  1. Lägg till en Incoming Vapi Webhook-nod och ställ in HTTP MethodPOST.
  2. Ställ in PathAI-Appointment-Setter-Template.
  3. Ställ in Response ModeresponseNode så att workflowet svarar via Return Available Times eller Send Booking Confirmation.

Steg 2: anslut Google Calendar

Koppla upp kalenderåtkomst för både tillgänglighetskontroller och skapande av bokningar.

  1. I Retrieve Calendar Events ställer ni in OperationgetAll och Return Alltrue.
  2. Ställ in Time Min{{ $('Incoming Vapi Webhook').item.json.body.message.toolCalls[0].function.arguments.initialSearchDateTime }}.
  3. Ställ in Time Max{{ DateTime.fromISO($('Incoming Vapi Webhook').item.json.body.message.toolCalls[0].function.arguments.initialSearchDateTime).endOf('day').toISO() }}.
  4. I Create Calendar Booking ställer ni in Start{{ $('Incoming Vapi Webhook').item.json.body.message.toolCalls[0].function.arguments.startDateTime }} och End{{ $('Incoming Vapi Webhook').item.json.body.message.toolCalls[0].function.arguments.endDateTime }}.
  5. Ställ in SummaryRoof Inspection: {{ $('Incoming Vapi Webhook').item.json.body.message.toolCalls[0].function.arguments.clientName }} och Description på den angivna mallsträngen i noden.

Inloggningsuppgifter krävs: Anslut era Google Calendar-inloggningsuppgifter i Retrieve Calendar Events och Create Calendar Booking.

Steg 3: konfigurera noder för bearbetning och routning

Konfigurera tillgänglighetsparametrar, routa tool calls och generera alternativ för lediga tider.

  1. I Configure Availability lägger ni till fälten och värdena: timeZone America/New_York, workdayStartHour 9, workdayEndHour 17, meetingDurationMinutes 30, bookingCadenceMinutes 30, bufferBeforeMinutes 15 och bufferAfterMinutes 15.
  2. I Tool Name Router lägger ni till två regler som läser {{ $('Incoming Vapi Webhook').item.json.body.message.toolCalls[0].function.name }} och routar till checkAvailability och bookAppointment.
  3. Bekräfta att Tool Name Router skickar utdata till Retrieve Calendar Events för tillgänglighetskontroller och till Create Calendar Booking för bokningsförfrågningar.
  4. Behåll JavaScript-koden i Generate Slot Options och Filter Open Slots som den är för att beräkna möjliga tider, ta bort konflikter och formatera svaret.

Tips: Tidsfönstret och buffertarna styrs helt i Configure Availability—justera dessa värden innan ni testar för att undvika oväntade tidsförslag.

Steg 4: konfigurera noder för utdata och svar

Säkerställ att webhooken skickar korrekta svar tillbaka till Vapi baserat på tool call.

  1. I Return Available Times ställer ni in Respond Withjson och behåller Response Body som {{ { "results": [ { "toolCallId": $json.toolCallId, "result": JSON.stringify({ "availableSlots": $json.availableSlots }) } ] } }}.
  2. I Send Booking Confirmation ställer ni in Respond Withjson och behåller Response Body som {{ { "results": [ { "toolCallId": $('Incoming Vapi Webhook').item.json.body.message.toolCalls[0].id, "result": "The appointment has been successfully booked." } ] } }}.
  3. Verifiera körflödet: Incoming Vapi WebhookConfigure AvailabilityTool Name Router → antingen Retrieve Calendar EventsGenerate Slot OptionsFilter Open SlotsReturn Available Times eller Create Calendar BookingSend Booking Confirmation.

⚠️ Vanlig fallgrop: Om Vapi inte får något svar, bekräfta att Incoming Vapi Webhook är inställd på responseNode och att både Return Available Times och Send Booking Confirmation är korrekt anslutna.

Steg 5: testa och aktivera ert workflow

Validera end-to-end-beteendet för både tillgänglighets- och bokningsspår innan ni går live.

  1. Klicka på Execute Workflow och skicka en exempel-POST till URL:en för Incoming Vapi Webhook med en checkAvailability tool call för att verifiera att Return Available Times returnerar en lista med formaterade tider.
  2. Skicka en bookAppointment tool call för att bekräfta att Create Calendar Booking lägger till en händelse och att Send Booking Confirmation returnerar framgångsmeddelandet.
  3. Kontrollera er Google Calendar efter den nya händelsen och bekräfta att sammanfattning och beskrivning matchar indata.
  4. När allt är verifierat, växla workflowet till Active för produktion.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Google Kalender OAuth-inloggningar kan gå ut eller behöva specifika behörigheter. Om något slutar fungera, kolla först n8n Credentials-sidan och Googles inställningar för consent/scope.
  • Om du justerar buffertar, kadens eller arbetstider kan du råka generera noll giltiga tider. När inga tider returneras, bekräfta din tidszon och att det begärda tidsfönstret innehåller minst en framtida tid.
  • Vapi-verktygsnamn måste matcha exakt (checkAvailability och bookAppointment) annars routar Switch ingenting. Ärligt talat är det här den vanligaste ”den gör ingenting”-orsaken.

Vanliga frågor

Hur lång tid tar det att sätta upp den här automatiseringen för Vapi Calendar booking?

Cirka 15–30 minuter om din Vapi-assistent och ditt Google-konto är redo.

Behöver jag kunna koda för att automatisera Vapi Calendar booking?

Ingen kod krävs. Du kopplar främst konton och ändrar schemaläggningsinställningar som tidszon, arbetstider och möteslängd.

Är n8n gratis att använda för det här Vapi Calendar booking-flödet?

Ja. n8n har ett gratis self-hosted-alternativ och en gratis testperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volymer. Du behöver också räkna in Vapi-kostnader för samtal och eventuell AI-röst/modellanvändning kopplad till din Vapi-setup.

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

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

Kan jag anpassa det här Vapi Calendar booking-flödet för olika tjänster eller olika jobblängder?

Ja, och det är en av de bästa anledningarna att använda den här mallen. Uppdatera värdena i ”CONFIGURATION (EDIT ME)” för att ändra meetingDurationMinutes, buffertar, arbetstider och bokningskadens. Du kan också ändra formatet för Google Kalender-händelsen i steget ”Book Appointment in Calendar” så att varje tjänst skriver en annan rubrik eller beskrivning.

Varför misslyckas min Vapi-anslutning i det här flödet?

Oftast beror det på att Vapi Server URL inte matchar Webhook Production URL i n8n. Bekräfta också att Vapi bara skickar toolCalls i Server Messages, eftersom andra meddelandetyper kan hindra flödet från att ta emot den function call-payload du förväntar dig. Om webhooken tar emot data men inget routas, kontrollera verktygsnamnen. De måste vara exakt checkAvailability och bookAppointment för att Switch ska skicka trafiken ner rätt väg.

Hur många bokningar kan den här automatiseringen för Vapi Calendar booking hantera?

Många, så länge din n8n-plan och din server hänger med.

Är den här automatiseringen för Vapi Calendar booking bättre än att använda Zapier eller Make?

Ofta, ja, eftersom det här flödet bygger på förgrenad logik (tillgänglighetskontroll vs. bokning) och noggrann generering av tidsförslag, vilket blir klumpigt i enklare ”om detta så det”-verktyg. n8n ger dig också ett self-hosted-alternativ, så du betalar inte per litet steg när volymen växer. En annan praktisk vinst är kontroll: du kan ha dina buffertar, kadens och formateringslogik på ett ställe och versionshantera det när verksamheten förändras. Zapier eller Make kan fortfarande fungera om du bara behöver ”skapa en händelse när ett formulär skickas in”, men routing av röstverktyg är en annan best. Vill du ha hjälp att välja, prata med en automatiseringsexpert så sanity-checkar vi bästa vägen.

När detta är live slutar bokningar vara ett spel av telefonjakt och kalenderjonglering. Flödet tar hand om det repetitiva schemaläggningsarbetet så att du kan fokusera på själva leveransen.

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