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

Postgres + Google Kalender: stoppa spökbokningar

Rickard Andersson Partner, Nodenordic.se

Spökbokningar är den värsta sortens onödigt manuellt arbete. Kalendern ser full ut, förare hamnar i kö, och sedan dyker ingen upp – så supporten fastnar i efterarbete som borde ha skett automatiskt (och tidigare).

Driftschefer märker det när tillgängligheten är fel, och supportansvariga märker det när “Kan du avboka min bokning?” blir dagens vanligaste meddelande. Till och med en ägare till ett litet taxibolag hamnar i praktiken med att övervaka det här kaoset. Den här automatiseringen för bokningsavbokning flaggar inaktuella bokningar i Postgres och frigör tiden i Google Kalender utan att någon behöver vakta den.

Du får se vad som triggar den, vad den kontrollerar och hur Postgres + Google Kalender-integrationen håller avbokningar konsekventa (plus några fallgropar som brukar ställa till det för team).

Så fungerar automatiseringen

Se hur den här löser problemet:

n8n Workflow Template: Postgres + Google Kalender: stoppa spökbokningar

Utmaningen: spökbokningar täpper igen kalendern

Om ditt bokningsflöde berör både en databas och en kalender har du troligen sett mismatchen. En resenär startar en bokning, den hamnar som OPEN (eller HOLD) och tiden blockeras i Google Kalender. Sedan försvinner personen. Tio minuter senare ser tillgängligheten fortfarande “upptagen” ut, dispatch-logiken börjar bete sig märkligt och teamet svarar på uppföljningar som i praktiken betyder “snälla ångra det systemet gjorde”. Än värre: manuell städning blir inkonsekvent. En person avbokar i Postgres men glömmer kalenderhändelsen. En annan tar bort händelsen men uppdaterar inte status. Nu får du brus i rapporteringen och kunder som blir förvirrade.

Det här eskalerar snabbt. Här är var det faller isär i verklig drift.

  • Blockerade tider i kalendern minskar kapaciteten, även när ingen körning kommer att ske.
  • Supportmedarbetare slösar cirka 1–2 timmar per dag på repetitiva “avboka och bekräfta”-meddelanden.
  • Statusglidning uppstår när Postgres säger CANCELLED men Google Kalender-händelsen fortfarande finns kvar.
  • Uppföljningar efter köp blir fler eftersom kunder inte litar på den första bekräftelsen.

Lösningen: avboka automatiskt inaktuella bokningar och frigör tiden

Det här arbetsflödet körs schemalagt och fungerar som en tyst driftassistent i bakgrunden. Var 5:e minut kontrollerar det Postgres efter bokningar som fortfarande är OPEN eller på HOLD. Sedan utvärderar det om varje bokning är “inaktuell” (i demouppsättningen betraktas OPEN-bokningar äldre än cirka 10 minuter som utgångna). När en bokning uppfyller kriterierna uppdaterar n8n bokningsstatus i Postgres till CANCELLED och tar därefter bort motsvarande Google Kalender-händelse så att tillgängligheten blir korrekt igen. Slutligen kan det trigga en uppföljande åtgärd via ett underarbetsflöde, och valfritt generera ett kundmeddelande på flera språk med en AI-agent (så att kunden får en konsekvent avbokningsbekräftelse utan att ditt team behöver skriva den varje gång).

Arbetsflödet startar med en tidsstyrd trigger och en databasfråga. Därifrån mappar det bokningsdata, routar baserat på status och validerar regler för utgång. När en bokning har gått ut uppdateras Postgres, Google Kalender-händelsen raderas och kundsvaret kan skickas via Telegram (med AI om du vill ha flerspråkig support).

Vad som förändras: före vs. efter

Praktisk effekt i verkligheten

Säg att du hanterar 30 övergivna bokningar per dag. Manuellt tar en snabb “hitta bokningen, avboka den, radera tiden i kalendern, meddela kunden” kanske 5 minuter styck – så du bränner cirka 2–3 timmar dagligen. Med det här arbetsflödet lägger du ungefär 10 minuter i början på att sätta regler, sedan kör det var 5:e minut i bakgrunden. Kalendern rensar sig själv och avbokningsmeddelandet skickas automatiskt, så teamet behöver bara hantera undantagsfallen.

Krav

  • n8n-instans (testa n8n Cloud gratis)
  • Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
  • Postgres för att lagra bokningar och statusar.
  • Google Kalender för att blockera och frigöra tidsluckor.
  • Telegram för att skicka kunduppdateringar (valfritt).
  • OpenAI (eller Grok Chat Model) för flerspråkiga svar (valfritt).

Kunskapsnivå: Medel. Du kopierar SQL, kopplar in autentisering och justerar några villkor som “äldre än 10 minuter”.

Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).

Flödet i arbetsflödet

En tidsstyrd kontroll körs automatiskt. Schedule Trigger kör var 5:e minut, så du slipper vara beroende av att en person upptäcker inaktuella bokningar.

Bokningar hämtas från Postgres och normaliseras. Arbetsflödet frågar efter OPEN- eller HOLD-bokningar och mappar sedan bokningsfälten till ett strukturerat format som n8n kan routa och agera på.

Regler för utgång avgör vad som avbokas. En Switch routar baserat på status och IF-kontroller validerar om en OPEN-bokning har passerat din utgångstid (exemplet använder cirka 10 minuter). Om den har gått ut uppdateras Postgres till CANCELLED och ett underarbetsflöde kan köras för nästa åtgärd.

Tidsluckan i kalendern frigörs och kunden kan få en notis. Google Kalender raderar den matchande händelsen, och en AI-agent kan generera ett meddelande (inklusive flerspråkigt) som du levererar via Telegram.

Du kan enkelt ändra utgångsfönstret och vilka statusar som ska kvalificera för avbokning utifrån dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.

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

Steg 1: Konfigurera schematriggern

Det här arbetsflödet startar enligt ett tidsschema för att skanna väntande bokningsreservationer.

  1. Lägg till och öppna Timed Automation Trigger.
  2. Ställ in schemaparametrarna så att de matchar er avbokningspolicy (t.ex. intervall, cron eller tidsbaserade alternativ).
  3. Säkerställ att Timed Automation Trigger är kopplad till Retrieve Pending Holds.

Steg 2: Anslut databasen och hämta väntande reservationer

Det här steget hämtar väntande bokningsreservationer från er databas.

  1. Öppna Retrieve Pending Holds och konfigurera SQL-frågan för väntande reservationer.
  2. Credential Required: Anslut era Postgres-inloggningsuppgifter.
  3. Verifiera att Retrieve Pending Holds skickar utdata till Booking Data Map.

Steg 3: Mappa bokningsdata och konfigurera AI-agenten

Det här steget förbereder bokningsposten för AI-baserad routning och beslut.

  1. Öppna Booking Data Map och ställ in fält för att normalisera er bokningsdata (t.ex. boknings-id, status, tidsstämplar för utgångstid).
  2. Öppna Intelligent Agent och säkerställ att den tar emot den mappade bokningsdatan.
  3. Öppna Grok Chat Model och koppla den som språkmodell för Intelligent Agent.
  4. Credential Required: Anslut era Grok (xAI)-inloggningsuppgifter i Grok Chat Model. Detta ger modellen åtkomst för Intelligent Agent.

Tips: Håll de mappade fältnamnen i Booking Data Map konsekventa med vad er AI-prompt förväntar sig för att undvika routningsfel.

Steg 4: Konfigurera statusroutning och kontroller av utgångstid

Den här logiken avgör om en bokning avbokas, hanteras som en reservation eller skickas vidare till ett underarbetsflöde.

  1. Öppna Status Routing och definiera switch-fall för att routa baserat på bokningsstatus.
  2. Bekräfta att Status Routing skickar utdata till både Validate Open Expiry och Validate Hold Expiry enligt statusreglerna.
  3. I Validate Open Expiry ställer ni in IF-villkoren som avgör om en öppen bokning har löpt ut.
  4. I Validate Hold Expiry ställer ni in IF-villkoren för logik kring att reservationer löper ut (även om den för närvarande inte är kopplad vidare nedströms).

⚠️ Vanlig fallgrop: Om fallen i Status Routing inte är fullt definierade kan bokningar inte nå Validate Open Expiry eller Validate Hold Expiry.

Steg 5: Konfigurera avbokningsåtgärder och underarbetsflöde

Bokningar som har löpt ut avbokas och kalenderhändelser tas bort. En sekundär gren kan köra ett annat arbetsflöde vid behov.

  1. Öppna Mark Booking Cancelled och konfigurera SQL-satsen som uppdaterar bokningsstatusen.
  2. Credential Required: Anslut era Postgres-inloggningsuppgifter.
  3. Öppna Remove Calendar Event och konfigurera kalender-id och inställningar för borttagning av händelser.
  4. Credential Required: Anslut era Google Calendar-inloggningsuppgifter.
  5. Öppna Run Sub-Workflow (Configure Required) och välj vilket underarbetsflöde som ska köras för den andra vägen från Validate Open Expiry.

⚠️ Vanlig fallgrop: Run Sub-Workflow (Configure Required) kommer att misslyckas tills ett mål-arbetsflöde är valt.

Steg 6: Testa och aktivera ert arbetsflöde

Validera hela flödet innan ni aktiverar det för produktionsanvändning.

  1. Klicka på Execute Workflow för att köra ett manuellt test med exempeldata i Retrieve Pending Holds.
  2. Bekräfta att körvägen går från Timed Automation TriggerRetrieve Pending HoldsBooking Data MapIntelligent AgentStatus RoutingValidate Open ExpiryMark Booking CancelledRemove Calendar Event.
  3. Verifiera att databasposten uppdateras och att motsvarande kalenderhändelse tas bort.
  4. När ni har verifierat, växla arbetsflödet till Active för schemalagda körningar i produktion.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Se upp med

  • Google Kalender-inloggningar kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera inloggningen i n8n och bekräfta att kalendern du valde i “Remove Calendar Event” fortfarande finns.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre fram fallerar på tomma svar.
  • Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att sitta och redigera utdata för alltid.

Vanliga frågor

Hur snabbt kan jag implementera den här automatiseringen för bokningsavbokning?

Vanligtvis cirka en timme om dina Postgres-tabeller och Google Kalender är redo.

Kan icke-tekniska team implementera den här automatiseringen för bokningsavbokning?

Ja, men du vill ha någon som är bekväm med att kopiera SQL och testa villkor. Ingen traditionell kodning krävs inne i n8n.

Är n8n gratis att använda för det här arbetsflödet för bokningsavbokningsautomatisering?

Ja. n8n har ett gratis alternativ för egen drift 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 med kostnader för AI-modell om du aktiverar AI-agenten (ofta bara några dollar i månaden vid låg volym).

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

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

Hur anpassar jag den här lösningen för bokningsavbokningsautomatisering till mina specifika utmaningar?

Börja med att justera reglerna för utgång i kontrollerna “Validate Open Expiry” och “Validate Hold Expiry”, eftersom de styr vad som blir inaktuellt. Du kan också bygga ut “Status Routing” för att inkludera fler statusar (till exempel NO_SHOW eller PAYMENT_PENDING) och ta olika åtgärder per status. Om du inte vill ha AI-skrivna meddelanden kan du helt enkelt hoppa förbi noden “Intelligent Agent” och skicka en fast mall via Telegram. Och om din process “efter avbokning” är mer komplex kan du byta ut noden “Run Sub-Workflow” så att den triggar ditt eget flöde (återbetalningar, förarnotiser, interna Slack-larm, vad du än behöver).

Varför misslyckas min Postgres-anslutning i det här arbetsflödet för bokningsavbokningsautomatisering?

Oftast handlar det om inloggningsuppgifter eller nätverksåtkomst. Bekräfta att Postgres-inloggningen i n8n fortfarande fungerar och verifiera sedan att din databas tillåter anslutningar från din n8n-host (VPN/VPC-regler och IP-tillåtelselistor är vanliga orsaker). En annan vanlig fälla: om din SQL refererar till ett tabell- eller kolumnnamn som skiljer sig från mallen kommer frågan att misslyckas även om anslutningen i sig är okej.

Vilken kapacitet har den här lösningen för bokningsavbokningsautomatisering?

På n8n Cloud begränsas du främst av dina månatliga körningar, medan egen drift begränsas av din server. I praktiken är det normalt att kontrollera några hundra bokningar var 5:e minut på modest infrastruktur om din Postgres-fråga är korrekt indexerad.

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

Ofta ja, eftersom det här arbetsflödet drar nytta av förgreningslogik (statusrouting) och databasfrågor som du får betala extra för på andra plattformar. n8n låter dig också köra egen drift med obegränsade körningar, vilket spelar roll när schemat triggar var 5:e minut. Zapier eller Make kan fortfarande fungera om din logik är enkel och du inte behöver Postgres-tunga kontroller. Men när du börjar lägga till “HOLD vs OPEN”, flerspråkiga svar och underarbetsflöden för uppföljande åtgärder är n8n oftast ett renare val. Om du är osäker, prata med en automationsexpert så hjälper vi dig att välja baserat på volym och komplexitet.

När spökbokningar städar upp efter sig själva börjar kalendern tala sanning igen. Och ärligt talat är det då supporten äntligen kan fokusera på riktiga problem i stället för administration.

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

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Launch login modal Launch register modal