Assistant e-mail intelligent avec classification AI, brouillon Gmail et notification Slack

Avancé

Ceci est unTicket Management, AI Summarizationworkflow d'automatisation du domainecontenant 16 nœuds.Utilise principalement des nœuds comme Set, Code, Gmail, Slack, Switch. Automatisation de la gestion des e-mails via la classification OpenAI, les brouillons Gmail et les alertes Slack

Prérequis
  • Compte Google et informations d'identification Gmail API
  • Token Bot Slack ou URL Webhook
  • Clé API OpenAI
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "id": "FSJP3VvgYM0hlloV",
  "meta": {
    "instanceId": "1ada9ce9d909de0cc535c0dfb57eee784c801e364e1670e7476e5ce8b69d1197"
  },
  "name": "Intelligent Email Assistant with AI Classification, Gmail Drafts, and Slack Notifications",
  "tags": [
    {
      "id": "grLYSyd5iJcUTmvb",
      "name": "ZenAgent Labs",
      "createdAt": "2025-06-29T14:28:06.655Z",
      "updatedAt": "2025-06-29T14:28:06.655Z"
    }
  ],
  "nodes": [
    {
      "id": "e777600d-4456-4bcd-b356-231a340e8da7",
      "name": "Description du workflow",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -700,
        140
      ],
      "parameters": {
        "width": 550,
        "height": 1300,
        "content": "## Intelligent Email Assistant with AI Classification, Gmail Drafts, and Slack Notifications\n\n**Created by [ZenAgent Labs](https://zenagentlabs.com)**\n\n![ZenAgent Labs Logo](https://zntl.de/wp-content/uploads/ZENAGENT-Labs-Logo-white-trans.png)\n\n### What it does\nThis workflow automatically processes incoming emails with intelligent AI classification, creating draft responses and sending Slack notifications based on email content.\n\n### How it works\n1. **Monitors emails** with the 'AI-Agent' label\n2. **AI classification** into categories: Inquiry, Support, Newsletter, Action Item\n3. **Adds appropriate labels** to emails automatically\n4. **Creates draft replies** for Support and Inquiry emails\n5. **Sends Slack notifications** for Action Items and Newsletter summaries\n\n### Setup Requirements\n- Gmail OAuth2 credentials configured\n- OpenAI API credentials (or other AI provider)\n- Slack OAuth2 credentials (if notifications desired)\n- Gmail labels created (see setup instructions below)\n\n### How to customize\n- Modify classification categories in the AI Agent\n- Adjust label mappings in the Parse Classification node\n- Customize draft response templates\n- Configure different Slack channels for different email types"
      },
      "typeVersion": 1
    },
    {
      "id": "5825d614-da89-4262-810b-074f5a788ac4",
      "name": "Instructions de configuration Gmail",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        680
      ],
      "parameters": {
        "width": 380,
        "height": 580,
        "content": "## Gmail Label Setup Instructions\n\n**IMPORTANT:** You need to create these Gmail labels first:\n\n1. **Primary Label:** 'AI-Agent' (trigger label)\n2. **Classification Labels:**\n   - 'Inquiry' \n   - 'Support'\n   - 'Newsletter'\n   - 'Action-Item'\n\n**How to get Label IDs:**\n1. Run the Gmail Trigger node once\n2. Check the node output for available labels\n3. Copy the Label IDs and update the Parse Classification code\n4. Replace the Label IDs in the labelMapping object\n\n**Label Mapping (update these after you run the gmail node for the first time!):**\n- Inquiry: Label_123456789\n- Action-Item: Label_123456789\n- Support: Label_123456789\n- Newsletter: Label_123456789"
      },
      "typeVersion": 1
    },
    {
      "id": "6a4ce1eb-3e14-4f7b-8dd2-884858e9edd3",
      "name": "Déclencheur Gmail - Étiquette de l'agent IA",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        520,
        660
      ],
      "parameters": {
        "simple": false,
        "filters": {
          "labelIds": []
        },
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "LwfJ8b1o1ZOBYMwi",
          "name": "Gmail ZNTL"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "575d0664-15f9-4c1a-bb85-702aa7406f02",
      "name": "Extraire les données de l'e-mail",
      "type": "n8n-nodes-base.set",
      "position": [
        740,
        660
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "email-id",
              "name": "emailId",
              "type": "string",
              "value": "={{ $json.id }}"
            },
            {
              "id": "email-subject",
              "name": "subject",
              "type": "string",
              "value": "={{ $json.subject }}"
            },
            {
              "id": "email-from",
              "name": "sender",
              "type": "string",
              "value": "={{ $json.from }}"
            },
            {
              "id": "email-body",
              "name": "content",
              "type": "string",
              "value": "={{ $json.text || $json.html }}"
            },
            {
              "id": "timestamp",
              "name": "receivedAt",
              "type": "string",
              "value": "={{ $json.date }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "9dc28e85-da76-4a56-bab7-2449eeeabd5a",
      "name": "Agent IA - Classificateur d'e-mails",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        960,
        660
      ],
      "parameters": {
        "text": "=Email to analyze:\nFrom: {{ $json.sender }}\nSubject: {{ $json.subject }}\nContent: {{ $json.content }}",
        "options": {
          "systemMessage": "=You are an AI assistant for email classification. Your task is to analyze incoming emails and categorize them into one of the following categories:\n\n1. **Inquiry** - Requests from partners, prospects, or your network\n2. **Support** - Customer support requests, complaints, or help requests\n3. **Newsletter** - Marketing emails, newsletters, or promotional content\n4. **Actionpoint** - Emails requiring immediate action or follow-up tasks\n\nAnalyze the email content including:\n- Sender information\n- Subject line\n- Email content\n- Tone and urgency\n\nRespond with a JSON object in exactly this format:\n{\n  \"category\": \"[One of: Inquiry, Support, Newsletter, Actionpoint]\",\n  \"confidence\": [0.0-1.0],\n  \"reasoning\": \"Brief explanation of why this category was chosen\",\n  \"suggestedResponse\": \"Only for Inquiry and Support emails: A professional, friendly draft response in English\",\n  \"summary\": \"Only for Newsletter emails: A summary of essential information. Particularly interesting and noteworthy for me are infos about AI agents and AI automation\"\n}\n\n"
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "32502ca5-832f-4bf6-85b8-18452071d589",
      "name": "Modèle de chat OpenAI",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        920,
        920
      ],
      "parameters": {
        "model": "o3",
        "options": {
          "responseFormat": "json_object"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "73c4e031-badb-4562-b791-4843c4b12cf9",
      "name": "Analyser la classification IA",
      "type": "n8n-nodes-base.code",
      "position": [
        1280,
        660
      ],
      "parameters": {
        "jsCode": "// Parse AI Agent output and prepare for routing\nconst aiOutput = $input.first().json.output;\nlet classification;\n\ntry {\n  // Parse JSON string output from AI Agent\n  classification = JSON.parse(aiOutput);\n} catch (error) {\n  // Fallback if parsing fails\n  classification = {\n    category: \"Support\",\n    confidence: 0.5,\n    reasoning: \"AI response could not be parsed, defaulting to Support\",\n    suggestedResponse: \"\"\n  };\n}\n\n// Map categories to Gmail Label IDs\n// IMPORTANT: Update these Label IDs with your actual Gmail label IDs\nconst labelMapping = {\n  \"Inquiry\": \"Label_123456789\",\n  \"Actionpoint\": \"Label_123456789\", \n  \"Support\": \"Label_123456789\",\n  \"Newsletter\": \"Label_123456789\"\n};\n\n// Combine with original email data and add label ID\nreturn {\n  json: {\n    ...classification,\n    labelId: labelMapping[classification.category] || labelMapping[\"Support\"], // Fallback to Support\n    emailId: $('Extract Email Data').first().json.emailId,\n    subject: $('Extract Email Data').first().json.subject,\n    sender: $('Extract Email Data').first().json.sender,\n    content: $('Extract Email Data').first().json.content,\n    receivedAt: $('Extract Email Data').first().json.receivedAt\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "858a4fbf-7ba3-497b-955c-20be5d6148c0",
      "name": "Informations de classification IA",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        920,
        140
      ],
      "parameters": {
        "width": 380,
        "height": 380,
        "content": "## AI Classification Logic\n\nThe AI analyzes emails based on:\n- **Sender domain** and content\n- **Keywords** in subject/content\n- **Tone** and urgency indicators\n- **Request patterns**\n\nConfidence values help with accuracy control.\n\n**Classification Categories:**\n- **Inquiry:** Partner/prospect requests\n- **Support:** Customer help requests\n- **Newsletter:** Marketing/promotional content\n- **Actionpoint:** Urgent tasks requiring action"
      },
      "typeVersion": 1
    },
    {
      "id": "cfa9478c-ed03-4c78-b910-be6e48528888",
      "name": "Ajouter une étiquette de classification",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1480,
        660
      ],
      "webhookId": "78dd2938-c072-41b1-97c2-e526313dcdba",
      "parameters": {
        "labelIds": "={{ $json.labelId }}",
        "messageId": "={{ $('Gmail Trigger - AI Agent Label').item.json.id }}",
        "operation": "addLabels"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "LwfJ8b1o1ZOBYMwi",
          "name": "Gmail ZNTL"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "30ca3a6d-775d-485c-b978-3b902d94bda4",
      "name": "Router par catégorie",
      "type": "n8n-nodes-base.switch",
      "position": [
        1680,
        660
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Draft",
              "conditions": {
                "options": {
                  "version": 1,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "bcdd0c26-f15f-495d-851f-428448a4809d",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $('Parse AI Classification').item.json.category }}",
                    "rightValue": "=Support"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Draft",
              "conditions": {
                "options": {
                  "version": 1,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "1e4a4ac3-9a17-4431-ba3c-57143c1c3d4f",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $('Parse AI Classification').item.json.category }}",
                    "rightValue": "Inquiry"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Newsletter",
              "conditions": {
                "options": {
                  "version": 1,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "92882b71-a38c-456d-a767-9db4920c95a5",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $('Parse AI Classification').item.json.category }}",
                    "rightValue": "Newsletter"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Actionpoint",
              "conditions": {
                "options": {
                  "version": 1,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "3e4709bf-e84e-4963-af62-2b49f2147ca3",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $('Parse AI Classification').item.json.category }}",
                    "rightValue": "Actionpoint"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "fallbackOutput": "none"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "2bb9e810-b62b-43b5-9018-8a4ee43da90e",
      "name": "Informations sur les actions de succès",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2440,
        280
      ],
      "parameters": {
        "color": 4,
        "width": 320,
        "height": 280,
        "content": "## Workflow Actions Summary\n\n✅ **Inquiry/Support emails** → Draft responses created\n✅ **Action Items** → Slack notifications sent\n✅ **Newsletters** → Slack summaries sent\n✅ **All emails** → Automatically labeled\n\n### Extension Possibilities:\n- Log to spreadsheet/database\n- Create tickets in support system\n- Send webhooks to external systems\n- Custom notification channels\n- Integration with CRM systems"
      },
      "typeVersion": 1
    },
    {
      "id": "713a3bc5-8e0f-46f4-ad9b-87d7adc07dbd",
      "name": "Informations sur la gestion des erreurs",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2440,
        600
      ],
      "parameters": {
        "color": 5,
        "width": 320,
        "height": 240,
        "content": "## Error Handling & Monitoring\n\n### Current Features:\n- Fallback classification to 'Support'\n- JSON parsing error handling\n- Confidence scoring for accuracy\n\n### Enhancement Options:\n- Error notifications via Slack/email\n- Retry logic for failed classifications\n- Logging of failed attempts\n- Performance monitoring dashboard\n- Manual review queue for low-confidence items"
      },
      "typeVersion": 1
    },
    {
      "id": "ba402d17-fb77-419e-87f2-f00414cf0892",
      "name": "Créer un brouillon de réponse",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2080,
        460
      ],
      "webhookId": "e8d40041-6c0e-47c1-9c46-68e073deb903",
      "parameters": {
        "message": "={{ $('Parse AI Classification').item.json.suggestedResponse }}",
        "options": {
          "threadId": "={{ $('Gmail Trigger - AI Agent Label').item.json.threadId }}"
        },
        "subject": "=Re: {{ $json.subject }}",
        "resource": "draft"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "LwfJ8b1o1ZOBYMwi",
          "name": "Gmail ZNTL"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "59934725-d2f3-4faf-a9db-8a4187a81081",
      "name": "Envoyer une alerte d'élément d'action Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        2080,
        840
      ],
      "webhookId": "2f189afd-e368-4b6a-910a-1fb14d57fb2e",
      "parameters": {
        "operation": "postMessage"
      },
      "typeVersion": 2.2
    },
    {
      "id": "78cce31c-12b8-4c89-b362-07f92be4b3a9",
      "name": "Envoyer un résumé de newsletter à Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        2080,
        660
      ],
      "webhookId": "1aa89f39-9101-4859-8515-c9796a8335a5",
      "parameters": {
        "operation": "postMessage"
      },
      "typeVersion": 2.3
    },
    {
      "id": "f19d4daa-ff84-4421-8170-c7c9c86321f2",
      "name": "Instructions de configuration Slack",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1940,
        20
      ],
      "parameters": {
        "width": 380,
        "height": 360,
        "content": "## Slack Integration Setup\n\n### Required Configuration:\n1. **Create Slack App** at api.slack.com\n2. **Add OAuth Scopes:**\n   - `chat:write`\n   - `channels:read`\n   - `users:read`\n\n3. **Create Channels:**\n   - `#action-items` (for urgent emails)\n   - `#newsletters` (for newsletter summaries)\n\n4. **Customize Message Format:**\n   - Edit the text templates in Slack nodes\n   - Add mentions (@channel, @here)\n   - Include custom formatting/emojis\n\n5. **Optional:** Configure different channels per email type"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "60db44aa-f739-4a39-a086-f0726955927a",
  "connections": {
    "32502ca5-832f-4bf6-85b8-18452071d589": {
      "ai_languageModel": [
        [
          {
            "node": "9dc28e85-da76-4a56-bab7-2449eeeabd5a",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "30ca3a6d-775d-485c-b978-3b902d94bda4": {
      "main": [
        [
          {
            "node": "ba402d17-fb77-419e-87f2-f00414cf0892",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "ba402d17-fb77-419e-87f2-f00414cf0892",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "78cce31c-12b8-4c89-b362-07f92be4b3a9",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "59934725-d2f3-4faf-a9db-8a4187a81081",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "575d0664-15f9-4c1a-bb85-702aa7406f02": {
      "main": [
        [
          {
            "node": "9dc28e85-da76-4a56-bab7-2449eeeabd5a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "73c4e031-badb-4562-b791-4843c4b12cf9": {
      "main": [
        [
          {
            "node": "cfa9478c-ed03-4c78-b910-be6e48528888",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cfa9478c-ed03-4c78-b910-be6e48528888": {
      "main": [
        [
          {
            "node": "30ca3a6d-775d-485c-b978-3b902d94bda4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9dc28e85-da76-4a56-bab7-2449eeeabd5a": {
      "main": [
        [
          {
            "node": "73c4e031-badb-4562-b791-4843c4b12cf9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6a4ce1eb-3e14-4f7b-8dd2-884858e9edd3": {
      "main": [
        [
          {
            "node": "575d0664-15f9-4c1a-bb85-702aa7406f02",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Avancé - Gestion des tickets, Résumé IA

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Workflows recommandés

Système de routage et de résumé AI du support client
Traitement automatisé du support client via GPT-4o, Slack et une intégration CRM
If
Set
Code
+
If
Set
Code
32 NœudsNodeAlchemy
Gestion des tickets
Processus SmartSupport : traitement automatique des demandes IT d'e-mail vers Jira avec notification Slack
Transformer automatiquement les e-mails en tickets JIRA avec des solutions IA et des notifications Slack
If
Set
Jira
+
If
Set
Jira
25 NœudsTrung Tran
Gestion des tickets
Construire un catalogue d'erreurs d'API basé sur l'IA : de GitHub vers Airtable, Notion et Slack
Détecter et classer automatiquement les erreurs de l'API GitHub vers Airtable, Notion et Slack avec GPT-4o
If
Set
Code
+
If
Set
Code
30 NœudsRahul Joshi
Gestion des tickets
Répondre automatiquement aux e-mails Gmail et créer des tickets Linear en utilisant GPT-5, gotoHuman et une vérification humaine
Répondre automatiquement aux e-mails de Gmail et créer des tickets Linear en utilisant GPT-5, gotoHuman et une révision humaine
Set
Code
Gmail
+
Set
Code
Gmail
37 NœudsgotoHuman
Gestion des tickets
🎧 Robot d'assistance vocale IT – Transformation de messages vocaux Telegram en tickets JIRA (avec OpenAI Whisper)
Transformer automatiquement les messages vocaux de Telegram en tickets JIRA avec Whisper et GPT-4.1 Mini
If
Set
Code
+
If
Set
Code
25 NœudsTrung Tran
Gestion des tickets
Réponse automatisée au support client pour Google Forms avec IA
Support client automatisé pour Google Forms et Gmail avec un tri par GPT-4o-mini AI
If
Set
Code
+
If
Set
Code
22 NœudsDaiki Takayama
Gestion des tickets
Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds16
Catégorie2
Types de nœuds9
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34