Automatische Triage des Kundensupports mit GPT, Gmail, Slack und Analyse-Dashboard

Experte

Dies ist ein Ticket Management, AI Summarization-Bereich Automatisierungsworkflow mit 21 Nodes. Hauptsächlich werden Code, Slack, OpenAi, Switch, Airtable und andere Nodes verwendet. Automatisierte Triage von Kunden-Support mit GPT, Gmail, Slack und einem Analyse-Dashboard

Voraussetzungen
  • Slack Bot Token oder Webhook URL
  • OpenAI API Key
  • Airtable API Key
  • Google-Konto + Gmail API-Anmeldedaten
  • Google Sheets API-Anmeldedaten
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "meta": {
    "instanceId": "db30e8ae4100235addbd4638770997b7ef11878d049073c888ba440ca84c55fc"
  },
  "nodes": [
    {
      "id": "fd8ec780-8941-4736-88e7-cbc148f1deb7",
      "name": "Support-E-Mails überwachen",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        -1008,
        112
      ],
      "parameters": {
        "filters": {
          "sender": "",
          "labelIds": [
            "INBOX"
          ],
          "readStatus": "unread"
        },
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "ff2c6f81-1137-4ef5-b96d-69f08c538d9d",
      "name": "KI-Analyse-Engine",
      "type": "n8n-nodes-base.openAi",
      "position": [
        -752,
        112
      ],
      "parameters": {
        "prompt": {
          "messages": [
            {
              "role": "system",
              "content": "You are an expert customer support analyst. Analyze the email and provide: 1) Sentiment (Positive/Neutral/Negative/Critical), 2) Urgency Level (Low/Medium/High/Critical), 3) Category (Technical/Billing/Feature Request/Bug Report/General Inquiry), 4) Key Issues (bullet points), 5) Suggested Response (professional and empathetic). Return as JSON."
            },
            {
              "content": "Email Subject: {{ $json.subject }}\n\nEmail Body: {{ $json.body }}\n\nFrom: {{ $json.from }}"
            }
          ]
        },
        "options": {
          "maxTokens": 1000,
          "temperature": 0.3
        },
        "resource": "chat",
        "requestOptions": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "8b706330-4e9f-40f6-b4f8-02fe2988eed4",
      "name": "Daten parsen und anreichern",
      "type": "n8n-nodes-base.code",
      "position": [
        -496,
        112
      ],
      "parameters": {
        "jsCode": "const aiResponse = JSON.parse($input.first().json.choices[0].message.content);\nconst emailData = $('Monitor Support Emails').first().json;\n\nreturn {\n  json: {\n    timestamp: new Date().toISOString(),\n    customer_email: emailData.from,\n    customer_name: emailData.from.split('<')[0].trim(),\n    subject: emailData.subject,\n    body: emailData.body,\n    email_id: emailData.id,\n    thread_id: emailData.threadId,\n    \n    // AI Analysis Results\n    sentiment: aiResponse.sentiment,\n    urgency: aiResponse.urgency_level,\n    category: aiResponse.category,\n    key_issues: aiResponse.key_issues,\n    suggested_response: aiResponse.suggested_response,\n    \n    // Scoring\n    priority_score: calculatePriority(aiResponse.urgency_level, aiResponse.sentiment),\n    requires_immediate_attention: aiResponse.urgency_level === 'Critical' || aiResponse.sentiment === 'Critical'\n  }\n};\n\nfunction calculatePriority(urgency, sentiment) {\n  const urgencyScores = { 'Low': 1, 'Medium': 2, 'High': 3, 'Critical': 4 };\n  const sentimentScores = { 'Positive': 0, 'Neutral': 1, 'Negative': 2, 'Critical': 3 };\n  return (urgencyScores[urgency] || 2) * 25 + (sentimentScores[sentiment] || 1) * 10;\n}"
      },
      "typeVersion": 2
    },
    {
      "id": "52100d0c-5fb5-4e9f-a9bd-06a18a3d548f",
      "name": "Nach Dringlichkeit weiterleiten",
      "type": "n8n-nodes-base.switch",
      "position": [
        -256,
        112
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "",
                    "rightValue": ""
                  }
                ]
              }
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "93c91813-4e80-4d68-9481-ae3ec127f519",
      "name": "Kritische Probleme alarmieren",
      "type": "n8n-nodes-base.slack",
      "position": [
        0,
        0
      ],
      "webhookId": "0c0c977b-f166-40b6-87bd-232356728544",
      "parameters": {
        "text": "🚨 *CRITICAL CUSTOMER ISSUE DETECTED*\n\n*Customer:* {{ $json.customer_name }} ({{ $json.customer_email }})\n*Subject:* {{ $json.subject }}\n*Sentiment:* {{ $json.sentiment }} | *Urgency:* {{ $json.urgency }}\n*Category:* {{ $json.category }}\n*Priority Score:* {{ $json.priority_score }}/110\n\n*Key Issues:*\n{{ $json.key_issues }}\n\n*Suggested Response:*\n```\n{{ $json.suggested_response }}\n```\n\n*Action Required:* Respond within 30 minutes\n*Email ID:* {{ $json.email_id }}",
        "otherOptions": {
          "mrkdwn": true
        },
        "authentication": "oAuth2"
      },
      "typeVersion": 2.3
    },
    {
      "id": "9e35f1a2-7e66-4798-bbe9-fd843fd4d67e",
      "name": "Routine-Tickets erfassen",
      "type": "n8n-nodes-base.slack",
      "position": [
        0,
        208
      ],
      "webhookId": "8e6c2a7d-d35a-4ba3-bf96-7b6c33a5d8a4",
      "parameters": {
        "text": "📧 *New Support Ticket*\n\n*Customer:* {{ $json.customer_name }}\n*Category:* {{ $json.category }} | *Priority:* {{ $json.priority_score }}\n*Sentiment:* {{ $json.sentiment }}\n\n*Subject:* {{ $json.subject }}",
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "typeVersion": 2.3
    },
    {
      "id": "50556621-9a8c-4a12-8c6b-78fd614a2e37",
      "name": "In Airtable-Datenbank protokollieren",
      "type": "n8n-nodes-base.airtable",
      "position": [
        256,
        112
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "id",
          "value": "appXXXXXXXXXXXXXX"
        },
        "table": {
          "__rl": true,
          "mode": "id",
          "value": "tblSupportTickets"
        },
        "columns": {
          "value": {
            "Status": "Open",
            "Subject": "={{ $json.subject }}",
            "Urgency": "={{ $json.urgency }}",
            "Category": "={{ $json.category }}",
            "Email_ID": "={{ $json.email_id }}",
            "Sentiment": "={{ $json.sentiment }}",
            "Thread_ID": "={{ $json.thread_id }}",
            "Timestamp": "={{ $json.timestamp }}",
            "Email_Body": "={{ $json.body }}",
            "Key_Issues": "={{ $json.key_issues }}",
            "Customer_Name": "={{ $json.customer_name }}",
            "Customer_Email": "={{ $json.customer_email }}",
            "Priority_Score": "={{ $json.priority_score }}",
            "Suggested_Response": "={{ $json.suggested_response }}",
            "Requires_Immediate_Attention": "={{ $json.requires_immediate_attention }}"
          },
          "mappingMode": "defineBelow"
        },
        "options": {},
        "operation": "create"
      },
      "typeVersion": 2.1
    },
    {
      "id": "39e8213d-f382-4778-9d13-8036b2e52696",
      "name": "Analytics-Dashboard aktualisieren",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        512,
        112
      ],
      "parameters": {
        "columns": {
          "value": {
            "Date": "={{ $json.timestamp.split('T')[0] }}",
            "Time": "={{ $json.timestamp.split('T')[1].split('.')[0] }}",
            "Email": "={{ $json.customer_email }}",
            "Status": "Open",
            "Subject": "={{ $json.subject }}",
            "Urgency": "={{ $json.urgency }}",
            "Category": "={{ $json.category }}",
            "Critical": "={{ $json.requires_immediate_attention }}",
            "Customer": "={{ $json.customer_name }}",
            "Priority": "={{ $json.priority_score }}",
            "Sentiment": "={{ $json.sentiment }}"
          },
          "mappingMode": "defineBelow"
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "gid=0"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "970abf02-9fac-4109-8fc2-909f333d3224",
      "name": "Erkenntnisse generieren",
      "type": "n8n-nodes-base.openAi",
      "position": [
        752,
        112
      ],
      "parameters": {
        "prompt": {
          "messages": [
            {
              "role": "system",
              "content": "Based on the analysis, generate 3 data insights: 1) Trend identification, 2) Risk assessment, 3) Actionable recommendation for the support team."
            },
            {
              "content": "Ticket Data:\nSentiment: {{ $json.sentiment }}\nCategory: {{ $json.category }}\nUrgency: {{ $json.urgency }}\nIssues: {{ $json.key_issues }}\n\nProvide insights in JSON format with keys: trend, risk, recommendation"
            }
          ]
        },
        "options": {
          "maxTokens": 500,
          "temperature": 0.5
        },
        "resource": "chat",
        "requestOptions": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "ab329b35-05bb-42ec-bfe1-9f8ba4ec6772",
      "name": "KI-Erkenntnisse speichern",
      "type": "n8n-nodes-base.airtable",
      "position": [
        1008,
        112
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "id",
          "value": "appXXXXXXXXXXXXXX"
        },
        "table": {
          "__rl": true,
          "mode": "id",
          "value": "tblInsights"
        },
        "columns": {
          "value": {
            "Record_ID": "={{ $('Log to Airtable Database').item.json.id }}",
            "AI_Insights": "={{ JSON.parse($json.choices[0].message.content) }}",
            "Generated_At": "={{ new Date().toISOString() }}"
          },
          "mappingMode": "defineBelow"
        },
        "options": {},
        "operation": "update"
      },
      "typeVersion": 2.1
    },
    {
      "id": "02b48c6d-c266-4f92-913d-c76367bb5d96",
      "name": "Notiz",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1040,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Watches Gmail inbox for new unread emails\n"
      },
      "typeVersion": 1
    },
    {
      "id": "98d2e12e-be2a-440b-baf5-8cd6120e4271",
      "name": "Notiz1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -784,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Analyzes sentiment, urgency, and categorizes support requests\n"
      },
      "typeVersion": 1
    },
    {
      "id": "4310037a-a46e-43f0-bd9d-d32af017d9b8",
      "name": "Notiz2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Structures AI output and calculates priority scores\n"
      },
      "typeVersion": 1
    },
    {
      "id": "81b8f33b-303c-4cf1-905d-6065d3a5b026",
      "name": "Notiz3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -288,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Routes tickets based on urgency classification level\n"
      },
      "typeVersion": 1
    },
    {
      "id": "b7f1ae71-fe6d-4f64-8193-e36ae264af13",
      "name": "Notiz4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -32,
        -112
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Sends immediate Slack alerts for critical tickets\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d30db0f5-e392-4114-93b8-674bee6121ec",
      "name": "Notiz5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -48,
        368
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Posts standard priority tickets to Slack channel\n"
      },
      "typeVersion": 1
    },
    {
      "id": "393db2f6-ee8c-4f45-96c0-645c5c530619",
      "name": "Notiz6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        224,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Stores complete ticket data in Airtable base\n"
      },
      "typeVersion": 1
    },
    {
      "id": "279d3e6a-e014-4c23-8ccb-d635b25c0fb3",
      "name": "Notiz7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Logs ticket metrics to Google Sheets dashboard\n"
      },
      "typeVersion": 1
    },
    {
      "id": "08bb68e3-a7ad-42fa-aea7-5abc319e2b27",
      "name": "Notiz8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        720,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Creates AI-powered trends and risk assessments daily\n"
      },
      "typeVersion": 1
    },
    {
      "id": "acc25615-d10a-4d12-b1cb-4ecb28c972da",
      "name": "Notiz9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        976,
        0
      ],
      "parameters": {
        "width": 176,
        "height": 96,
        "content": "Saves generated insights back to Airtable records\n"
      },
      "typeVersion": 1
    },
    {
      "id": "9ca1492d-826d-45ca-880d-35210ed527c9",
      "name": "Notiz10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1568,
        -112
      ],
      "parameters": {
        "width": 464,
        "height": 528,
        "content": "# Workflow Description\n\nAI-powered customer support automation that monitors Gmail, analyzes email sentiment and urgency, routes critical issues to Slack, logs all tickets to Airtable and Google Sheets, then generates actionable insights. \n\nPrioritizes responses, tracks metrics, and improves support team efficiency through intelligent triage.\n\n---\n\n**Created by Daniel Shashko**  \nhttps://www.linkedin.com/in/daniel-shashko/"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "52100d0c-5fb5-4e9f-a9bd-06a18a3d548f": {
      "main": [
        [
          {
            "node": "93c91813-4e80-4d68-9481-ae3ec127f519",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "970abf02-9fac-4109-8fc2-909f333d3224": {
      "main": [
        [
          {
            "node": "ab329b35-05bb-42ec-bfe1-9f8ba4ec6772",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ff2c6f81-1137-4ef5-b96d-69f08c538d9d": {
      "main": [
        [
          {
            "node": "8b706330-4e9f-40f6-b4f8-02fe2988eed4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9e35f1a2-7e66-4798-bbe9-fd843fd4d67e": {
      "main": [
        [
          {
            "node": "50556621-9a8c-4a12-8c6b-78fd614a2e37",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8b706330-4e9f-40f6-b4f8-02fe2988eed4": {
      "main": [
        [
          {
            "node": "52100d0c-5fb5-4e9f-a9bd-06a18a3d548f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "93c91813-4e80-4d68-9481-ae3ec127f519": {
      "main": [
        [
          {
            "node": "50556621-9a8c-4a12-8c6b-78fd614a2e37",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fd8ec780-8941-4736-88e7-cbc148f1deb7": {
      "main": [
        [
          {
            "node": "ff2c6f81-1137-4ef5-b96d-69f08c538d9d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "50556621-9a8c-4a12-8c6b-78fd614a2e37": {
      "main": [
        [
          {
            "node": "39e8213d-f382-4778-9d13-8036b2e52696",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "39e8213d-f382-4778-9d13-8036b2e52696": {
      "main": [
        [
          {
            "node": "970abf02-9fac-4109-8fc2-909f333d3224",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Experte - Ticketverwaltung, KI-Zusammenfassung

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes21
Kategorie2
Node-Typen8
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Autor
Daniel Shashko

Daniel Shashko

@tomax

AI automation specialist and a marketing enthusiast. More than 6 years of experience in SEO/GEO. Senior SEO at Bright Data.

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34