Du får äntligen ditt bokningsflöde att fungera … och så bokar samma person två gånger, teamet svarar två gånger och kalendern blir en gissningslek. Det är inte bara rörigt. Det är den typen av röra som skapar verkliga schemaläggningsmisstag och obekväma uppföljningar.
Klinikchefer märker det först, eftersom det är de som får lugna ner folk när tider krockar. Men även operativa ansvariga och byråteam som bygger intake-system stöter på samma problem. Den här Cal.com-bokningsautomationen dirigerar inkommande förfrågningar, loggar dem strukturerat och stoppar dubbletter innan de blir ett problem.
Nedan ser du hur arbetsflödet triagerar varje förfrågan, väljer rätt destination och skapar rätt händelse automatiskt (med ett praktiskt sätt att hålla dubbletter borta).
Så fungerar den här automatiseringen
Se hur detta löser problemet:
n8n Workflow Template: Cal.com + Google Sheets: triagera bokningar utan dubbletter
flowchart LR
subgraph sg0["Check for new patient appointment Requests Flow"]
direction LR
n0@{ icon: "mdi:robot", form: "rounded", label: "Intelligent Doctor Routing", pos: "b", h: 48 }
n1@{ icon: "mdi:cog", form: "rounded", label: "Grab Appointment Time", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Extract Patient Info and AI ..", pos: "b", h: 48 }
n3@{ icon: "mdi:brain", form: "rounded", label: "AI Diagnosis", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "Get Present Appointments", pos: "b", h: 48 }
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/code.svg' width='40' height='40' /></div><br/>Return Unique Appointments"]
n6@{ icon: "mdi:database", form: "rounded", label: "Save new appointments", 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/code.svg' width='40' height='40' /></div><br/>Map departments with their r.."]
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/cal.dark.svg' width='40' height='40' /></div><br/>Check for new patient appoin.."]
n9@{ icon: "mdi:location-exit", form: "rounded", label: "Create Appointment in Respec..", pos: "b", h: 48 }
n10["<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/>Parse Output in our preferre.."]
n3 -.-> n0
n1 --> n0
n6 --> n7
n4 --> n5
n0 --> n10
n5 --> n6
n2 --> n4
n10 --> n2
n8 --> n1
n7 --> n9
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 n8 trigger
class n0 ai
class n3 aiModel
class n4,n6 database
class n5,n7,n10 code
classDef customIcon fill:none,stroke:none
class n5,n7,n8,n10 customIcon
Utmaningen: bokningsintake blir duplicerad och felroutad
Manuell intake av bokningar fallerar på tråkiga, förutsägbara sätt. Någon skickar in en Cal.com-förfrågan, sms:ar sedan igen, och en medarbetare skapar om den ”för säkerhets skull”. Samtidigt måste du läsa symptom eller anteckningar, avgöra vilken avdelning som ska hantera det och välja rätt kalender. Gör du detta några gånger per dag slutar det med dubbelbokningar, saknad kontext och ett ark fullt av halvfärdiga poster. Ärligt talat är den mentala belastningen värre än minuterna du förlorar.
Det eskalerar snabbt. Här är hur det fallerar i verkligheten.
- Du slösar tid på att kontrollera om personen redan har bokat, eftersom Cal.com-inlämningar och ”uppföljnings”-meddelanden inte stäms av automatiskt.
- Förfrågningar hamnar i fel kalender, så rätt team ser dem inte förrän det är för sent.
- Ditt uppföljningsark blir opålitligt, vilket gör att rapportering och uppföljningar blir manuellt detektivarbete.
- Personalen gör triage i huvudet, och ”reglerna” ändras beroende på vem som jobbar.
Lösningen: autoriagera Cal.com-förfrågningar och boka i rätt kalender
Det här arbetsflödet tar en ny besöksförfrågan (från Cal.com eller en webhook), plockar ut nyckeldetaljerna och kör symptomtexten genom ett AI-triage-steg. I stället för att en medarbetare läser allt och gissar, tilldelar arbetsflödet en sannolik avdelning (Orto, Neuro osv.) med en router i ”AI-agent”-stil. Sedan kontrollerar det ditt Google Sheet för att se om personen redan har ett besök loggat. Om det är en dubblett stannar det innan det skapar kalenderbrus. Om det är nytt sparar det besöket i Google Sheets och skapar en Google Kalender-händelse i rätt avdelningskalender, så att rätt team ser det direkt.
Arbetsflödet startar i samma ögonblick som Cal.com triggar en ny förfrågan. Efter AI-klassificering och grundläggande formatering slår det upp befintliga besök i Google Sheets och filtrerar för unikhet. Till sist avgör en avdelning-till-kalender-mappning var Google Kalender-händelsen skapas, vilket håller schemaläggningen korrekt mellan team.
Vad som förändras: före vs. efter
| Detta tar bort | Effekten du märker |
|---|---|
|
|
Effekt i verkligheten
Säg att ni hanterar cirka 20 bokningsförfrågningar i veckan över 4 avdelningar. Manuellt kanske du lägger runt 10 minuter per förfrågan på att läsa anteckningar, välja avdelning, kontrollera tidigare poster i ett ark och sedan skapa rätt kalenderhändelse (det är ungefär 3 timmar per vecka). Med det här arbetsflödet är ”hands-on”-tiden närmare en snabb koll på undantag, kanske 10 minuter totalt per vecka, eftersom routning, loggning och skapande av händelser sker automatiskt. Dubbletter stoppas innan de skapar kalenderstök.
Krav
- n8n-instans (testa n8n Cloud gratis)
- Självhostningsalternativ om du föredrar det (Hostinger fungerar bra)
- Cal.com för att fånga upp nya bokningsförfrågningar
- Google Sheets för att spara och avduplicera besöksposter
- Google Kalender för att skapa avdelningsspecifika händelser
- OpenRouter API-nyckel (hämta den i din OpenRouter-dashboard)
Kunskapsnivå: Medel. Du kopplar konton, mappar fält och justerar en eller två små logikkontroller.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Arbetsflödet steg för steg
En ny Cal.com-förfrågan kommer in. Arbetsflödet lyssnar efter nya besöksförfrågningar via Cal.com-triggern (eller en webhook om du vill mata in förfrågningar från ett annat formulär senare).
Besöket tidsstämplas och struktureras. Date & Time skapar en konsekvent besökstid, sedan formaterar arbetsflödet inkommande text och extraherar patientfält till en strukturerad post som du faktiskt kan använda.
AI-triage dirigerar förfrågan. OpenRouter-chatmodellen läser symptomtexten och logiken ”Smart Doctor Routing” tilldelar avdelning så att rätt kalender kan användas utan gissningar.
Dubbletter filtreras och bokningen skapas. Google Sheets kontrolleras mot befintliga besök (på namn eller kontakt), unika sparas, därefter mappar arbetsflödet avdelningen till rätt Google Kalender och skapar händelsen.
Du kan enkelt ändra regeln för ”dubblett” (namn, e-post, telefon eller alla tre) så att den matchar hur din intake-data ser ut. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera triggern calTrigger
Det här arbetsflödet startar när Monitor New Visit Requests upptäcker en ny besöksförfrågan och skickar sedan data vidare till Fetch Visit Time.
- Lägg till och öppna Monitor New Visit Requests.
- Konfigurera triggerinställningarna för att bevaka er källa för tidsbokningsintag.
- Bekräfta att kopplingen från Monitor New Visit Requests → Fetch Visit Time finns på plats.
Steg 2: Anslut Google Sheets
Aktuella besöksposter läses in, filtreras och därefter sparas nya besök tillbaka till Sheets via Retrieve Current Visits och Store New Visits.
- Öppna Retrieve Current Visits och välj kalkylarket och fliken som innehåller befintliga besöksposter.
- Öppna Store New Visits och välj målkalkylark/flik för att lägga till nya besöksposter.
- Verifiera att vägen Derive Patient Details → Retrieve Current Visits → Filter Unique Visits → Store New Visits är kopplad.
Steg 3: Sätt upp AI-routning och tolkning
AI-delen klassificerar besöket och förbereder strukturerad data med Smart Doctor Routing, AI Clinical Assessment och Format Parsed Output.
- Öppna Smart Doctor Routing och bekräfta att den är ansluten till språkmodellen.
- Öppna AI Clinical Assessment och ställ in er OpenRouter-modell och parametrar vid behov.
- Säkerställ att Fetch Visit Time går vidare till Smart Doctor Routing, sedan till Format Parsed Output och därefter till Derive Patient Details.
Steg 4: Konfigurera utdata och kalenderbokning
När nya besök har sparats mappar arbetsflödet avdelningen och skapar en kalenderhändelse i rätt kalender med Map Departments to Calendars och Create Department Calendar Event.
- Öppna Map Departments to Calendars och definiera er logik för mappning mellan avdelning och kalender.
- Öppna Create Department Calendar Event och ange kalender-ID samt händelsefält så att de använder mappade värden.
- Bekräfta flödet Store New Visits → Map Departments to Calendars → Create Department Calendar Event.
Steg 5: Testa och aktivera ert arbetsflöde
Kör ett manuellt test för att validera routning, avduplicering, lagring och skapande av kalenderhändelser innan ni aktiverar arbetsflödet.
- Klicka på Execute Workflow och skicka in en exempelbesöksförfrågan till Monitor New Visit Requests.
- Verifiera att Filter Unique Visits tar bort dubbletter och att Store New Visits skriver en ny rad.
- Bekräfta att Create Department Calendar Event skapar en kalenderpost i rätt avdelningskalender.
- När det fungerar, växla arbetsflödet till Active för att köra i produktion.
Se upp för
- Behörigheter i Google Sheets kan vara förvånansvärt strikta. Om ”Retrieve Current Visits” inte returnerar något, kontrollera först vilket Google-konto som är anslutet och delningsinställningarna för arket.
- Om du förlitar dig på extern AI (OpenRouter) varierar svarstiderna. När utdata kommer sent kan efterföljande parsning misslyckas, så du kan behöva lägga till en kort väntan eller förbättra fallback-hanteringen i ”Format Parsed Output”.
- Avdelningsnamn måste matcha dina mappningsregler. Om AI:n returnerar ”orthopedics” men din mappning förväntar ”Orto”, skapar du händelser på fel ställe (eller inte alls) tills du normaliserar etiketterna.
Vanliga frågor
Ungefär en timme om dina konton och kalendrar redan finns.
Ja, men någon behöver vara bekväm med att mappa fält och testa edge cases. Ingen kodning krävs om du inte vill ändra logiken för dubblettkontrollen.
Ja. n8n har ett gratis självhostat alternativ 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 OpenRouter-kostnader, som beror på vilken modell du väljer och hur lång din symptomtext är.
Två alternativ: n8n Cloud (hanterad tjänst, enklast att komma igång) eller självhosting på en VPS. För självhosting är Hostinger VPS prisvärd och hanterar n8n bra. Självhosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Du kan byta intake-källa genom att ersätta ”Monitor New Visit Requests” (Cal.com) med en generell Webhook-trigger och sedan behålla resten av routningen intakt. De flesta team anpassar också logiken i ”Filter Unique Visits” så att den matchar deras verkliga identifierare (e-post eller telefon slår oftast namn), och de justerar ”Map Departments to Calendars” så att avdelningsetiketter matchar interna termer. Om du vill att AI-utdata ska låta som er process, redigera prompten som används i ”AI Clinical Assessment” och behåll några exempel på symptom-till-avdelning-mappningar i den.
Oftast är det triggern som inte tar emot händelser eftersom behörigheterna för Cal.com-integrationen har ändrats eller eventtypen har modifierats. Anslut Cal.com på nytt i n8n och bekräfta sedan att den specifika boknings-/eventtypen fortfarande är den som din trigger lyssnar på. Kontrollera också att ditt arbetsflöde är aktiverat och att testbokningar skapas i samma Cal.com-miljö (team blandar ibland ihop personliga vs. teamsidor). Om du använder en webhook i stället är problemet ofta att payload-strukturen har ändrats, så att fältmappningen i ”Derive Patient Details” inte längre stämmer.
På n8n Cloud beror kapaciteten på din plans månatliga körningar, och det här arbetsflödet använder normalt en körning per bokning. Om du självhostar finns ingen fast körningsgräns; det handlar främst om serverresurser och hur snabbt dina Google Sheets- och AI-anrop svarar. För många mindre team är det realistiskt att hantera dussintals bokningar per dag. Om du går upp i högre volymer, flytta avdupliceringen från Google Sheets till en databas och behåll Sheets som ett rapporteringslager.
Ofta, ja, eftersom det här arbetsflödet bygger på mer nyanserad logik: AI-routning, anpassade dubblettkontroller och villkorsstyrda grenar som kan bli krångliga (och dyra) i enklare verktyg. n8n ger dig också möjligheten att självhosta, vilket är användbart när du behöver mer kontroll. Zapier eller Make kan fortfarande fungera bra om din routning är enkel och du bara behöver ”Cal.com → Google Kalender” med en enda kalender. Så fort du har flera avdelningar, ett delat uppföljningsark och dubbletter att stoppa brukar n8n passa bättre. Om du vill få en snabb avstämning av vilken plattform som matchar dina krav, prata med en automationsexpert.
När detta väl körs slutar din intake vara en daglig städuppgift och börjar fungera som ett system. Arbetsflödet hanterar routning, loggning och dubblettskydd så att teamet kan fokusera på det faktiska arbetet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.