This workflow follows the Agent → OpenAI Embeddings 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 →
{
"name": "Customer Support Workflow",
"nodes": [
{
"parameters": {
"content": "# 2) Customer Support Workflow\n",
"height": 80,
"width": 580,
"color": 5
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-120,
-340
],
"id": "7bb88475-d8de-476e-803b-30921a97f60e",
"name": "Sticky Note"
},
{
"parameters": {
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"simple": false,
"filters": {},
"options": {}
},
"type": "n8n-nodes-base.gmailTrigger",
"typeVersion": 1.2,
"position": [
-360,
-20
],
"id": "1517509f-455d-44f8-ab03-5a220450c33b",
"name": "Gmail Trigger",
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"inputText": "={{ $json.text }}",
"categories": {
"categories": [
{
"category": "Customer Support",
"description": "An email that is related to helping out a customer. They may be asking questions about our policies or questions about our products or services."
},
{
"category": "Other",
"description": "Any email that is not customer support related."
}
]
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.textClassifier",
"typeVersion": 1,
"position": [
-100,
-20
],
"id": "181c9b3c-c2f3-4a5b-b5ab-435bdc47d26f",
"name": "Text Classifier"
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"typeVersion": 1,
"position": [
-160,
160
],
"id": "c9a0f456-2dfe-4fdc-b40b-4ae9254a3ece",
"name": "OpenRouter Chat Model",
"credentials": {
"openRouterApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {},
"type": "n8n-nodes-base.noOp",
"typeVersion": 1,
"position": [
340,
200
],
"id": "e750b21f-1fa4-4ada-b428-ba4f146c2a84",
"name": "No Operation, do nothing"
},
{
"parameters": {
"promptType": "define",
"text": "={{ $('Gmail Trigger').item.json.text }}",
"options": {
"systemMessage": "=# Overview\nYou are a customer support agent from Tech Haven. Your job is to write responses to incoming emails using your knowledgeBase tool.\n\n## Output\nOnly output the email body\n\n## Instructions\n- Write friendly emails with emojis\n- Sign off as Mr. Helpful from Tech Haven Solutions"
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.8,
"position": [
380,
-140
],
"id": "a20c4dcc-8ed5-4698-99e3-74577549072d",
"name": "AI Agent"
},
{
"parameters": {
"mode": "retrieve-as-tool",
"toolName": "knowledgeBase",
"toolDescription": "Call this tool to access information about Policies and FAQ",
"pineconeIndex": {
"__rl": true,
"value": "sample",
"mode": "list",
"cachedResultName": "sample"
},
"options": {
"pineconeNamespace": "FAQ"
}
},
"type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
"typeVersion": 1.1,
"position": [
520,
40
],
"id": "a946a825-8fe7-4905-83e2-f9c2c826eaae",
"name": "Pinecone Vector Store",
"credentials": {
"pineconeApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1.2,
"position": [
560,
220
],
"id": "e4124204-b90a-49f2-b448-eeae828207a3",
"name": "Embeddings OpenAI",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
360,
20
],
"id": "a6b5a555-b8a6-4b4f-be65-6a0b0f8b3128",
"name": "OpenAI Chat Model",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "addLabels",
"messageId": "={{ $('Gmail Trigger').item.json.id }}",
"labelIds": [
"Label_1594706753190197855"
]
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [
740,
-140
],
"id": "5ff212e0-7f6b-4ba2-80ab-fabdb6287c58",
"name": "Label",
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "reply",
"messageId": "={{ $('Gmail Trigger').item.json.id }}",
"emailType": "text",
"message": "={{ $json.output }}",
"options": {
"appendAttribution": false
}
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [
940,
-140
],
"id": "7d1f41f3-97c9-4127-8eef-551b2688451a",
"name": "Send",
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
}
],
"connections": {
"Gmail Trigger": {
"main": [
[
{
"node": "Text Classifier",
"type": "main",
"index": 0
}
]
]
},
"OpenRouter Chat Model": {
"ai_languageModel": [
[
{
"node": "Text Classifier",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Text Classifier": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Pinecone Vector Store": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Embeddings OpenAI": {
"ai_embedding": [
[
{
"node": "Pinecone Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Label",
"type": "main",
"index": 0
}
]
]
},
"Label": {
"main": [
[
{
"node": "Send",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "86388fd5-b1c1-49b5-b047-419ad75fa5aa",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "xJAfJtLTjPUuZcJi",
"tags": []
}
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.
gmailOAuth2openAiApiopenRouterApipineconeApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow streamlines customer support by automatically trialling incoming emails via Gmail, classifying their intent with a text classifier, and generating personalised responses using an AI agent powered by OpenRouter's chat model. It's ideal for small teams or solo operators handling routine enquiries, freeing up time for complex issues while ensuring consistent, professional replies. The key step involves the AI agent querying a Pinecone vector store of past interactions to craft context-aware answers, reducing response times from hours to minutes.
Use this when you receive a steady volume of similar support emails, such as product questions or billing queries, and want AI to handle initial triage without human oversight. Avoid it for highly sensitive topics like legal disputes, where manual review is essential to prevent errors. Common variations include swapping Gmail for another email trigger or adding a Slack notification for escalations beyond AI capabilities.
About this workflow
Customer Support Workflow. Uses stickyNote, gmailTrigger, textClassifier, lmChatOpenRouter. Event-driven trigger; 11 nodes.
Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Alfred (funcional). Uses gmailTool, googleCalendarTool, gmail, embeddingsOpenAi. Event-driven trigger; 83 nodes.
Your AI workforce is ready. Are you?
This n8n template automatically classifies incoming emails (Sales, Support, Internal, Finance, Promotions) and routes them to a dedicated OpenAI LLM Agent for processing. Depending on the category, th
Turn your cluttered inbox into a smart, autonomous assistant that categorizes emails, replies to leads, checks your calendar, and notifies you on Telegram—all without lifting a finger.
This workflow demonstrates how to use AI text classifier to classify incoming emails, and uses a multi-agent architecture to respond for each email category respectively.