AutomationFlowsAI & RAG › Run a Whatsapp Customer Support Chatbot with Openwa, Openai and Qdrant

Run a Whatsapp Customer Support Chatbot with Openwa, Openai and Qdrant

ByDavide Boizza @n3witalia on n8n.io

This workflow builds a WhatsApp customer-support chatbot using OpenWA and OpenAI, enriched with Qdrant RAG knowledge and optional Gmail escalation to a human agent, plus a manual knowledge-base ingestion flow that loads documents from Google Drive and indexes them into Qdrant.…

Event trigger★★★★★ complexityAI-powered33 nodes@Rmyndharis/N8N Nodes OpenwaOpenAI ChatDebug HelperMemory Buffer WindowQdrant Vector StoreOpenAI EmbeddingsTool CalculatorTool Vector Store
AI & RAG Trigger: Event Nodes: 33 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #17328 — we link there as the canonical source.

This workflow follows the Agent → Documentdefaultdataloader recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "XSzQzuvKqzxM2g0l",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Chatbot WhatsApp with OpenWA",
  "tags": [],
  "nodes": [
    {
      "id": "6b3d9c5b-e2a1-49f2-859d-404e8c3672e4",
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        -336,
        624
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "text",
              "conditions": {
                "options": {
                  "version": 3,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "8fb57762-6d9f-44da-8e72-d897a95bb42a",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data.type }}",
                    "rightValue": "text"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "not text",
              "conditions": {
                "options": {
                  "version": 3,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "117595c3-d1a6-4cab-a34c-63b1e622068b",
                    "operator": {
                      "type": "string",
                      "operation": "notEquals"
                    },
                    "leftValue": "={{ $json.data.type }}",
                    "rightValue": "text"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.4
    },
    {
      "id": "f838fb45-79a0-4869-bb28-6b8d0a9e5d92",
      "name": "OpenWA Trigger",
      "type": "@rmyndharis/n8n-nodes-openwa.openWaTrigger",
      "position": [
        -592,
        624
      ],
      "parameters": {
        "sessionId": "8aa24149-74d2-4131-9fce-7f5c2a2dfc5a"
      },
      "credentials": {
        "openWaApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "daa1c6f5-19fd-48e7-8098-cbedb07fb40a",
      "name": "Send Text",
      "type": "@rmyndharis/n8n-nodes-openwa.openWa",
      "onError": "continueErrorOutput",
      "position": [
        1104,
        576
      ],
      "parameters": {
        "chatId": "={{ $('Edit Fields1').item.json.chat_id }}",
        "message": "={{ $json.output }}",
        "sessionId": "={{ $('Edit Fields1').item.json.session_id }}"
      },
      "credentials": {
        "openWaApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b6bab206-4705-4b65-8c78-6cb046efdfc3",
      "name": "Edit Fields1",
      "type": "n8n-nodes-base.set",
      "position": [
        -48,
        608
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "9e3be03a-1b21-4bb6-9cd8-41967d532b0f",
              "name": "from",
              "type": "string",
              "value": "={{ $json.data.from }}"
            },
            {
              "id": "c004c15c-9751-42d9-8561-0834cb3052de",
              "name": "to",
              "type": "string",
              "value": "={{ $json.data.to }}"
            },
            {
              "id": "08580206-719a-47f8-b65d-5f818c27c9c0",
              "name": "chat_id",
              "type": "string",
              "value": "={{ $json.data.chatId }}"
            },
            {
              "id": "7f986b98-4f14-4dc9-be95-7dedb378f5b1",
              "name": "body",
              "type": "string",
              "value": "={{ $json.data.body }}"
            },
            {
              "id": "67489ec9-ed86-4900-ad4d-e517c5cb3836",
              "name": "type",
              "type": "string",
              "value": "={{ $json.data.type }}"
            },
            {
              "id": "d21fe282-5930-45fd-a24f-3d6783a1c7b7",
              "name": "timestamp",
              "type": "number",
              "value": "={{ $json.data.timestamp }}"
            },
            {
              "id": "f5bab7f6-307d-47c6-adcf-fd1b550e72bf",
              "name": "contact",
              "type": "string",
              "value": "={{ $json.data.contact.pushName }}"
            },
            {
              "id": "06841833-c99e-491d-a604-084ae00d1cfc",
              "name": "session_id",
              "type": "string",
              "value": "={{ $json.sessionId }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "c1dc7cb7-6543-4b77-bc25-a45f2243b167",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        96,
        768
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-mini",
          "cachedResultUrl": "",
          "cachedResultName": "gpt-5-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "fec89e1f-70e3-47e7-9871-0b7a0e86e6e8",
      "name": "Send Text1",
      "type": "@rmyndharis/n8n-nodes-openwa.openWa",
      "onError": "continueErrorOutput",
      "position": [
        -48,
        976
      ],
      "parameters": {
        "chatId": "={{ $json.chat_id }}",
        "message": "Hello, we accept only text message",
        "sessionId": "={{ $json.session_id }}"
      },
      "credentials": {
        "openWaApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c2571e40-9212-4310-a0da-6ab7366cf6cf",
      "name": "DebugHelper",
      "type": "n8n-nodes-base.debugHelper",
      "position": [
        144,
        1088
      ],
      "parameters": {
        "throwErrorType": "Error"
      },
      "typeVersion": 1
    },
    {
      "id": "5050dea9-4a62-4665-9330-37e2645b714c",
      "name": "DebugHelper1",
      "type": "n8n-nodes-base.debugHelper",
      "position": [
        1344,
        688
      ],
      "parameters": {
        "throwErrorType": "Error"
      },
      "typeVersion": 1
    },
    {
      "id": "7c984a34-d6fa-48cf-86c9-7c82e140cef8",
      "name": "Window Buffer Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        272,
        768
      ],
      "parameters": {
        "sessionKey": "={{ $('Edit Fields1').item.json.chat_id }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 10
      },
      "typeVersion": 1.3
    },
    {
      "id": "293d844f-c518-4708-9b3b-4728854116c6",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        800,
        1008
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "23102c3e-53ce-4e95-a978-5e221811e858",
      "name": "Retrive Qdrant Vector Store",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
      "position": [
        384,
        976
      ],
      "parameters": {
        "options": {},
        "qdrantCollection": {
          "__rl": true,
          "mode": "id",
          "value": "COLLECTION"
        }
      },
      "credentials": {
        "qdrantApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a81df4c4-0436-4698-bbec-b56b1ffe9093",
      "name": "Embeddings OpenAI2",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "position": [
        416,
        1152
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "b4529af0-edac-4351-b271-bbe46114a468",
      "name": "Calculator",
      "type": "@n8n/n8n-nodes-langchain.toolCalculator",
      "position": [
        400,
        768
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "0081f01e-4347-4128-804c-050ab427b82e",
      "name": "rag_search",
      "type": "@n8n/n8n-nodes-langchain.toolVectorStore",
      "position": [
        528,
        768
      ],
      "parameters": {
        "name": "company_data",
        "description": "Retrive data about company knowledge from vector store"
      },
      "typeVersion": 1
    },
    {
      "id": "4073e39e-ad46-465a-a98e-a49bd5246426",
      "name": "get_human_support",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        832,
        768
      ],
      "parameters": {
        "sendTo": "info@n3w.it",
        "message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', `containing the full conversation transcript and the customer's phone number for a callback`, 'string') }}",
        "options": {},
        "subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "b6f08922-35d5-4dc4-9be9-88902dd66ebf",
      "name": "Normalize",
      "type": "n8n-nodes-base.code",
      "position": [
        736,
        576
      ],
      "parameters": {
        "jsCode": "return items.map(item => {\n  const cleaned = String(item.json.output || \"\")\n    .replace(/\\r/g, \"\")\n    .replace(/\\n/g, \"\\\\n\")\n    .replace(/\\t/g, \"\\\\t\");\n\n  return {\n    json: {\n      ...item.json,\n      output_clean: cleaned\n    }\n  };\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "26a4161e-e33c-4499-a6e9-22abe2af72e9",
      "name": "Customer Support Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        192,
        576
      ],
      "parameters": {
        "text": "={{ $json.body }}",
        "options": {
          "systemMessage": "=# Website Customer Support AI Agent\n\nYou are an AI-powered customer support assistant. Your primary goal is to assist customers by providing accurate, helpful, and timely information about products, orders, and general support. You have access to a set of tools to retrieve real-time data and relevant knowledge \u2014 always use them proactively to give precise, personalized answers.\n\n---\n\n## TOOLS AVAILABLE\n\nUse the following tools whenever relevant \u2014 do not ask the customer for information you can retrieve yourself.\n\n### 1. `rag_search` \u2014 Knowledge Base Retrieval\nUse this tool to retrieve FAQs, policies (returns, shipping, warranty), troubleshooting guides, and general store information from the knowledge base.\n- **When to use**: store policy questions, technical support, compatibility questions, setup guides, promotions.\n- **Always query the knowledge base first** for any policy or technical question before answering.\n- If no relevant result is found, inform the customer and suggest contacting support.\n- Note: for real-time product data (price, stock, specs), prefer `get_product` or `get_many_products` over the knowledge base.\n\n\n### 2. `get_human_support` \u2014 Escalate to Human Support via Email\nUse this tool to escalate the conversation to a human support agent. When invoked, it sends an email (via Gmail) to the responsible support manager, containing the full conversation transcript and the customer's phone number for a callback.\n- **When to use**:\n  - The customer explicitly asks to speak with a human or be called back.\n  - The issue is too complex, sensitive, or unresolved after your best attempts (e.g., disputes, fraud suspicion, damaged goods, complex technical failures).\n  - The customer expresses frustration or dissatisfaction and needs human attention.\n  - Any situation where you have reached the limits of what you can resolve autonomously.\n- **Before invoking this tool**, you MUST:\n  1. Inform the customer that you are escalating to a human support agent.\n- **After invoking**, reassure the customer with a warm closing message confirming the escalation.\n- **Do not invoke this tool silently** \u2014 always announce it to the customer before and after.\n\n---\n\n## BEHAVIOR GUIDELINES\n\n### Technical Support\n- Query `rag_search` for troubleshooting guides, setup instructions, and FAQs.\n- If the product is known, also call `get_product` to confirm model details before providing technical steps.\n- Offer clear, numbered step-by-step guides.\n- If the issue is unresolved after exhausting the knowledge base, offer to escalate via `get_human_support`.\n\n### Human Escalation\n- Never leave the customer without a resolution path. If you cannot solve the issue, always offer `get_human_support` as the next step.\n- Treat escalation as a positive action, not a failure \u2014 frame it as connecting the customer with a specialist who will call them back personally.\n- Do not escalate prematurely \u2014 always attempt to resolve the issue autonomously first using the available tools.\n\n### Customer Service\n- If a question is ambiguous, ask one focused clarifying question before proceeding.\n- Keep responses concise but complete \u2014 avoid unnecessary filler, but never omit critical steps.\n\n### Knowledge Base Usage\n- Use `rag_search` for policies, FAQs, and technical guides \u2014 not for live product data.\n- Cite retrieved information naturally (e.g., \"According to our return policy\u2026\").\n- If the knowledge base returns no relevant result, say so clearly and provide a fallback (e.g., `get_human_support`).\n\n### Tone & Style\n- Friendly, approachable, and professional.\n- Avoid technical jargon unless the customer clearly demonstrates familiarity.\n- Use bullet points or numbered lists for multi-step instructions and product comparisons.\n- Never speculate or invent information \u2014 if unsure, say so and escalate."
        },
        "promptType": "define"
      },
      "typeVersion": 3.1
    },
    {
      "id": "0ca9aea6-f7cb-41e8-9a2c-6e984dd72946",
      "name": "When clicking \u2018Test workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -880,
        -208
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "103bd138-537d-42fd-ad4c-9324dca33a40",
      "name": "Qdrant Vector Store",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
      "position": [
        128,
        -80
      ],
      "parameters": {
        "mode": "insert",
        "options": {},
        "qdrantCollection": {
          "__rl": true,
          "mode": "list",
          "value": "wf-n8n",
          "cachedResultName": "wf-n8n"
        }
      },
      "credentials": {
        "qdrantApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9708b33f-1c67-4f7b-b1be-5a734ee5d73d",
      "name": "Create collection",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -560,
        -336
      ],
      "parameters": {
        "url": "https://QDRANTURL/collections/COLLECTION",
        "method": "POST",
        "options": {},
        "jsonBody": "{\n  \"filter\": {}\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "2951b8c9-9a89-41a5-a7ab-2ec2c147617c",
      "name": "Refresh collection",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -560,
        -80
      ],
      "parameters": {
        "url": "https:/YOUR_AWS_SECRET_KEY_HERE/delete",
        "method": "POST",
        "options": {},
        "jsonBody": "{\n  \"filter\": {}\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "c044d048-2a2b-428b-9452-05ce159d8730",
      "name": "Get folder",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -336,
        -80
      ],
      "parameters": {
        "filter": {
          "driveId": {
            "__rl": true,
            "mode": "list",
            "value": "My Drive",
            "cachedResultUrl": "https://drive.google.com/drive/my-drive",
            "cachedResultName": "My Drive"
          },
          "folderId": {
            "__rl": true,
            "mode": "id",
            "value": "=test-whatsapp"
          }
        },
        "options": {},
        "resource": "fileFolder"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "711a7df5-fc1f-4069-b119-95594b10de6c",
      "name": "Download Files",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -112,
        -80
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {
          "googleFileConversion": {
            "conversion": {
              "docsToFormat": "text/plain"
            }
          }
        },
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "dd6c1b54-f1d9-483c-b2af-5362974becc3",
      "name": "Embeddings OpenAI",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "position": [
        112,
        128
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "4e14b88e-c4b5-4bdb-8594-d525194e6feb",
      "name": "Default Data Loader",
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "position": [
        288,
        128
      ],
      "parameters": {
        "options": {},
        "dataType": "binary"
      },
      "typeVersion": 1
    },
    {
      "id": "f7214595-804a-4c91-b1b3-aea1c273d63f",
      "name": "Token Splitter",
      "type": "@n8n/n8n-nodes-langchain.textSplitterTokenSplitter",
      "position": [
        256,
        288
      ],
      "parameters": {
        "chunkSize": 300,
        "chunkOverlap": 30
      },
      "typeVersion": 1
    },
    {
      "id": "c914d97f-c464-4261-a03c-dfdcee14f287",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -640,
        -448
      ],
      "parameters": {
        "color": 7,
        "width": 1248,
        "height": 284,
        "content": "## STEP 1 -  Create Qdrant Collection\nChange:\n- QDRANTURL\n- COLLECTION"
      },
      "typeVersion": 1
    },
    {
      "id": "fbb8ebea-94f4-41f6-8302-c78089850d69",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -640,
        -144
      ],
      "parameters": {
        "color": 7,
        "width": 1244,
        "height": 560,
        "content": "## STEP 2 - Documents vectorization with Qdrant and Google Drive\n\n\n\n\n\n\n\n\n\n\n\nChange:\n- QDRANTURL\n- COLLECTION"
      },
      "typeVersion": 1
    },
    {
      "id": "10e30e1b-a2a1-47bb-ba03-09f72aef026d",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        624,
        -336
      ],
      "parameters": {
        "width": 1488,
        "height": 752,
        "content": "## OpenSource Customer Support WhatsApp Chatbot with OpenWA, RAG & Escalation\n\nThis workflow is a complete **AI-powered customer support automation** businesses.\n\nThe system allows customers to interact with an AI assistant directly through **WhatsApp**.\n This chatbot can:\n\n* Answer customer questions in real time\n* Access company policies and FAQs using RAG (Retrieval-Augmented Generation)\n* Escalate conversations to human support when necessary\n* Maintain conversation memory for contextual interactions\n\n[Click here to install OpenWA for FREE](https://www.open-wa.org/#quickstart). It's Open Source.\n\n### How it works\n\nThis workflow automates e-commerce customer support through WhatsApp using OpenWA, AI agents, Qdrant, and Gmail. Text messages processed by an AI Agent with conversation memory, RAG-based knowledge search and human escalation when needed.\n\nResponses are normalized and sent back through WhatsApp. A separate manual flow builds the knowledge base by loading documents from Google Drive, splitting them, generating OpenAI embeddings, and storing them in Qdrant for semantic retrieval.\n\n### Setup steps\n\nConfigure credentials for OpenWA, OpenAI or Gemini, Qdrant, Google Drive, and Gmail. Create the Qdrant collection, upload knowledge base files to Google Drive, set the folder ID, and run the manual vectorization flow to store searchable embeddings.\n\nThen configure the AI Agent prompt, connect the chosen language model and tools, copy the WhatsApp webhook URL from n8n into OpenWA, and activate the workflow. Ensure RAG search, memory, and Gmail escalation are connected before going live.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "2edcf489-2b65-4277-a1d3-b286e2e7dfc0",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -144,
        448
      ],
      "parameters": {
        "color": 7,
        "width": 1099,
        "height": 885,
        "content": "## STEP 4 - AI Agent\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a7b3297a-cd18-4a6d-88c1-7842845271c0",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        976,
        448
      ],
      "parameters": {
        "color": 7,
        "width": 1132,
        "height": 884,
        "content": "## Configure AI Agent\nSet System prompt and chat model. If you want you can set any tools"
      },
      "typeVersion": 1
    },
    {
      "id": "d46893a9-7b5d-4c43-bcb4-35e873b12d38",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -624,
        448
      ],
      "parameters": {
        "color": 7,
        "width": 459,
        "height": 885,
        "content": "## STEP 3 - WhatsApp OpenWA Webhook \nInstall OpenWA Open Source with Docker on your VPS and n8n Community node\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "b9cec302-a6e6-4b45-a91e-159ca62df089",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2144,
        -336
      ],
      "parameters": {
        "color": 7,
        "width": 736,
        "height": 752,
        "content": "## MY NEW YOUTUBE CHANNEL\n\ud83d\udc49 [Subscribe to my new **YouTube channel**](https://youtube.com/@n3witalia). Here I\u2019ll share videos and Shorts with practical tutorials and **FREE templates for n8n**.\n\n[![image](https://n3wstorage.b-cdn.net/n3witalia/youtube-n8n-cover.jpg)](https://youtube.com/@n3witalia)"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "aa32587e-76c8-4df1-ad87-2bfd6b13c18a",
  "nodeGroups": [],
  "connections": {
    "Switch": {
      "main": [
        [
          {
            "node": "Edit Fields1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Text1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Normalize": {
      "main": [
        [
          {
            "node": "Send Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Text": {
      "main": [
        [],
        [
          {
            "node": "DebugHelper1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculator": {
      "ai_tool": [
        [
          {
            "node": "Customer Support Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get folder": {
      "main": [
        [
          {
            "node": "Download Files",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Text1": {
      "main": [
        [],
        [
          {
            "node": "DebugHelper",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "rag_search": {
      "ai_tool": [
        [
          {
            "node": "Customer Support Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields1": {
      "main": [
        [
          {
            "node": "Customer Support Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Files": {
      "main": [
        [
          {
            "node": "Qdrant Vector Store",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenWA Trigger": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Token Splitter": {
      "ai_textSplitter": [
        [
          {
            "node": "Default Data Loader",
            "type": "ai_textSplitter",
            "index": 0
          }
        ]
      ]
    },
    "Embeddings OpenAI": {
      "ai_embedding": [
        [
          {
            "node": "Qdrant Vector Store",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Customer Support Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "get_human_support": {
      "ai_tool": [
        [
          {
            "node": "Customer Support Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Embeddings OpenAI2": {
      "ai_embedding": [
        [
          {
            "node": "Retrive Qdrant Vector Store",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "rag_search",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Refresh collection": {
      "main": [
        [
          {
            "node": "Get folder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Default Data Loader": {
      "ai_document": [
        [
          {
            "node": "Qdrant Vector Store",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "Window Buffer Memory": {
      "ai_memory": [
        [
          {
            "node": "Customer Support Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Customer Support Agent": {
      "main": [
        [
          {
            "node": "Normalize",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Retrive Qdrant Vector Store": {
      "ai_vectorStore": [
        [
          {
            "node": "rag_search",
            "type": "ai_vectorStore",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "Create collection",
            "type": "main",
            "index": 0
          },
          {
            "node": "Refresh collection",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow builds a WhatsApp customer-support chatbot using OpenWA and OpenAI, enriched with Qdrant RAG knowledge and optional Gmail escalation to a human agent, plus a manual knowledge-base ingestion flow that loads documents from Google Drive and indexes them into Qdrant.…

Source: https://n8n.io/workflows/17328/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

📌 Overview

Redis, WhatsApp, OpenAI Chat +12
AI & RAG

Alfred (funcional). Uses gmailTool, googleCalendarTool, gmail, embeddingsOpenAi. Event-driven trigger; 83 nodes.

Gmail Tool, Google Calendar Tool, Gmail +24
AI & RAG

Your AI workforce is ready. Are you?

Google Sheets Tool, Mcp Trigger, Google Drive +29
AI & RAG

This comprehensive workflow bundle is designed as a powerful starter kit, enabling you to build a multi-functional AI assistant on Telegram. It seamlessly integrates AI-powered voice interactions, an

Telegram Trigger, Telegram, OpenAI +19
AI & RAG

Agent IA Projet Client. Uses executeWorkflowTrigger, lmChatOpenAi, toolWorkflow, vectorStoreQdrant. Event-driven trigger; 79 nodes.

Execute Workflow Trigger, OpenAI Chat, Tool Workflow +16