AutomationFlowsAI & RAG › AI Gmail Support Automation with Google Gemini, Openai & Pinecone

AI Gmail Support Automation with Google Gemini, Openai & Pinecone

ByMuhammad Ali @ali01 on n8n.io

This workflow turns your Gmail inbox into an AI-powered customer support assistant using Google Gemini, OpenAI embeddings, and Pinecone vector search. It automatically classifies incoming emails, retrieves context-based answers from your knowledge base, and replies instantly…

Event trigger★★★★☆ complexityAI-powered14 nodesGmail TriggerGoogle Gemini ChatOpenAI EmbeddingsSlackGmailAgentText ClassifierPinecone Vector Store
AI & RAG Trigger: Event Nodes: 14 Complexity: ★★★★☆ AI nodes: yes Added:

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

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 →

Download .json
{
  "id": "Dxfmbt0hbIr6GN01",
  "name": "Customer_Support_Agent",
  "tags": [],
  "nodes": [
    {
      "id": "be23e9c7-5b61-4578-940d-7d992594009f",
      "name": "Gmail Trigger",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        576,
        304
      ],
      "parameters": {
        "simple": false,
        "filters": {},
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "00a8bbd7-f686-4418-bead-094ceeaa5b17",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        784,
        464
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash"
      },
      "typeVersion": 1
    },
    {
      "id": "d380d68c-e23f-4f04-82a4-4afe389c4e59",
      "name": "No Operation, do nothing",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1088,
        416
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "4e326e15-1ecd-4f76-8eaf-6f2648f314c9",
      "name": "Embeddings OpenAI",
      "type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
      "position": [
        1280,
        528
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.2
    },
    {
      "id": "17f862f3-057b-4066-896a-a2017a5859ed",
      "name": "Notify Team",
      "type": "n8n-nodes-base.slack",
      "position": [
        1904,
        240
      ],
      "parameters": {
        "text": "Response to query sent",
        "user": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "select": "user",
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "typeVersion": 2.3
    },
    {
      "id": "3f259a9a-809f-43d1-bcce-2453df7f7028",
      "name": "Reply to Query",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1904,
        16
      ],
      "parameters": {
        "message": "={{ $('Email Support Agent').item.json.output }}",
        "options": {},
        "emailType": "text",
        "messageId": "={{ $json.id }}",
        "operation": "reply"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "ec4d6090-b2c1-4b58-8fba-35177199ecf0",
      "name": "Label Query",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1680,
        128
      ],
      "parameters": {
        "labelIds": [
          "Label_86712+1234567890"
        ],
        "messageId": "={{ $('Intent Classifier').item.json.id }}",
        "operation": "addLabels"
      },
      "typeVersion": 2.1
    },
    {
      "id": "470a6a6b-7f9d-47c2-92b2-d36a040eb185",
      "name": "Email Support Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1248,
        112
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {
          "systemMessage": "You are an expert Customer support Agent your job is to reply to customer message. Use ppincone vector tool to get data from knowledge base to answer to relevant question of Customer\n## Output\noutput must be body of email it does not include subject\nit is replying to an email not writing an email"
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "0fb47262-525e-40d6-8505-8cb3ba17af9b",
      "name": "Intent Classifier",
      "type": "@n8n/n8n-nodes-langchain.textClassifier",
      "position": [
        768,
        304
      ],
      "parameters": {
        "options": {},
        "inputText": "={{ $json.text }}",
        "categories": {
          "categories": [
            {
              "category": "Customer Support",
              "description": "Any email that is related to helping cutomer . it may contains a question , query etc "
            },
            {
              "category": "Other",
              "description": "email other than Customer support"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "1e327de4-9bd8-46b3-901f-e02abbc89ee2",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        32
      ],
      "parameters": {
        "width": 464,
        "height": 464,
        "content": "## Gmail AI Support Automation\n\n## How it works\nThis workflow turns your Gmail inbox into an AI-powered support assistant. When a new email arrives, it\u2019s classified by intent using Google Gemini. If it\u2019s a support request, the Email Support Agent uses OpenAI embeddings and Pinecone to craft a context-aware reply. The workflow then labels the conversation, sends the reply via Gmail, and notifies your team in Slack.\n## Setup steps\n1.  Connect Gmail \u2192 authenticate your account.\n2. Add API keys for Google Gemini and OpenAI.\n3. Connect Pinecone, then create or select an index.\n4. (Optional) Integrate Slack for team alerts.\n5. Adjust response tone in the Email Support Agent node.\n\n\nTest by sending a sample email  the AI reply, Gmail label, and Slack alert confirm setup."
      },
      "typeVersion": 1
    },
    {
      "id": "814e7a7c-81ea-4675-a4e4-6e8c0c75b40b",
      "name": "Pinecone Vector Store",
      "type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
      "position": [
        1360,
        336
      ],
      "parameters": {
        "mode": "retrieve-as-tool",
        "options": {},
        "pineconeIndex": {
          "__rl": true,
          "mode": "list",
          "value": "new",
          "cachedResultName": "new"
        },
        "toolDescription": "Use this tool when you need to answer customer query "
      },
      "typeVersion": 1.3
    },
    {
      "id": "0f2da3bd-9b62-4b84-b318-618ebd99dda7",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        528,
        240
      ],
      "parameters": {
        "color": 7,
        "width": 512,
        "height": 352,
        "content": "## Gmail Intake"
      },
      "typeVersion": 1
    },
    {
      "id": "93e9dc0c-fedc-4947-9416-c70b5de1b170",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1216,
        64
      ],
      "parameters": {
        "color": 4,
        "width": 304,
        "height": 176,
        "content": "## AI Response Engine"
      },
      "typeVersion": 1
    },
    {
      "id": "43c00e83-c9f4-4553-8931-6e8902ed95cf",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1648,
        -48
      ],
      "parameters": {
        "color": 6,
        "width": 480,
        "height": 448,
        "content": "## Actions & Notifications"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "46cbae47-265f-4bb6-822c-c9e542d40e0f",
  "connections": {
    "Label Query": {
      "main": [
        [
          {
            "node": "Reply to Query",
            "type": "main",
            "index": 0
          },
          {
            "node": "Notify Team",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gmail Trigger": {
      "main": [
        [
          {
            "node": "Intent Classifier",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Embeddings OpenAI": {
      "ai_embedding": [
        [
          {
            "node": "Pinecone Vector Store",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "Intent Classifier": {
      "main": [
        [
          {
            "node": "Email Support Agent",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "No Operation, do nothing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Email Support Agent": {
      "main": [
        [
          {
            "node": "Label Query",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pinecone Vector Store": {
      "ai_tool": [
        [
          {
            "node": "Email Support Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Intent Classifier",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Email Support Agent",
            "type": "ai_languageModel",
            "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 turns your Gmail inbox into an AI-powered customer support assistant using Google Gemini, OpenAI embeddings, and Pinecone vector search. It automatically classifies incoming emails, retrieves context-based answers from your knowledge base, and replies instantly…

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

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

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.

Gmail Trigger, OpenAI Embeddings, Gmail +7
AI & RAG

This n8n workflow establishes a sophisticated, multi-stage support system. It automatically validates user identity, analyzes ticket severity and sentiment, and attempts to resolve lower-priority issu

Jot Form Trigger, Agent, Google Gemini Chat +9
AI & RAG

Unlock unparalleled efficiency and elevate customer satisfaction with our AI-Powered Customer Support: Email, Knowledge Base & Human Escalation Automation template. This sophisticated n8n workflow is

OpenAI Chat, Agent, Gmail +11
AI & RAG

This n8n template demonstrates how to build an AI-powered customer support workflow that automatically handles incoming Gmail messages, classifies them, finds answers from your knowledge base, and sen

Text Classifier, OpenAI Chat, Agent +8