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
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0@{ icon: "mdi:swap-vertical", form: "rounded", label: "Configure Availability", pos: "b", h: 48 }
n1["<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/>Incoming Vapi Webhook"]
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Tool Name Router", pos: "b", h: 48 }
n3["<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/code.svg' width='40' height='40' /></div><br/>Generate Slot Options"]
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/code.svg' width='40' height='40' /></div><br/>Filter Open Slots"]
n5["<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/>Return Available Times"]
n6@{ icon: "mdi:location-exit", form: "rounded", label: "Create Calendar Booking", pos: "b", h: 48 }
n7@{ icon: "mdi:location-exit", form: "rounded", label: "Retrieve Calendar Events", pos: "b", h: 48 }
n8["<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/>Send Booking Confirmation"]
n2 --> n7
n2 --> n6
n0 --> n2
n7 --> n3
n6 --> n8
n3 --> n4
n1 --> n0
n4 --> n5
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 n2 decision
class n1,n5,n8 api
class n3,n4 code
classDef customIcon fill:none,stroke:none
class n1,n3,n4,n5,n8 customIcon
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
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
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.
- Lägg till en Incoming Vapi Webhook-nod och ställ in HTTP Method på
POST. - Ställ in Path på
AI-Appointment-Setter-Template. - Ställ in Response Mode på
responseNodeså 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.
- I Retrieve Calendar Events ställer ni in Operation på
getAlloch Return All påtrue. - Ställ in Time Min på
{{ $('Incoming Vapi Webhook').item.json.body.message.toolCalls[0].function.arguments.initialSearchDateTime }}. - Ställ in Time Max på
{{ DateTime.fromISO($('Incoming Vapi Webhook').item.json.body.message.toolCalls[0].function.arguments.initialSearchDateTime).endOf('day').toISO() }}. - I Create Calendar Booking ställer ni in Start på
{{ $('Incoming Vapi Webhook').item.json.body.message.toolCalls[0].function.arguments.startDateTime }}och End på{{ $('Incoming Vapi Webhook').item.json.body.message.toolCalls[0].function.arguments.endDateTime }}. - Ställ in Summary på
Roof 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.
- I Configure Availability lägger ni till fälten och värdena: timeZone
America/New_York, workdayStartHour9, workdayEndHour17, meetingDurationMinutes30, bookingCadenceMinutes30, bufferBeforeMinutes15och bufferAfterMinutes15. - 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 tillcheckAvailabilityochbookAppointment. - 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.
- 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.
Steg 4: konfigurera noder för utdata och svar
Säkerställ att webhooken skickar korrekta svar tillbaka till Vapi baserat på tool call.
- I Return Available Times ställer ni in Respond With på
jsonoch behåller Response Body som{{ { "results": [ { "toolCallId": $json.toolCallId, "result": JSON.stringify({ "availableSlots": $json.availableSlots }) } ] } }}. - I Send Booking Confirmation ställer ni in Respond With på
jsonoch behåller Response Body som{{ { "results": [ { "toolCallId": $('Incoming Vapi Webhook').item.json.body.message.toolCalls[0].id, "result": "The appointment has been successfully booked." } ] } }}. - Verifiera körflödet: Incoming Vapi Webhook → Configure Availability → Tool Name Router → antingen Retrieve Calendar Events → Generate Slot Options → Filter Open Slots → Return Available Times eller Create Calendar Booking → Send Booking Confirmation.
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.
- Klicka på Execute Workflow och skicka en exempel-POST till URL:en för Incoming Vapi Webhook med en
checkAvailabilitytool call för att verifiera att Return Available Times returnerar en lista med formaterade tider. - Skicka en
bookAppointmenttool call för att bekräfta att Create Calendar Booking lägger till en händelse och att Send Booking Confirmation returnerar framgångsmeddelandet. - Kontrollera er Google Calendar efter den nya händelsen och bekräfta att sammanfattning och beskrivning matchar indata.
- När allt är verifierat, växla workflowet till Active för produktion.
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
Cirka 15–30 minuter om din Vapi-assistent och ditt Google-konto är redo.
Ingen kod krävs. Du kopplar främst konton och ändrar schemaläggningsinställningar som tidszon, arbetstider och möteslängd.
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.
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.
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.
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.
Många, så länge din n8n-plan och din server hänger med.
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.