Din supportinkorg fylls med samma frågor, men svaren finns i fem olika dokument. Någon svarar från minnet, någon annan svarar utifrån förra månadens version, och nu sitter du och städar upp förvirring du inte skapade.
Det är här automatisering med Voiceflow Google Drive ger effekt. Supportansvariga märker det först, men ops-chefer och byråteam som sköter kundsupport fastnar i samma loop. Du får konsekventa, källförankrade svar och färre uppföljningar som “kan du förtydliga?”.
Nedan är det exakta n8n-flödet som kopplar Voiceflow till kunskap i Google Drive, orderspårning och tidsbokning, så att din assistent kan svara snabbt och eskalera snyggt vid behov.
Så fungerar automatiseringen
Det fullständiga n8n-flödet, från trigger till slutligt resultat:
n8n Workflow Template: Voiceflow + Google Drive, snabbare supportsvar
flowchart LR
subgraph sg0["When clicking ‘Test workflow’ Flow"]
direction LR
n19@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Test workflow’", pos: "b", h: 48 }
n20@{ icon: "mdi:cube-outline", form: "rounded", label: "Qdrant Vector Store", pos: "b", h: 48 }
n21["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Create collection"]
n22["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Refresh collection"]
n23@{ icon: "mdi:cog", form: "rounded", label: "Get folder", pos: "b", h: 48 }
n24@{ icon: "mdi:cog", form: "rounded", label: "Download Files", pos: "b", h: 48 }
n25@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings OpenAI", pos: "b", h: 48 }
n26@{ icon: "mdi:robot", form: "rounded", label: "Default Data Loader", pos: "b", h: 48 }
n27@{ icon: "mdi:robot", form: "rounded", label: "Token Splitter", pos: "b", h: 48 }
n23 --> n24
n24 --> n20
n27 -.-> n26
n25 -.-> n20
n22 --> n23
n26 -.-> n20
n19 --> n21
n19 --> n22
end
subgraph sg1["Retrive Qdrant Vecto Flow"]
direction LR
n5@{ icon: "mdi:cube-outline", form: "rounded", label: "Retrive Qdrant Vector Store", pos: "b", h: 48 }
n6@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings OpenAI2", pos: "b", h: 48 }
n7@{ icon: "mdi:wrench", form: "rounded", label: "RAG", pos: "b", h: 48 }
n8@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model2", pos: "b", h: 48 }
n9@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model1", pos: "b", h: 48 }
n10@{ icon: "mdi:robot", form: "rounded", label: "Retrive Agent", pos: "b", h: 48 }
n11["<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/>n8n_rag"]
n18["<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/>Webhook RAG response"]
n7 -.-> n10
n11 --> n10
n10 --> n18
n6 -.-> n5
n9 -.-> n7
n8 -.-> n10
n5 -.-> n7
end
subgraph sg2["Concert start date Flow"]
direction LR
n1@{ icon: "mdi:location-exit", form: "rounded", label: "Google Calendar", pos: "b", h: 48 }
n2@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model3", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "Concert start date", pos: "b", h: 48 }
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/webhook.dark.svg' width='40' height='40' /></div><br/>n8n_appointment"]
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Calendar response", pos: "b", h: 48 }
n16["<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/>Webhook calendar response"]
n17@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n1 --> n13
n4 --> n3
n13 --> n16
n3 --> n1
n2 -.-> n3
n17 -.-> n3
end
subgraph sg3["Flow 4"]
direction LR
n0["<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/>n8n_order"]
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: "Tracking response", pos: "b", h: 48 }
n14["<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/>Webhook tracking response"]
n15["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>API URL Tracking"]
n0 --> n15
n15 --> n12
n12 --> n14
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 n19 trigger
class n26,n27,n10,n3,n17 ai
class n8,n9,n2 aiModel
class n7 ai
class n20,n5 ai
class n25,n6 ai
class n21,n22,n11,n18,n4,n16,n0,n14,n15 api
classDef customIcon fill:none,stroke:none
class n21,n22,n11,n18,n4,n16,n0,n14,n15 customIcon
Problemet: supportsvar glider isär (och kunderna märker det)
De flesta team har inte ett “supportproblem”. De har ett kunskapsproblem. Svar är utspridda i Google Drive-mappar, gamla PDF:er och några Slack-trådar som bygger på muntlig tradition, så varje ny kundfråga blir en liten skattjakt. Även när teamet hittar rätt dokument måste de fortfarande skumma, kopiera, skriva om och hoppas att de inte missat en uppdatering. Lägg till bokningsförfrågningar och orderstatuskontroller, så slutar support vara “hjälpsam” och blir en ständig kontextväxlingsskatt.
Friktionen växer. Här är var det oftast faller isär.
- En enkel “Hur gör jag…?”-fråga kan ta 10 minuter eftersom rätt svar är begravt i Drive.
- Två agenter svarar olika på samma fråga, vilket skapar återbetalningar, eskaleringar och obekväma uppföljningar.
- Att boka samtal tar flera meddelanden eftersom folk skriver datum på röriga, tvetydiga sätt.
- Orderstatuskontroller drar bort agenter från ärenden med högre värde, trots att datan kommer från ett API.
Lösningen: en Voiceflow-agent som hämtar från Drive och agerar
Det här flödet gör dina Google Drive-dokument till en “hjärna” som din Voiceflow-assistent kan referera till pålitligt, och lägger sedan två praktiska supportåtgärder ovanpå: orderspårning och tidsbokning. När en kund ställer en generell produkt- eller policyfråga skickar Voiceflow meddelandet till n8n, som söker i en Qdrant-vektordatabas som är uppbyggd från dina Drive-filer. OpenAI genererar ett förankrat svar baserat på de hämtade textavsnitten, och n8n skickar tillbaka det slutliga svaret till Voiceflow för leverans via chatt, röst eller telefon. Om användaren frågar om en order går en annan webhook-väg som anropar ditt orderspårnings-API och returnerar ett statusmeddelande. Om de vill boka ett möte strukturerar flödet upp datum inmatade i naturligt språk och skapar en Google Calendar-händelse.
Det börjar med tre Voiceflow-“Capture”-block som anropar tre n8n-webhook-endpoints. Därefter routar n8n förfrågan: orderstatus går till ett HTTP API-anrop, bokningar går via en OpenAI-kedja för datumformatering in i Google Calendar, och kunskapsfrågor går via Drive-baserad RAG innan svaret skickas tillbaka.
Vad du får: automatisering vs. resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att teamet får 20 “återkommande” frågor per dag, och att varje fråga tar cirka 6 minuter att hitta rätt Drive-dokument, skumma igenom och svara. Det är ungefär 2 timmar om dagen som bara går åt till att upprepa det du redan dokumenterat. Med det här flödet skickas kundfrågan till Voiceflow, n8n hämtar relevanta avsnitt från Qdrant och assistenten svarar under en minut i de flesta fall. Du granskar fortfarande specialfall, men du gör inte längre skattjakten.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Voiceflow för att fånga användarinput och visa svar
- Google Drive för dina dokument, PDF:er och policys
- Google Calendar för att skapa bokningar automatiskt
- Qdrant för att lagra och söka i dina dokument-embeddings
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard)
- Åtkomst till orderspårnings-API (använd din butik eller logistikleverantör)
Kompetensnivå: Medel. Du kopplar OAuth-konton, klistrar in webhook-URL:er i Voiceflow och justerar prompts för ton och precision.
Vill du inte sätta upp detta själv? Prata med en automationsspecialist (gratis 15-minuters konsultation).
Så fungerar det
Voiceflow skickar förfrågan. Din assistent använder ett “Capture”-block för att posta användarens meddelande till en av tre n8n-webhooks (ordrar, bokningar eller kunskapsfrågor) och väntar sedan på svaret.
n8n routar och förbereder data. En Switch/If-väg styr förfrågan till rätt logik, och sedan formar “set fields”-noder slutmeddelandet så att det enkelt kan skickas tillbaka korrekt formaterat till Voiceflow.
Åtgärden sker i rätt system. Ordrar triggar en HTTP-förfrågan till din spårnings-endpoint. Bokningar går genom en OpenAI-kedja för datumformatering och vidare till en skapare av Google Calendar-händelser. Kunskapsfrågor går genom en RAG-agent som söker i Qdrant (som byggts från dina Google Drive-dokument).
Voiceflow får tillbaka ett färdigt svar. Varje väg avslutas med en “respond to webhook”-nod som returnerar texten Voiceflow ska visa eller läsa upp, vilket gör användarupplevelsen snabb och konsekvent.
Du kan enkelt ändra Drive-mappens scope så att bara godkända dokument ingår, utifrån dina behov. Se hela implementationsguiden nedan för alternativ för anpassning.
Steg-för-steg-guide för implementering
Steg 1: konfigurera webhook-triggern
Konfigurera de tre webhook-ingångarna så att externa system kan skicka beställnings-, boknings- och RAG-förfrågningar in i arbetsflödet.
- Öppna Order Intake Webhook och ställ in Path till
9ff7a394-5b4b-4790-a96b-c41c4ba27fa5, med Response Mode inställt påresponseNode. - Öppna Appointment Intake Webhook och ställ in Path till
f5edfe92-649b-40da-ab35-f818ccb55ad4, med Response Mode inställt påresponseNode. - Öppna RAG Intake Webhook och ställ in Path till
edb1e894-1210-4902-a34f-a014bbdad8d8, med Response Mode inställt påresponseNode.
⚠️ Vanlig fallgrop: Om ni glömmer att använda responseNode kommer Return Tracking Webhook, Return Calendar Webhook och Return RAG Webhook inte kunna skicka svar.
Steg 2: anslut hämtning av orderstatus
Konfigurera spåret för orderspårning så att inkommande orderförfrågningar hämtar status och svarar tillbaka via webhooken.
- I Order Status API Call, ställ in URL till
[YOUR_ID]och låt Send Body vara aktiverat. - Ställ in body-parametrar i Order Status API Call till
Order number={{ $json.Order_number }}ochEmail={{ $json.Order_number }}. - I Compose Tracking Reply, ställ in tilldelningen för text till
Your order status is: {{ $json.status }}. - Säkerställ att Compose Tracking Reply går vidare till Return Tracking Webhook för det slutliga svaret.
Steg 3: konfigurera tidsbokning och kalenderutdata
Den här grenen tolkar bokningsdatum via AI, skapar en kalenderhändelse och returnerar ett bekräftelsemeddelande.
- I Format Appointment Dates, ställ in Text till
Convert this date to a compatible format for Google Calendar APIs for the start date, and for the end date add 1 hour to the start date. Here is the start date: {{ $json.query.Appointment_date }}och låt Has Output Parser vara aktiverat. - Öppna Structured Output Reader och bekräfta att Input Schema är inställt på den angivna JSON:en med strängegenskaperna
startochend. - I Date Chat Model, välj modellen
gpt-4o-mini. Inloggningsuppgifter krävs: anslut eraopenAiApi-inloggningsuppgifter. - I Calendar Event Creator, ställ in Start till
{{ $json.output.start }}och End till{{ $json.output.end }}. - I Calendar Event Creator, ställ in Calendar till
[YOUR_EMAIL]och ställ in Summary tillEvent title with {{ $('Appointment Intake Webhook').item.json.query.Email }}. Inloggningsuppgifter krävs: anslut eragoogleCalendarOAuth2Api-inloggningsuppgifter. - I Compose Calendar Reply, ställ in tilldelningen för text till
L'evento è stato creato con successooch säkerställ sedan att den kopplas till Return Calendar Webhook.
⚠️ Vanlig fallgrop: Schemat i Structured Output Reader måste matcha utdata som förväntas av Calendar Event Creator (start och end), annars misslyckas skapandet av händelsen.
Steg 4: konfigurera den konversationella RAG-agenten
Den här grenen besvarar kundfrågor med hjälp av en vector store och orkestrering via AI-agent.
- I Conversational Agent, ställ in Text till
{{ $json.query.Question }}och låt Agent vara inställd påconversationalAgent. - Öppna Agent Chat Model och välj
gpt-4o-mini. Inloggningsuppgifter krävs: anslut eraopenAiApi-inloggningsuppgifter. - I Knowledge RAG Tool, ställ in Name till
company_dataoch Description tillRetrive data about company knowledge from vector store. - I Fetch Qdrant Store, ställ in Qdrant Collection till
[YOUR_ID]. Inloggningsuppgifter krävs: anslut eraqdrantApi-inloggningsuppgifter. - I Embedding Generator B, behåll standardinställningarna och anslut OpenAI-inloggningsuppgifter. Inloggningsuppgifter krävs: anslut era
openAiApi-inloggningsuppgifter. - I RAG Chat Model, välj
gpt-4o-mini. Inloggningsuppgifter krävs: anslut eraopenAiApi-inloggningsuppgifter. - Säkerställ att Conversational Agent skickar utdata till Return RAG Webhook för svaret.
Påminnelse om inloggningsuppgifter: Embedding Generator B och Knowledge RAG Tool är AI-verktyg/undernoder. Säkerställ att inloggningsuppgifter läggs till i deras föräldranoder (Fetch Qdrant Store och RAG Chat Model) där det är tillämpligt.
Steg 5: bygg ingestion-pipelinen för vector store
Använd den manuella triggern för att initiera och rensa collectionen, och ingesera sedan Google Drive-dokument i Qdrant.
- I Manual Execution Start, notera att den skickar utdata både till Initialize Collection och Purge Collection parallellt.
- I Initialize Collection, ställ in URL till
https://[YOUR_ID]/collections/[YOUR_ID], Method tillPOSToch JSON Body till{ "filter": {} }. Inloggningsuppgifter krävs: anslut erahttpHeaderAuth-inloggningsuppgifter. - I Purge Collection, ställ in URL till
https://[CONFIGURE_YOUR_API_KEY]/delete, Method tillPOSToch JSON Body till{ "filter": {} }. Inloggningsuppgifter krävs: anslut erahttpHeaderAuth-inloggningsuppgifter. - Konfigurera Locate Drive Folder med Drive inställt på
My Driveoch Folder ID inställt på=[YOUR_ID]. Inloggningsuppgifter krävs: anslut eragoogleDriveOAuth2Api-inloggningsuppgifter. - I Fetch Drive Files, ställ in Operation till
downloadoch File ID till{{ $json.id }}, och behåll konverteringen för Google Docs tilltext/plain. Inloggningsuppgifter krävs: anslut eragoogleDriveOAuth2Api-inloggningsuppgifter. - I Default File Loader, ställ in Data Type till
binary. I Token Chunker, ställ in Chunk Size till300och Chunk Overlap till30. - I Embedding Generator A, behåll standardinställningarna. Inloggningsuppgifter krävs: anslut era
openAiApi-inloggningsuppgifter. - I Qdrant Store Loader, ställ in Mode till
insertoch säkerställ att rätt Qdrant-collection används. Inloggningsuppgifter krävs: anslut eraqdrantApi-inloggningsuppgifter.
⚠️ Vanlig fallgrop: Ingestionskedjan förlitar sig på Locate Drive Folder → Fetch Drive Files → Qdrant Store Loader. Om folder-ID:t är ogiltigt kommer inga dokument att nå vector store.
Steg 6: granska utdata- och svarsnoder
Bekräfta att varje gren skickar ett svar till sin webhook-anropare.
- Verifiera att Compose Tracking Reply routar till Return Tracking Webhook med det slutliga statusmeddelandet.
- Verifiera att Compose Calendar Reply routar till Return Calendar Webhook efter att händelsen har skapats.
- Verifiera att Conversational Agent routar till Return RAG Webhook för RAG-frågor och svar.
Steg 7: testa och aktivera ert arbetsflöde
Validera varje gren med manuella testkörningar och aktivera sedan arbetsflödet för användning i produktion.
- Klicka på Execute Workflow och kör Manual Execution Start manuellt för att bekräfta att Initialize Collection och Purge Collection körs parallellt.
- Skicka en testförfrågan till Order Intake Webhook och bekräfta att svaret innehåller
Your order status is: ...från Return Tracking Webhook. - Skicka en testförfrågan till Appointment Intake Webhook och verifiera att en kalenderhändelse skapas och att Return Calendar Webhook svarar med
L'evento è stato creato con successo. - Skicka en testförfrågan till RAG Intake Webhook och bekräfta att Return RAG Webhook returnerar ett svar från Conversational Agent.
- När allt är validerat, växla arbetsflödet till Active för att aktivera kontinuerlig bearbetning.
Vanliga fallgropar
- Google Drive-inloggningar kan gå ut eller kräva specifika behörigheter. Om något slutar fungera, börja med att kontrollera din Google OAuth-koppling på sidan Credentials i n8n.
- Om du använder Wait-noder eller extern bearbetning (som stor Drive-inläsning) varierar processtiderna. Öka väntetiden om noder längre ned misslyckas på grund av tomma svar.
- Standardprompts i OpenAI-noder är generiska. Lägg in er varumärkeston tidigt, annars kommer du redigera outputs för alltid.
Vanliga frågor
Räkna med cirka 1–2 timmar om dina konton och dokument är redo.
Nej. Du kopplar mest konton och klistrar in webhook-URL:er i Voiceflow. Den enda “tekniska” delen är att vara noggrann med prompts och behörigheter.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna med OpenAI API-kostnader, som oftast landar på några dollar i månaden för små team (mer om du läser in många dokument).
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 hanterar n8n bra. Egen hosting ger obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. De flesta team pekar Google Drive-noderna “Locate folder” och “Fetch files” mot en kuraterad kunskapsmapp och justerar sedan systemprompten för Conversational Agent så den svarar enligt era policys och er ton. Vanliga anpassningar är att lägga till ett villkor för “handoff till människa”, filtrera vilka filtyper som läses in och ändra hur källhänvisningar eller sources inkluderas i svaret.
Oftast beror det på att webhook-URL:en eller metoden inte matchar. Bekräfta att Voiceflow skickar till rätt n8n-webhook-endpoint (order vs bokning vs RAG), och att payloadens fältnamn matchar vad dina “set fields”-noder förväntar sig. Kontrollera också att din n8n-instans är nåbar publikt; privata IP-adresser och saknad SSL gör ofta att Voiceflow-anrop fallerar. Ärligt talat: ett enda stavfel i en webhook-sökväg kan slösa en timme.
Om du kör egen hosting finns ingen exekveringsgräns (det beror på din server). På n8n Cloud har Starter-planen ett månatligt exekveringstak och högre nivåer klarar mer; för många små team räcker det för daglig supportvolym. I praktiken är begränsningen oftast dina OpenAI rate limits eller hur snabbt Qdrant kan returnera träffar, inte n8n i sig.
Ofta, ja, eftersom den här setupen kräver förgrenad logik (tre webhook-vägar), RAG-hämtning och tajtare kontroll över prompts och datashaping. Zapier och Make kan lösa delar, men flöden med AI i flera steg + vektorsökning blir snabbt dyra och klumpiga. n8n är också enklare att köra self-hosted, vilket spelar roll när du vill ha förutsägbara kostnader. Om du bara behöver “när chattmeddelande, mejla mig”, håll det enkelt och använd det du redan har. Prata med en automationsspecialist om du vill ha en second opinion.
När detta väl rullar svarar assistenten utifrån dokumenten du redan litar på, och den bokar möten och kollar ordrar utan att dra in en människa i detaljerna. Sätt upp det en gång och njut sedan av lugnet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.