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
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n1@{ icon: "mdi:brain", form: "rounded", label: "xAI @grok-2-1212", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Status Switch", 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/postgres.svg' width='40' height='40' /></div><br/>Set Cancel Booking"]
n4@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Booking", pos: "b", h: 48 }
n6@{ icon: "mdi:cog", form: "rounded", label: "Call Back", pos: "b", h: 48 }
n7["<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/postgres.svg' width='40' height='40' /></div><br/>Open Hold Booking"]
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If Hold Expired", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If Open Expired", pos: "b", h: 48 }
n10@{ icon: "mdi:location-exit", form: "rounded", label: "Delete Event", pos: "b", h: 48 }
n5 --> n0
n0 --> n2
n2 --> n9
n2 --> n8
n9 --> n3
n9 --> n6
n4 --> n7
n1 -.-> n0
n7 --> n5
n3 --> n10
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 n4 trigger
class n0 ai
class n1 aiModel
class n2,n8,n9 decision
class n3,n7 database
classDef customIcon fill:none,stroke:none
class n3,n7 customIcon
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
| Det här elimineras | Effekten du ser |
|---|---|
|
|
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.
- Lägg till och öppna Timed Automation Trigger.
- Ställ in schemaparametrarna så att de matchar er avbokningspolicy (t.ex. intervall, cron eller tidsbaserade alternativ).
- 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.
- Öppna Retrieve Pending Holds och konfigurera SQL-frågan för väntande reservationer.
- Credential Required: Anslut era Postgres-inloggningsuppgifter.
- 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.
- Ö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).
- Öppna Intelligent Agent och säkerställ att den tar emot den mappade bokningsdatan.
- Öppna Grok Chat Model och koppla den som språkmodell för Intelligent Agent.
- Credential Required: Anslut era Grok (xAI)-inloggningsuppgifter i Grok Chat Model. Detta ger modellen åtkomst för Intelligent Agent.
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.
- Öppna Status Routing och definiera switch-fall för att routa baserat på bokningsstatus.
- Bekräfta att Status Routing skickar utdata till både Validate Open Expiry och Validate Hold Expiry enligt statusreglerna.
- I Validate Open Expiry ställer ni in IF-villkoren som avgör om en öppen bokning har löpt ut.
- 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).
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.
- Öppna Mark Booking Cancelled och konfigurera SQL-satsen som uppdaterar bokningsstatusen.
- Credential Required: Anslut era Postgres-inloggningsuppgifter.
- Öppna Remove Calendar Event och konfigurera kalender-id och inställningar för borttagning av händelser.
- Credential Required: Anslut era Google Calendar-inloggningsuppgifter.
- Ö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.
Steg 6: Testa och aktivera ert arbetsflöde
Validera hela flödet innan ni aktiverar det för produktionsanvändning.
- Klicka på Execute Workflow för att köra ett manuellt test med exempeldata i Retrieve Pending Holds.
- Bekräfta att körvägen går från Timed Automation Trigger → Retrieve Pending Holds → Booking Data Map → Intelligent Agent → Status Routing → Validate Open Expiry → Mark Booking Cancelled → Remove Calendar Event.
- Verifiera att databasposten uppdateras och att motsvarande kalenderhändelse tas bort.
- När ni har verifierat, växla arbetsflödet till Active för schemalagda körningar i produktion.
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
Vanligtvis cirka en timme om dina Postgres-tabeller och Google Kalender är redo.
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.
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).
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.
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).
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.
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.
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.