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

VAPI + PostgreSQL: bekräfta bokningar i varje samtal

Rickard Andersson Partner, Nodenordic.se

När telefonen ringer mitt under service är det lätt att missa detaljer. Ett namn stavas fel, tiden missförstås, eller ett “klart, vi kan 19:30” som slutar i en oavsiktlig dubbelbokning.

Den här VAPI-bokningsautomationen slår hårdast mot restaurangägare, men FOH-ansvariga och små team med minimal bemanning känner av den också. Du kommer att behöva bekräfta bokningar på varje samtal, även när ingen kan svara.

Den här guiden går igenom vad flödet gör, vad du behöver och hur delarna hänger ihop i n8n så att du kan hantera bokningar som ett väloljat system.

Så fungerar automationen

Här är hela workflowet du kommer att sätta upp:

n8n Workflow Template: VAPI + PostgreSQL: bekräfta bokningar i varje samtal

Varför det här spelar roll: missade samtal och stökiga bokningsloggar

Restauranger tappar inte bokningar för att maten är dålig. De tappar bokningar för att processen är kaotisk. Telefonen ringer medan du placerar gäster, springer ut med dryck, löser ett leveransproblem och någon ropar “Bekräftade vi sällskapet på åtta?” Du kluddar ner på papper och senare skriver någon in det igen (ibland). Om två personer tar samtal får du två versioner av sanningen. Och sen kommer den jobbiga delen: att ringa tillbaka en gäst och säga att ni inte kan hålla tiden ni redan kom överens om.

Det bygger upp snabbt. Här brukar det oftast skapa fel.

  • Samtal går till röstbrevlådan under rusning, vilket gör att bokningar försvinner i det tysta.
  • Tillgänglighetskontroller sker “i någons huvud”, så dubbelbokningar smyger sig in på fullbokade kvällar.
  • Handskrivna anteckningar matas in senare, och felen dyker upp vid sämsta möjliga tillfälle.
  • Det finns ingen strukturerad logg över vad som lovats, så personalen lägger tid på att bråka med kalendern i stället för att ta hand om gäster.

Det du bygger: en virtuell receptionist som kontrollerar tillgänglighet och bekräftar bokningar

Det här workflowet gör VAPI till en pålitlig receptionist som alltid är på. Den som ringer uppger grunderna (namn, önskad tid, antal personer). n8n tar emot bokningsförfrågan via en webhook och kontrollerar sedan din PostgreSQL-databas för att se om det finns kapacitet vid den tiden. Om det finns plats skriver n8n in bokningen i Postgres och skickar direkt en bekräftelse tillbaka till VAPI så att den som ringer hör ett tydligt “du är bokad”. Om det inte finns plats skickar den ett tillgänglighetssvar så att den som ringer kan välja en annan tid i stället för att gissa. Slutresultatet är enkelt: färre missade samtal, färre dubbelbokningar och mer korrekt formaterad bokningsdata som teamet kan lita på.

Workflowet startar med en inkommande bokningswebhook från VAPI. Sedan gör Postgres grovjobbet: en fråga för att kontrollera tillgänglighet och en annan åtgärd för att spara bokningen. Till sist svarar n8n tillbaka till VAPI med en bekräftelse eller ett alternativ baserat på vad databasen säger.

Det du bygger

Förväntade resultat

Säg att ni får ungefär 20 bokningssamtal en fredag. Om varje samtal tar kanske 5 minuter att besvara, kontrollera tillgänglighet och skriva ner, är det cirka 100 minuter av personalens uppmärksamhet, mitt i serveringen. Med det här workflowet automatiseras delen “kontrollera och registrera”. Personalen kliver bara in vid specialfall, medan bekräftelser sker på sekunder efter att den som ringer lämnat sina uppgifter. Det är ungefär en och en halv timme tillbaka på er mest intensiva dag, plus färre misstag att rätta till senare.

Innan du börjar

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
  • VAPI för att hantera telefonsamtal och samla in uppgifter
  • PostgreSQL för att lagra bokningar och kontrollera tillgänglighet
  • VAPI API-uppgifter (hämta dem i din VAPI-dashboard)

Svårighetsgrad: Medel. Du klistrar in uppgifter, importerar workflowet och mappar ett par fält mot dina databaskolumner.

Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).

Steg för steg

Den som ringer triggar en VAPI-webhook. VAPI samlar in de bokningsuppgifter du bryr dig om (oftast namn, antal personer och tid) och skickar dem till n8n som en strukturerad payload.

n8n kontrollerar din verkliga tillgänglighet i PostgreSQL. Workflowet använder en Postgres-fråga (“Fetch Table Availability”) för att slå upp om tidsslottet kan hantera sällskapets storlek utifrån reglerna du lagrar i databasen.

Antingen svarar det med alternativ eller sparar bokningen. Om tillgängligheten är tajt skickar n8n ett “tillgänglighetssvar” tillbaka till VAPI så att den som ringer kan välja en annan tid. Om det finns plats sparar den andra webhook-grenen bokningsraden i Postgres.

Den som ringer får en omedelbar bekräftelse. n8n skickar ett sista webhook-svar (“Send Booking Confirmation”) så att VAPI kan bekräfta bokningen i samma samtal, utan “vi ringer tillbaka”.

Du kan enkelt justera tillgänglighetslogiken för att stödja bordstyper, sittområden eller specialevenemang utifrån dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-implementeringsguide

Steg 1: konfigurera webhook-triggern

Konfigurera de två inkommande webhook-endpoints som startar respektive bokningsflöde.

  1. Lägg till och öppna Incoming Booking Webhook A.
  2. Ställ in HTTP MethodPOST.
  3. Ställ in Path027f0f14-93f4-42ff-90a7-715f23316a86.
  4. Ställ in Response ModeresponseNode så att Return Availability Reply kan svara.
  5. Lägg till och öppna Incoming Booking Webhook B.
  6. Ställ in HTTP MethodPOST.
  7. Ställ in Path2f7eff83-2e85-45ee-b544-7f889ca3ad07.
  8. Ställ in Response ModeresponseNode så att Send Booking Confirmation kan svara.

Ha båda webhook-URL:erna nära till hands för ert anropssystem eller upstream-tjänst.

Steg 2: anslut Postgres för tillgänglighetsuppslag

Konfigurera databasens läs-steg som returnerar bordstillgänglighet.

  1. Öppna Fetch Table Availability.
  2. Inloggningsuppgifter krävs: Anslut era postgres-credentials.
  3. Ställ in Operationselect.
  4. Ställ in Schemapublic.
  5. Ställ in Tabletable_id.

⚠️ Vanlig fallgrop: Säkerställ att tabellen table_id innehåller ett fält available, eftersom Return Availability Reply använder {{ $json.available }}.

Steg 3: konfigurera tillgänglighetssvaret

Returnera ett JSON-svar på webhook-förfrågan om tillgänglighet.

  1. Öppna Return Availability Reply.
  2. Ställ in Respond Withjson.
  3. Ställ in Response Body={ "results": [ { "toolCallId": "{{ $('Incoming Booking Webhook A').item.json.body.message.toolCalls[0].id }}", "result": "{{ $json.available }}" } ] }.

Den här noden triggas efter Fetch Table Availability enligt definitionen i exekveringsflödet.

Steg 4: lagra bokningsposter

Upserta bokningsdetaljerna till Postgres innan ni skickar en bekräftelse.

  1. Öppna Store Booking Record.
  2. Inloggningsuppgifter krävs: Anslut era postgres-credentials.
  3. Ställ in Operationupsert.
  4. Ställ in Schemapublic.
  5. Ställ in Tabletable_id.

Noden använder Auto Map Input Data för att mappa fält. Bekräfta att den inkommande webhook-payloaden matchar ert tabellschema.

Steg 5: konfigurera bokningsbekräftelsesvaret

Returnera en JSON-bekräftelse efter att bokningen har lagrats.

  1. Öppna Send Booking Confirmation.
  2. Ställ in Respond Withjson.
  3. Ställ in Response Body={ "results": [ { "toolCallId": "{{ $('Incoming Booking Webhook B').item.json.body.message.toolCalls[0].id }}", "result": "{{ $json.status }}" } ] }.

Enligt exekveringsflödet: Store Booking RecordSend Booking Confirmation.

Steg 6: testa och aktivera ert arbetsflöde

Validera båda webhook-sökvägarna och aktivera sedan arbetsflödet för produktion.

  1. Klicka på Execute Workflow och skicka en POST-förfrågan till Incoming Booking Webhook A med en exempel-payload.
  2. Bekräfta att Fetch Table Availability returnerar data och att Return Availability Reply svarar med en JSON-body som innehåller result och toolCallId.
  3. Skicka en POST-förfrågan till Incoming Booking Webhook B med bokningsdata.
  4. Verifiera att Store Booking Record upsertar till Postgres och att Send Booking Confirmation returnerar ett JSON-svar med {{ $json.status }}.
  5. Slå om arbetsflödet till Active när testerna är godkända.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Felsökningstips

  • VAPI-uppgifter kan gå ut eller kräva specifika behörigheter. Om det slutar fungera: kontrollera först dina VAPI-projektinställningar och konfigurationen för webhook-destinationen.
  • Om du ser “tillgängligt” när det uppenbart inte är det, filtrerar PostgreSQL-frågan oftast på fel tidsformat. Kontrollera hur din databas lagrar tidszoner och hur VAPI skickar den önskade bokningstiden.
  • Standardprompter i AI-noder är generiska. Lägg in ert varumärkesspråk tidigt, annars kommer du redigera svar för alltid, särskilt om du använder AI Agent för att svara på restaurangfrågor med en specifik ton.

Snabba svar

Hur lång tid tar det att sätta upp den här VAPI-bokningsautomationen?

Cirka en timme om din Postgres-tabell är klar.

Krävs det kodning för den här automationen för bokningsbekräftelse?

Nej. Du kopplar ihop VAPI och PostgreSQL och mappar sedan fält som tid och antal personer.

Är n8n gratis att använda för det här workflowet för VAPI-bokningsautomation?

Ja. n8n har ett gratis alternativ för egen hosting 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 VAPI-användningskostnader och eventuell AI-användning om du aktiverar en OpenAI Chat Model för frågor och svar.

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

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

Kan jag anpassa det här workflowet för VAPI-bokningsautomation för andra användningsfall?

Ja, och det bör du. De flesta anpassningar sker i Postgres-frågan “Fetch Table Availability” och insert-steget “Store Booking Record”, eftersom det är där dina affärsregler bor. Vanliga justeringar är att lägga till särskilda önskemål (barnstol, uteservering), blockera eventkvällar och ändra vad som räknas som “tillgängligt” beroende på sällskapets storlek. Du kan också justera VAPI:s indatafält så att den som ringer bekräftar saker som allergier eller ett nummer för återuppringning.

Varför fallerar min VAPI-anslutning i det här workflowet?

Oftast är det webhook-URL:en eller en utgången uppgift i VAPI. Bekräfta att VAPI pekar på rätt n8n production-webhook och spara sedan VAPI API-uppgifterna på nytt i n8n. Om webhooken triggar men dina fält är tomma beror det ofta på att JSON-nycklarna som VAPI skickar inte matchar det som din n8n-mappning förväntar sig. Kontrollera också rate limiting om du lasttestar med många samtal under en kort tidsperiod.

Vilken volym kan det här workflowet för VAPI-bokningsautomation hantera?

På n8n Cloud Starter kan du vanligtvis hantera tusentals webhook-körningar per månad, och högre nivåer skalar därifrån. Om du kör egen hosting finns inget tak för antal körningar (det beror på din server). I praktiken är Postgres och din tillgänglighetsfråga de största flaskhalsarna, inte n8n. För de flesta restauranger känns flödet omedelbart eftersom varje samtal bara kör ett par databasoperationer.

Är den här VAPI-bokningsautomationen bättre än att använda Zapier eller Make?

Ofta, ja, eftersom databasförst-logik är där Zapier och Make lätt blir klumpiga (och dyra) när du lägger till förgreningar. n8n hanterar Postgres-frågor snyggt, vilket är kärnan i att förhindra dubbelbokningar. Du får också möjligheten att köra egen hosting, vilket spelar roll om samtalen toppar vid event eller helger. Om du bara behöver “logga ett samtal någonstans” duger Zapier. Om du behöver “kontrollera kapacitet, sedan skriva, sedan bekräfta” passar n8n bättre. Prata med en automationsexpert om du vill ha hjälp att välja.

När det här väl rullar slutar bekräftelser att vara en stressgrej. Workflowet tar hand om de repetitiva delarna så att teamet kan fokusera på värdskapet.

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