AutomationFlowsAI & RAG › Automated Product Email Support with Gpt-4.1, Pinecone Rag, and Gmail

Automated Product Email Support with Gpt-4.1, Pinecone Rag, and Gmail

ByFayzul Noor @fayzul-noor on n8n.io

Description This workflow is built for e-commerce store owners, customer support teams, and retail businesses who want to provide instant, intelligent email support without hiring additional staff. If you're tired of manually responding to customer inquiries, searching through…

Event trigger★★★★☆ complexityAI-powered18 nodesTool Vector StorePinecone Vector StoreOpenAI EmbeddingsOpenAI ChatGmail TriggerOutput Parser StructuredChain LlmGmail
AI & RAG Trigger: Event Nodes: 18 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Agent → Chainllm 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": "qeDWlH9s79U0ePoL",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Formal Gmail Draft Updated",
  "tags": [],
  "nodes": [
    {
      "id": "5a2cd71e-c453-4d50-abd6-c548175665e0",
      "name": "Answer questions with a vector store",
      "type": "@n8n/n8n-nodes-langchain.toolVectorStore",
      "position": [
        -688,
        1472
      ],
      "parameters": {
        "name": "safai_info",
        "description": "Use this tool to answer every questions by the user."
      },
      "typeVersion": 1
    },
    {
      "id": "6f04f96a-80af-4498-8fb6-9fbb0d9765fb",
      "name": "Pinecone Vector Store1",
      "type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
      "position": [
        -784,
        1600
      ],
      "parameters": {
        "options": {
          "pineconeNamespace": "mens-collection"
        },
        "pineconeIndex": {
          "__rl": true,
          "mode": "list",
          "value": "mens-collection",
          "cachedResultName": "mens-collection"
        }
      },
      "credentials": {
        "pineconeApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "156218ac-ac53-4709-a817-6ad0c3c0391b",
      "name": "Embeddings OpenAI",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "position": [
        -656,
        1744
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "0081e565-c292-48a8-bc29-c6197e0b56de",
      "name": "OpenAI Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -960,
        1472
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-nano",
          "cachedResultName": "gpt-4.1-nano"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "2a672d15-27ca-4891-898d-aee83839f994",
      "name": "OpenAI Chat Model3",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -432,
        1600
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-nano",
          "cachedResultName": "gpt-4.1-nano"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f190f735-3dd1-4680-83ab-1b853816e5f0",
      "name": "Gmail Trigger1",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        -1760,
        1296
      ],
      "parameters": {
        "simple": false,
        "filters": {
          "q": "-from:me"
        },
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c7d38e8b-313e-4029-9162-a4a421efbdac",
      "name": "If Needs Reply1",
      "type": "n8n-nodes-base.if",
      "position": [
        -1184,
        1312
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "53849246-ad32-4845-9976-9f9688f5a6f2",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.needsReply }}",
              "rightValue": "true"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "a396adb8-3aef-46f1-af0b-35b9bb0c55a7",
      "name": "JSON Parser1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -1392,
        1488
      ],
      "parameters": {
        "jsonSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"needsReply\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\"needsReply\"]\n}\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e1e6c625-b2c9-4987-84b9-bdd01c7c0add",
      "name": "OpenAI Chat1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -1552,
        1488
      ],
      "parameters": {
        "model": "gpt-4.1",
        "options": {
          "temperature": 0,
          "responseFormat": "json_object"
        }
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "abdef9bf-cfeb-4530-aac0-7c686d6a5d4c",
      "name": "Assess if message needs a reply1",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        -1536,
        1312
      ],
      "parameters": {
        "prompt": "=Subject: {{ $json.subject }}\nMessage:\n{{ $json.textAsHtml }} ",
        "messages": {
          "messageValues": [
            {
              "message": "=Your task is to assess if the message requires a response. Return in JSON format true if it does, false otherwise. Emails which are not asking about anything regarding our men's clothin store don't require a response."
            }
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "2b435c89-1c00-41fe-ba84-6e5d81f213c5",
      "name": "Gmail",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -592,
        1136
      ],
      "parameters": {
        "message": "={{ $json.output }}",
        "options": {},
        "emailType": "text",
        "messageId": "={{ $('Gmail Trigger1').item.json.id }}",
        "operation": "reply"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "5d2ee49d-a014-4ba6-a036-5a2c610203bd",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1840,
        1200
      ],
      "parameters": {
        "color": 4,
        "height": 256,
        "content": "## Collecting Recieved Email"
      },
      "typeVersion": 1
    },
    {
      "id": "88aa8b62-f52e-49f0-8c12-bc3c1b0b78b8",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1584,
        1200
      ],
      "parameters": {
        "width": 304,
        "height": 448,
        "content": "## Assesing whether the mail needs a reply or not"
      },
      "typeVersion": 1
    },
    {
      "id": "0dfaa8d0-9879-4ceb-89c0-51da658748b5",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1264,
        1200
      ],
      "parameters": {
        "color": 3,
        "width": 272,
        "height": 272,
        "content": "## Selecting only the mails that need a reply"
      },
      "typeVersion": 1
    },
    {
      "id": "3b53a096-022b-4f4c-9b08-f18211c6e7b4",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -816,
        1392
      ],
      "parameters": {
        "color": 6,
        "width": 528,
        "height": 480,
        "content": "## Custom Knowledge Base for the AI Agent"
      },
      "typeVersion": 1
    },
    {
      "id": "72bca71f-0248-4132-a0c6-ccfe1fa2ab32",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -976,
        1136
      ],
      "parameters": {
        "color": 5,
        "width": 304,
        "height": 208,
        "content": "## RAG Agent"
      },
      "typeVersion": 1
    },
    {
      "id": "dca5339b-d877-42c6-bed3-377d51f6b26a",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -944,
        1200
      ],
      "parameters": {
        "text": "=Subject: {{ $('Gmail Trigger1').item.json.headers.subject }}\nMessage: {{ $('Gmail Trigger1').item.json.text }}",
        "options": {
          "systemMessage": "=You are a friendly and professional support agent for a men's clothing store whose goal is to help users by providing clear, accurate, and empathetic responses to their email. When a user asks a question or describes an issue through email regarding anything related to men's clothing store, use the Retrieval-Augmented Generation (RAG) tool to search and fetch the most relevant, up-to-date information from the knowledge base or documents available. Start the response with \"Dear\" header and end by saying \"Best regrads\" footer just like how a mail is written. (Dont add any name after \"Dear\")\n\nYour responses should:\n\n* Acknowledge the user\u2019s concern with empathy.\n* Use the RAG tool to find precise information relevant to the user\u2019s query.\n* Clearly explain the solution or information in simple, easy-to-understand language.\n* If you don\u2019t find an exact answer, be honest about it and offer helpful alternatives or next steps.\n* Always maintain a polite, patient, and supportive tone.\n* Keep responses short and concise: Only provide the price and key features of the service requested. Avoid additional details unless directly requested."
        },
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "98ac7648-0609-46c8-892f-fcfc236086a0",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -656,
        1056
      ],
      "parameters": {
        "color": 4,
        "width": 224,
        "height": 240,
        "content": "## Sending a Reply"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "6e680f8b-d304-441c-9c11-5bdacf7b7c87",
  "connections": {
    "AI Agent": {
      "main": [
        [
          {
            "node": "Gmail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "JSON Parser1": {
      "ai_outputParser": [
        [
          {
            "node": "Assess if message needs a reply1",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat1": {
      "ai_languageModel": [
        [
          {
            "node": "Assess if message needs a reply1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Gmail Trigger1": {
      "main": [
        [
          {
            "node": "Assess if message needs a reply1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If Needs Reply1": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Embeddings OpenAI": {
      "ai_embedding": [
        [
          {
            "node": "Pinecone Vector Store1",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model3": {
      "ai_languageModel": [
        [
          {
            "node": "Answer questions with a vector store",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Pinecone Vector Store1": {
      "ai_vectorStore": [
        [
          {
            "node": "Answer questions with a vector store",
            "type": "ai_vectorStore",
            "index": 0
          }
        ]
      ]
    },
    "Assess if message needs a reply1": {
      "main": [
        [
          {
            "node": "If Needs Reply1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Answer questions with a vector store": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "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

Description This workflow is built for e-commerce store owners, customer support teams, and retail businesses who want to provide instant, intelligent email support without hiring additional staff. If you're tired of manually responding to customer inquiries, searching through…

Source: https://n8n.io/workflows/10194/ — 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

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

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

This advanced n8n workflow automates the full lead enrichment, qualification, and personalized outreach process tailored specifically for the B2B real estate sector. Integrating top platforms like Api

N8N Nodes Fillout, OpenAI Chat, Pinecone Vector Store +11
AI & RAG

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

OpenAI, Gmail, Text Classifier +16
AI & RAG

Who is this for? This workflow is ideal for HR teams, startups, and enterprises that want to handle employee interactions through WhatsApp and automate responses using LLM (OpenAI) and intelligent rou

WhatsApp Trigger, OpenAI, OpenAI Chat +13
AI & RAG

BambooHR AI-Powered Company Policies and Benefits Chatbot. Uses manualTrigger, documentDefaultDataLoader, embeddingsOpenAi, textSplitterRecursiveCharacterTextSplitter. Event-driven trigger; 50 nodes.

Document Default Data Loader, OpenAI Embeddings, Text Splitter Recursive Character Text Splitter +14