AutomationFlowsAI & RAG › AI Email Classification with Gmail & Gemini

AI Email Classification with Gmail & Gemini

Original n8n title: (g) - Email Classification

(G) - Email Classification. Uses gmailTrigger, lmChatGoogleGemini, agent, lmChatGroq. Event-driven trigger; 15 nodes.

Event trigger★★★★☆ complexityAI-powered15 nodesGmail TriggerGoogle Gemini ChatAgentGroq ChatGmailText Classifier
AI & RAG Trigger: Event Nodes: 15 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Agent → Gmail 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": "m8gr0YZgCx5Qrsia",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "(G) - Email Classification",
  "tags": [],
  "nodes": [
    {
      "id": "0226578d-4741-42f2-8a7b-c750f75be78d",
      "name": "Gmail Trigger",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {
        "simple": false,
        "filters": {},
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "48d0ee27-d4d6-4db4-843c-d9c18b934945",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        220,
        320
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-001"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d7e8bed4-cadc-41e3-b793-cc8affb177cc",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "disabled": true,
      "position": [
        1420,
        60
      ],
      "parameters": {
        "text": "=Here's the email context: {{ $('Classification Agent').item.json.text }}",
        "options": {
          "systemMessage": "You are my personal assistant for Kajonkietsuksa School.\nYour role is to help me with any work-related tasks.\nOne of your main responsibilities is to write professional and polite reply emails whenever I receive an email in my inbox. Act as me, don't include something like \"here's a potential reply email or other\"\n\nWhen writing a reply email:\n\nStart by acknowledging the sender's message.\n\nAnswer their questions or address their requests clearly and directly.\n\nMaintain a polite, professional, and helpful tone.\n\nKeep the language simple and easy to understand.\n\nIf additional action is required from me, mention that I will get back to them soon.\n\nAlways end the email with a courteous closing line, such as \"Thank you\" or \"Best regards.\"\n\nKeep your writing style consistent with a warm yet formal communication style that reflects the reputation of Kajonkietsuksa School.\n\n"
        },
        "promptType": "define"
      },
      "typeVersion": 1.8
    },
    {
      "id": "3b5cabb7-346f-4b69-b3f4-c61e78e2d8c7",
      "name": "Groq Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGroq",
      "disabled": true,
      "position": [
        1440,
        180
      ],
      "parameters": {
        "model": "meta-llama/llama-4-scout-17b-16e-instruct",
        "options": {}
      },
      "credentials": {
        "groqApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "43984fb2-7a26-4e13-95ee-c29f0d9f2f24",
      "name": "Gmail3",
      "type": "n8n-nodes-base.gmail",
      "disabled": true,
      "position": [
        1780,
        60
      ],
      "parameters": {
        "message": "={{ $json.output }}",
        "options": {},
        "subject": "=Re: {{ $('Gmail Trigger').item.json.headers.subject }}",
        "resource": "draft"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "c269ec5e-f882-4458-ab52-46b719731309",
      "name": "Classification Agent",
      "type": "@n8n/n8n-nodes-langchain.textClassifier",
      "position": [
        240,
        0
      ],
      "parameters": {
        "options": {
          "systemPromptTemplate": "Please classify the text provided by the user into one of the following categories: {categories}, and use the provided formatting instructions below. Don't explain, and only output the json."
        },
        "inputText": "={{ $json.text || $json.html }}",
        "categories": {
          "categories": [
            {
              "category": "High Priority",
              "description": "Emails requiring immediate attention or action, typically from key stakeholders, clients, or decision-makers. These emails often contain time-sensitive requests, deadlines, or escalated issues. Keywords: urgent, ASAP, immediate, deadline, action required, high priority"
            },
            {
              "category": "KS Work Related",
              "description": "Anything related to my school or education. Keyword: Kajonkietsuksa School, Kajonkietsuksa, School"
            },
            {
              "category": "Promotion",
              "description": "Anything related to updating on promotions. Keywords: newsletter, promotion, offer, sale, campaign, marketing, launch"
            },
            {
              "category": "Other",
              "description": "If you don't know what category is this email."
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "17be38df-c225-4d19-81ec-e205ff4b9f3c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        60,
        260
      ],
      "parameters": {
        "color": 4,
        "width": 300,
        "height": 80,
        "content": "### 2) Change to your desire LLMs"
      },
      "typeVersion": 1
    },
    {
      "id": "3e8ac267-c2ac-49cb-ad53-536510faa1a4",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        -60
      ],
      "parameters": {
        "color": 4,
        "content": "### 1) Change to your gmail's credential"
      },
      "typeVersion": 1
    },
    {
      "id": "f5e2c92d-3335-4ed0-915e-f7edeb0b5a92",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        220,
        -380
      ],
      "parameters": {
        "color": 4,
        "width": 340,
        "content": "### 3) Login to your gmail inbox\n* Create a label with \"+\" icon\n* Change the color of your choice"
      },
      "typeVersion": 1
    },
    {
      "id": "4a8a7424-f9dd-42b1-b803-5d0dbe076956",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        220,
        -160
      ],
      "parameters": {
        "color": 4,
        "width": 320,
        "content": "### 4) Agent instruction\n* Input the category name that you just created in gmail.\n* Description = Tell agent about how should it classify your email. Keywords can be useful to let your agent classify the email context."
      },
      "typeVersion": 1
    },
    {
      "id": "24c7ef4e-7a68-4240-980b-02b994300084",
      "name": "Add Label Promotion",
      "type": "n8n-nodes-base.gmail",
      "position": [
        700,
        200
      ],
      "parameters": {
        "labelIds": [
          "Label_4917715854276709190"
        ],
        "messageId": "={{ $json.id }}",
        "operation": "addLabels"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "759f8cbe-4674-49e5-a52b-2acf208ffb22",
      "name": "Add Label (KS Work Related)",
      "type": "n8n-nodes-base.gmail",
      "position": [
        700,
        0
      ],
      "parameters": {
        "labelIds": [
          "Label_4956837555783205638"
        ],
        "messageId": "={{ $json.id }}",
        "operation": "addLabels"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "d07fe962-16c0-401a-b194-5ce7e6ad9746",
      "name": "Add Label (High Priority)",
      "type": "n8n-nodes-base.gmail",
      "position": [
        700,
        -200
      ],
      "parameters": {
        "labelIds": [
          "Label_3750994713301985229"
        ],
        "messageId": "={{ $json.id }}",
        "operation": "addLabels"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "7d0c9bd5-6150-4afa-9344-8bb3c1a6b01c",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        660,
        -320
      ],
      "parameters": {
        "color": 4,
        "width": 320,
        "content": "### 5) Add Label Nodes\n* In this option \"Label Names or IDs\" -> Select the category to match with the Classification Agent Node."
      },
      "typeVersion": 1
    },
    {
      "id": "d57ecacb-a479-4bf7-b9b4-b9e14e30dcd7",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        980,
        60
      ],
      "parameters": {
        "color": 4,
        "width": 220,
        "content": "### 6) Add-on\n* You can add more category of your choice!"
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "c94df4ec-be75-449f-82fa-4e1f8878104a",
  "connections": {
    "AI Agent": {
      "main": [
        [
          {
            "node": "Gmail3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gmail Trigger": {
      "main": [
        [
          {
            "node": "Classification Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Groq Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Classification Agent": {
      "main": [
        [
          {
            "node": "Add Label (High Priority)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Add Label (KS Work Related)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Add Label Promotion",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Classification Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Add Label (KS Work Related)": {
      "main": [
        []
      ]
    }
  }
}

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

How this works

This workflow automatically classifies incoming emails by analysing their content with AI, helping you prioritise urgent messages, sort newsletters from personal correspondence, or flag spam without manual effort. It's ideal for busy professionals, small business owners, or anyone overwhelmed by email volume who wants to reclaim time for important tasks. The key step involves the Gmail trigger capturing new emails, followed by an AI agent powered by Google Gemini and Groq models that intelligently categorises them into predefined labels like 'Urgent', 'Marketing', or 'Personal' before updating your inbox accordingly.

Use this workflow when you receive high email traffic and need consistent, rule-free sorting that adapts to nuanced language, such as distinguishing work feedback from casual chats. Avoid it for very low-volume inboxes where manual review suffices, or if your emails require complex actions beyond classification like automated replies. Common variations include adding Slack notifications for high-priority categories or integrating with Google Calendar to schedule follow-ups based on classified events.

About this workflow

(G) - Email Classification. Uses gmailTrigger, lmChatGoogleGemini, agent, lmChatGroq. Event-driven trigger; 15 nodes.

Source: https://github.com/Zie619/n8n-workflows — 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

Quickly organize your inbox with AI! This simple workflow automatically classifies incoming emails into different categories — like High Priority, Work Related, or Promotions — and applies Gmail label

Gmail Trigger, Google Gemini Chat, Agent +3
AI & RAG

ITfest. Uses telegramTrigger, telegram, textClassifier, agent. Event-driven trigger; 70 nodes.

Telegram Trigger, Telegram, Text Classifier +6
AI & RAG

Use cases are many: Manage your Gmail inbox, schedule calendar events, and handle contact details — all from one central AI-powered assistant. Perfect for freelancers managing clients, agency owners w

Agent, Gmail Tool, Google Gemini Chat +10
AI & RAG

Inbox Guardian. Uses gmailTrigger, lmChatOpenAi, agent, textClassifier. Event-driven trigger; 66 nodes.

Gmail Trigger, OpenAI Chat, Agent +12
AI & RAG

This template and YouTube video goes over 5 different implementations of evaluations within n8n. Categorization Correctness Tools used String similarity Helpfulness

Evaluation, Evaluation Trigger, Google Gemini Chat +8