Webbplatschatt går oftast sönder på samma två ställen. Den svarar självsäkert med fel kontext, eller så glömmer den vad kunden sa för två meddelanden sedan. Och då får du ett supportärende ändå.
Den här Pinecone Postgres-chatbot-automationen är en stor vinst för supportansvariga som vill minska eskaleringar, men tillväxtteam som driver flera sajter märker det också. Byråoperatörer som hanterar kunddomäner? Samma huvudvärk, gånger fem.
Du kommer att routa varje chatt till rätt kunskapsbas, behålla konversationsminne per användare och skicka tillbaka ett strukturerat svar till webbplatsen. Här är vad workflowet gör och hur du sätter upp det utan att drunkna i tekniskt fluff.
Så fungerar den här automationen
Här är hela workflowet du kommer att sätta upp:
n8n Workflow Template: Pinecone + Postgres: varumärkessäker multisajtbot
flowchart LR
subgraph sg0["Postgres Chat Memory Flow"]
direction LR
n0@{ icon: "mdi:memory", form: "rounded", label: "Postgres Chat Memory", pos: "b", h: 48 }
n1@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model", pos: "b", h: 48 }
n2@{ icon: "mdi:cube-outline", form: "rounded", label: "Pinecone Vector Store5", pos: "b", h: 48 }
n3@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings Cohere", pos: "b", h: 48 }
n4@{ icon: "mdi:cube-outline", form: "rounded", label: "Pinecone Vector Store6", pos: "b", h: 48 }
n5@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings Cohere6", pos: "b", h: 48 }
n6@{ icon: "mdi:cube-outline", form: "rounded", label: "Pinecone Vector Store7", pos: "b", h: 48 }
n7@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings Cohere7", pos: "b", h: 48 }
n8@{ icon: "mdi:cube-outline", form: "rounded", label: "Pinecone Vector Store9", pos: "b", h: 48 }
n9@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings Cohere9", pos: "b", h: 48 }
n10@{ icon: "mdi:cube-outline", form: "rounded", label: "Pinecone Vector Store10", pos: "b", h: 48 }
n11@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings Cohere10", pos: "b", h: 48 }
n12["<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"]
n13["<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/>Respond to Webhook"]
n14@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch", pos: "b", h: 48 }
n15@{ icon: "mdi:memory", form: "rounded", label: "Postgres Chat Memory1", pos: "b", h: 48 }
n16@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model1", pos: "b", h: 48 }
n17@{ icon: "mdi:cube-outline", form: "rounded", label: "Pinecone Vector Store8", pos: "b", h: 48 }
n18@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings Cohere8", pos: "b", h: 48 }
n19["<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/>Respond to Webhook1"]
n20@{ icon: "mdi:robot", form: "rounded", label: "AI Agent for groton", pos: "b", h: 48 }
n21@{ icon: "mdi:robot", form: "rounded", label: "AI Agent1 ghostwritingpartner", pos: "b", h: 48 }
n22@{ icon: "mdi:memory", form: "rounded", label: "Postgres Chat Memory2", pos: "b", h: 48 }
n23@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model2", pos: "b", h: 48 }
n24@{ icon: "mdi:cube-outline", form: "rounded", label: "Pinecone Vector Store11", pos: "b", h: 48 }
n25@{ icon: "mdi:vector-polygon", form: "rounded", label: "Embeddings Cohere11", pos: "b", h: 48 }
n26["<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/>Respond to Webhook2"]
n27@{ icon: "mdi:robot", form: "rounded", label: "AI Agent ebook-wr", pos: "b", h: 48 }
n14 --> n21
n14 --> n27
n14 --> n20
n12 --> n14
n27 --> n26
n3 -.-> n2
n5 -.-> n4
n7 -.-> n6
n18 -.-> n17
n9 -.-> n8
n20 --> n13
n11 -.-> n10
n25 -.-> n24
n0 -.-> n20
n1 -.-> n20
n15 -.-> n21
n22 -.-> n27
n16 -.-> n21
n23 -.-> n27
n2 -.-> n20
n4 -.-> n20
n6 -.-> n20
n17 -.-> n21
n8 -.-> n20
n10 -.-> n20
n24 -.-> n27
n21 --> n19
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 n20,n21,n27 ai
class n1,n16,n23 aiModel
class n0,n15,n22 ai
class n2,n4,n6,n8,n10,n17,n24 ai
class n3,n5,n7,n9,n11,n18,n25 ai
class n14 decision
class n12,n13,n19,n26 api
classDef customIcon fill:none,stroke:none
class n12,n13,n19,n26 customIcon
Varför det här spelar roll: chatt för flera sajter spårar snabbt ur från varumärket
När du driver fler än en webbplats slutar ”bara lägg till en chatbot” att vara enkelt. En domän har produktdokumentation, en annan har hjälpartiklar och en tredje har prisregler som ändras varje månad. Om varje chatt hämtar från en enda gigantisk kunskapsblob börjar svaren glida. Kunderna märker det. Och supporten märker det när agenter lägger sina morgnar på att reda ut förvirrande botsvar, leta i trådar och förklara grundkontext som boten borde ha kommit ihåg.
Det skenar snabbt. Här är var det faller isär.
- Chattar från olika sajter blandas ihop, så boten refererar fel produkt, policy eller tonläge.
- Utan riktigt konversationsminne upprepar kunderna sig och agenter tar över en stökig överlämning.
- Manuella ”routningsregler” i en supportinkorg är sköra, och de hjälper inte på webbplatsen där frågorna börjar.
- Ett enda dåligt svar kan skapa en längre mejltråd, en återbetalningsbegäran eller en uppsägningsdialog du inte behövde.
Det du bygger: en webbplatsmedveten AI-assistent med minne
Det här workflowet gör din webbplatschatt till en routad, kontextmedveten assistent. Det startar när din sajt skickar en webhook-förfrågan som innehåller besökarens fråga plus några användbara detaljer (vilken sajt de är på, vilken sida de tittar på och ett användar-ID). n8n kontrollerar sedan värdet site och skickar frågan till rätt AI-agent. Agenten hämtar relevant kontext från matchande Pinecone-kunskapsbas (med sajtspecifika namespaces) och använder Postgres för att komma ihåg konversationen så att följdfrågor blir sammanhängande. Till sist returnerar workflowet ett strukturerat svar tillbaka till webbplatsen via ett steg för ”respond to webhook”, så att besökaren får svar direkt.
Workflowet börjar med en Webhook-trigger och ett routningsbeslut. Därefter svarar en av flera agenter med OpenAI (via en OpenRouter-chattmotor), Pinecone-retrieval och Postgres-minne. Sista steget returnerar en svarspayload till webbläsaren så att det beter sig som ett riktigt chatsystem, inte ett långsamt mejlformulär.
Det du bygger
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du hanterar 3 sajter och att varje sajt får cirka 30 chattfrågor per dag. Utan routning och minne är det vanligt att en agent lägger runt 5 minuter per ”dålig bot”-konversation på att fixa kontext och skriva om svaret, vilket motsvarar ungefär 2 till 3 timmar per dag. Med det här workflowet får besökaren ett routat svar direkt (den enda ”manuella tiden” är i princip noll efter uppsättning), och teamet hanterar främst riktiga edge cases. För många team betyder det ett par timmar tillbaka varje dag, plus färre pinsamma ”förlåt, fel produkt”-ögonblick.
Innan du börjar
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Pinecone för vektorsökning per sajts namespace
- Postgres för att lagra chattminne per användare
- OpenRouter- eller OpenAI-uppgifter (hämta nycklar i din leverantörs dashboard)
Kunskapsnivå: Medel. Du klistrar in API-nycklar, sätter webhook-parametrar och bekräftar din databasanslutning.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
En webbplats skickar ett chattmeddelande. Din sajt anropar n8n-webhooken och inkluderar query (frågan), userId, site och page. De extra fälten är viktiga eftersom de styr både routning och vilket tonläge/kontext boten ska använda.
Förfrågningar routas till rätt agent. En Switch kontrollerar värdet site och skickar meddelandet till Agent A, B eller C. Varje agent är konfigurerad att använda matchande Pinecone-kunskapsbas (separata namespaces) så att ”Sajt A” aldrig svarar med ”Sajt C”-dokumentation.
Agenten svarar med kontext och minne. AI-agenten använder en chattmodell (via OpenRouter) och en fråge-och-svar-kedja som hämtar relevanta utdrag från Pinecone. Samtidigt håller Postgres chat memory store konversationshistoriken kopplad till userId, så att följdfrågor inte nollställer tråden.
Svaret returneras till webbläsaren. n8n skickar en slutlig payload tillbaka via ”Respond to Webhook”, som din frontend kan rendera som chattsvar. För användaren känns det omedelbart, även om mycket hände bakom kulisserna.
Du kan enkelt ändra routningslogiken för att hantera fler sajter, eller justera systemprompter för att skärpa varumärkets röst baserat på sidtyp. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: konfigurera webhook-triggern
Arbetsflödet startar när ett externt system anropar er webhook-endpoint.
- Lägg till noden Incoming Webhook Trigger som din trigger.
- Ställ in Path på
f22b5848-6722-45fb-ba0c-b874f5813b5c. - Ställ in Response Mode på
responseNodeså att svaren kommer från respond-noderna. - Skicka en testförfrågan som inkluderar
query.userId,query.query,query.siteochquery.pagei querystring.
⚠️ Vanlig fallgrop: Om query.userId saknas kan minnesnoderna inte skapa en session och AI-assistenterna kan tappa konversationshistorik.
Steg 2: routa förfrågningar per webbplats
Förfrågningar delas upp i tre webbplatsspecifika AI-routes baserat på värdet i query.site.
- Lägg till switch-noden Route by Site Condition och koppla den från Incoming Webhook Trigger.
- Skapa tre regler med Left Value satt till
={{ $json.query.site }}. - Ställ in strängarna för regelns Right Value till
test_site,test_site2ochtest_site3. - Koppla output 1 till AI Assistant Route A, output 2 till AI Assistant Route B och output 3 till AI Assistant Route C.
Exekveringsflöde: Incoming Webhook Trigger → Route by Site Condition → en av AI-assistenternas routes.
Steg 3: konfigurera konversationsminne (Postgres)
Varje AI-route lagrar konversationshistorik i Postgres för att behålla kontext mellan meddelanden.
- Öppna Conversation Store A och ställ in Table Name på
n8n_chat_histories_test_1. - Ställ in Session Key på
={{ $('Incoming Webhook Trigger').item.json.query.userId }}och Session ID Type påcustomKey. - Upprepa för Conversation Store B med Table Name
n8n_chat_histories_test_2. - Upprepa för Conversation Store C med Table Name
n8n_chat_histories_test_3. - Inloggningsuppgifter krävs: Koppla era postgres-inloggningsuppgifter på Conversation Store A, Conversation Store B och Conversation Store C.
Dessa minnesnoder är AI-subnoder som är kopplade till agenterna. Säkerställ att inloggningsuppgifter läggs till på varje Conversation Store-nod (inte på agenten).
Steg 4: konfigurera AI-assistenterna och modellerna
Varje route använder en dedikerad OpenRouter-modell och en agentprompt anpassad till en specifik webbplatskontext.
- Konfigurera OpenRouter Chat Engine A med Model satt till
deepseek/deepseek-chat-v3-0324:free. - Konfigurera OpenRouter Chat Engine B och OpenRouter Chat Engine C med samma modellvärde.
- Inloggningsuppgifter krävs: Koppla era openRouterApi-inloggningsuppgifter på OpenRouter Chat Engine A, OpenRouter Chat Engine B och OpenRouter Chat Engine C.
- I AI Assistant Route A, ställ in Text på
={{ $('Incoming Webhook Trigger').item.json.query.query }}och behåll Prompt Type somdefine. - Upprepa samma Text-uttryck och Prompt Type för AI Assistant Route B och AI Assistant Route C.
⚠️ Vanlig fallgrop: AI-agenterna förlitar sig på systemmeddelanden som är inbäddade i deras konfiguration. Om ni skriver över dessa meddelanden ändras routing-intentionen och innehållsräls (guardrails).
Steg 5: koppla Pinecone-kunskapsbaser och embeddings
Varje AI-route använder Pinecone-vektorlagring för retrieval, drivet av Cohere-embeddings.
- Koppla era Pinecone- och Cohere-inloggningsuppgifter i samtliga kunskapsbas- och embedding-noder.
- Inloggningsuppgifter krävs: Koppla era pineconeApi-inloggningsuppgifter på alla noder Pinecone Knowledge Base A1, Pinecone Knowledge Base B1 och Pinecone Knowledge Base C1–C5.
- Inloggningsuppgifter krävs: Koppla era cohereApi-inloggningsuppgifter på alla noder Cohere Embeddings A1, Cohere Embeddings B1 och Cohere Embeddings C1–C5.
- Verifiera att varje Pinecone-nod är satt till Mode
retrieve-as-tooloch Top K6. - Säkerställ att varje Pinecone Knowledge Base-nod har korrekt Tool Description (t.ex.
vector store for: Service Packages Overview,vector store for: services,vector store for: terms of use,vector store for: Privacy Policy,vector store for: refund policy). - Ersätt varje Pinecone Index-värde
[YOUR_ID]med ert faktiska index-ID och bekräfta pineconeNamespace-värden somService_Packages_Overview,services,terms_of_use,Privacy_Policy,refund_policy,ghost_wrochebook_wr.
Dessa embedding-noder är AI-subnoder som är kopplade till Pinecone-verktygen. Se till att inloggningsuppgifter läggs till på noderna Cohere Embeddings, inte på AI-agenterna.
Steg 6: konfigurera webhook-svar
Varje AI-route skickar ett JSON-svar tillbaka till den som anropar webhooken.
- Öppna Return Webhook Payload A och ställ in Respond With på
json. - Ställ in Response Body på
={{ { "answer": $json.output } }}. - Upprepa samma Response Body-konfiguration för Return Webhook Payload B och Return Webhook Payload.
- Verifiera flödet: AI Assistant Route A → Return Webhook Payload A, AI Assistant Route B → Return Webhook Payload B och AI Assistant Route C → Return Webhook Payload.
Steg 7: testa och aktivera ert arbetsflöde
Validera hela loopen från request till response och aktivera sedan arbetsflödet för produktion.
- Klicka på Execute Workflow och skicka ett webhook-anrop med
query.sitesatt tilltest_site,test_site2ellertest_site3. - Bekräfta att förfrågan routas via Route by Site Condition till rätt AI-assistent.
- Kontrollera att det slutliga svaret från Return Webhook Payload A, Return Webhook Payload B eller Return Webhook Payload innehåller ett JSON-objekt som
{ "answer": "..." }. - Om svaret är tomt, verifiera att Pinecone-index-ID:n och namespaces är korrekta och att OpenRouter-inloggningsuppgifterna är giltiga.
- När det fungerar, växla arbetsflödet till Active för att aktivera live-hantering av webhooks.
Felsökningstips
- Pinecone-uppgifter kan löpa ut eller ha fel behörighet. Om retrieval plötsligt returnerar tom kontext, kontrollera din Pinecone API-nyckel och verifiera att namespace-namnen matchar det agenten förväntar sig.
- Om du använder Wait-noder eller extern rendering varierar processtider. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er varumärkesröst tidigt, annars kommer du redigera outputs för alltid.
Snabba svar
Cirka 60 minuter om Pinecone och Postgres redan är redo.
Nej. Du konfigurerar en webhook, kopplar in uppgifter och justerar prompter och routningsvärden.
Ja. n8n har ett gratis self-hosted-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 Pinecone och modellförbrukning (ofta några cent per konversation, beroende på storlek och trafik).
Två alternativ: n8n Cloud (hanterat, enklast uppsättning) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärt och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, och det bör du. Du kan lägga till fler sajter genom att utöka Switchen ”Route by Site Condition” och duplicera en agentgren (AI Assistant Route A/B/C) med ett nytt Pinecone-namespace. Vanliga justeringar är sidspecifika prompter (priser vs dokumentation), en striktare ”gissa inte”-policy och olika minnesregler för inloggade kontra anonyma användare.
Oftast är det ett API-nyckelproblem eller en namespace-mismatch. Skapa om din Pinecone-nyckel vid behov och bekräfta att index- och namespace-namn matchar exakt det agenten frågar mot. Kontrollera också rate limits om du plötsligt skickar mycket fler chattar än vanligt, eftersom retrieval-fel ofta syns som ”tom kontext” snarare än ett tydligt fel.
Om du self-hostar finns inget fast tak för antal körningar; det beror främst på din serverstorlek och modellens latens.
Ofta, ja, ärligt talat. Den här lösningen behöver routning, konversationsminne i flera turer och retrieval-logik som snabbt blir dyr och klumpig i Zapier eller Make när du går bortom ett enkelt tvåstegsflöde. n8n hanterar förgreningar snyggt, och self-hosting kan hålla kostnaderna förutsägbara när chattvolymen växer. Du får också mer kontroll över hur userId, site och page skickas genom kedjan, vilket ofta är där varumärkessäkerheten sitter. Zapier eller Make kan fortfarande fungera för väldigt lätta chattintegrationer, men de är inte byggda för den här typen av RAG-workflow. Prata med en automationsexpert om du vill ha hjälp att välja rätt stack.
När detta är live får varje sajt svar som faktiskt matchar dess dokumentation och tonläge, och ditt team slipper städa upp onödig chatbotförvirring. Sätt upp det en gång, och låt sedan workflowet göra det repetitiva jobbet.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.