Sistema de derivación y resumen de soporte al cliente con IA
Este es unTicket Management, AI Summarizationflujo de automatización del dominio deautomatización que contiene 32 nodos.Utiliza principalmente nodos como If, Set, Code, Gmail, Slack. Procesamiento automático de soporte al cliente con GPT-4o, Slack e integración CRM
- •Cuenta de Google y credenciales de API de Gmail
- •Bot Token de Slack o URL de Webhook
- •Punto final de HTTP Webhook (n8n generará automáticamente)
- •Pueden requerirse credenciales de autenticación para la API de destino
- •Credenciales de API de Google Sheets
- •Clave de API de OpenAI
Nodos utilizados (32)
Categoría
{
"id": "wDPgvREnPGzo267x",
"meta": {
"instanceId": "f7efda6e0fb3e5b5aba58995b43b7c79234174dc1e6bcfb5578eff460018af38",
"templateCredsSetupCompleted": true
},
"name": "AI Customer Support Triage & Summarization System",
"tags": [],
"nodes": [
{
"id": "40bab90c-06e8-400e-ba35-d629ab529144",
"name": "Disparador de Entrada (Correo/Formulario/Chat)",
"type": "n8n-nodes-base.webhook",
"position": [
928,
1664
],
"webhookId": "a5df9695-a412-414a-8684-8beae74f0dd4",
"parameters": {
"path": "support-intake",
"options": {},
"httpMethod": "POST",
"responseMode": "lastNode"
},
"typeVersion": 2.1
},
{
"id": "94f25509-3536-4eaa-8e30-bb0d3d2bcb3a",
"name": "Configuración del Flujo de Trabajo",
"type": "n8n-nodes-base.set",
"position": [
1152,
1664
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "technicalSlackChannel",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Technical Slack Channel ID__>"
},
{
"id": "id-2",
"name": "billingSlackChannel",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Billing Slack Channel ID__>"
},
{
"id": "id-3",
"name": "generalSlackChannel",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__General Slack Channel ID__>"
},
{
"id": "id-4",
"name": "urgentSlackChannel",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Urgent Slack Channel ID__>"
},
{
"id": "id-5",
"name": "crmApiUrl",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__CRM API Endpoint URL__>"
},
{
"id": "id-6",
"name": "googleSheetId",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Google Sheet ID__>"
},
{
"id": "id-7",
"name": "slaThresholdHours",
"type": "number",
"value": 24
},
{
"id": "id-8",
"name": "urgencyThreshold",
"type": "number",
"value": 4
},
{
"id": "id-9",
"name": "supportPortalUrl",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Support Portal URL__>"
},
{
"id": "id-10",
"name": "companyName",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Company Name__>"
},
{
"id": "id-11",
"name": "supportEmail",
"type": "string",
"value": "<__PLACEHOLDER_VALUE__Support Email Address__>"
},
{
"id": "id-12",
"name": "standardSlaHours",
"type": "number",
"value": 48
},
{
"id": "id-13",
"name": "prioritySlaHours",
"type": "number",
"value": 24
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "6df1111d-ada7-4877-8f7c-e8499e9138ee",
"name": "Extraer Datos del Cliente",
"type": "n8n-nodes-base.set",
"position": [
1376,
1664
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "customerName",
"type": "string",
"value": "={{ $json.body.name || $json.body.from_name || 'Unknown' }}"
},
{
"id": "id-2",
"name": "customerEmail",
"type": "string",
"value": "={{ $json.body.email || $json.body.from_email || '' }}"
},
{
"id": "id-3",
"name": "product",
"type": "string",
"value": "={{ $json.body.product || $json.body.subject || '' }}"
},
{
"id": "id-4",
"name": "issueType",
"type": "string",
"value": "={{ $json.body.issue_type || $json.body.category || '' }}"
},
{
"id": "id-5",
"name": "rawMessage",
"type": "string",
"value": "={{ $json.body.message || $json.body.text || $json.body.content || '' }}"
}
]
},
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "754686ef-a5a9-4158-9eee-be35c091b5f1",
"name": "Agente de Derivación y Resumen con IA",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1600,
1664
],
"parameters": {
"text": "=You are a customer support triage assistant. Analyze the customer inquiry and provide:\n\n1. A concise summary (max 200 words)\n2. Classification: technical, billing, general, or urgent\n3. Urgency score (1-5, where 5 is most urgent)\n4. Suggested next action\n\nCustomer Details:\nName: {{ $json.customerName }}\nEmail: {{ $json.customerEmail }}\nProduct: {{ $json.product }}\nIssue Type: {{ $json.issueType }}\nMessage: {{ $json.rawMessage }}\n\nProvide structured output with fields: summary, classification, urgency, nextAction",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "471ce97b-249c-4061-bdc1-be65d3d7e014",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1600,
1888
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {},
"typeVersion": 1.2
},
{
"id": "097c80f5-3577-4b45-985e-ef073c3a55f3",
"name": "Analizador de Salida Estructurada",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1728,
1888
],
"parameters": {
"jsonSchemaExample": "{\n\t\"summary\": \"Brief summary of the customer issue (max 200 words)\",\n\t\"classification\": \"technical\",\n\t\"urgency\": 3,\n\t\"nextAction\": \"Recommended next action for support team\"\n}"
},
"typeVersion": 1.3
},
{
"id": "b97cd4c8-8dbe-434b-b47b-4ca4c9608218",
"name": "Enrutar por Clasificación",
"type": "n8n-nodes-base.switch",
"position": [
1952,
1632
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "technical",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.classification }}",
"rightValue": "technical"
}
]
},
"renameOutput": true
},
{
"outputKey": "billing",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.classification }}",
"rightValue": "billing"
}
]
},
"renameOutput": true
},
{
"outputKey": "general",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.classification }}",
"rightValue": "general"
}
]
},
"renameOutput": true
},
{
"outputKey": "urgent",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.classification }}",
"rightValue": "urgent"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.3
},
{
"id": "27af38f5-7f57-48b0-9933-2f14fb492ba1",
"name": "Publicar en Canal Técnico de Slack",
"type": "n8n-nodes-base.slack",
"position": [
2176,
1376
],
"webhookId": "5641deda-88ec-40e5-97f8-768edddd62ef",
"parameters": {
"text": "=*New Technical Support Ticket*\n\n*Customer:* {{ $json.customerName }} ({{ $json.customerEmail }})\n*Product:* {{ $json.product }}\n*Urgency:* {{ $json.urgency }}/5\n\n*Summary:*\n{{ $json.summary }}\n\n*Next Action:*\n{{ $json.nextAction }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Workflow Configuration').first().json.technicalSlackChannel }}"
},
"otherOptions": {}
},
"typeVersion": 2.3
},
{
"id": "22546b0f-d5e9-4f7a-b569-612df6d66721",
"name": "Publicar en Canal de Facturación de Slack",
"type": "n8n-nodes-base.slack",
"position": [
2176,
1568
],
"webhookId": "d9fbfba9-8405-484b-9e12-3e76274d8a12",
"parameters": {
"text": "=*New Billing Support Ticket*\n\n*Customer:* {{ $json.customerName }} ({{ $json.customerEmail }})\n*Product:* {{ $json.product }}\n*Urgency:* {{ $json.urgency }}/5\n\n*Summary:*\n{{ $json.summary }}\n\n*Next Action:*\n{{ $json.nextAction }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Workflow Configuration').first().json.billingSlackChannel }}"
},
"otherOptions": {}
},
"typeVersion": 2.3
},
{
"id": "397fc082-4440-47a2-a6a7-602471bf1485",
"name": "Publicar en Canal General de Slack",
"type": "n8n-nodes-base.slack",
"position": [
2176,
1760
],
"webhookId": "05e761b5-e77e-422a-86ee-8cb0fc907bfb",
"parameters": {
"text": "=*New General Support Ticket*\n\n*Customer:* {{ $json.customerName }} ({{ $json.customerEmail }})\n*Product:* {{ $json.product }}\n*Urgency:* {{ $json.urgency }}/5\n\n*Summary:*\n{{ $json.summary }}\n\n*Next Action:*\n{{ $json.nextAction }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Workflow Configuration').first().json.generalSlackChannel }}"
},
"otherOptions": {}
},
"typeVersion": 2.3
},
{
"id": "96528838-d29c-497d-a221-b2b4c9025a5d",
"name": "Publicar en Canal Urgente de Slack",
"type": "n8n-nodes-base.slack",
"position": [
2176,
1952
],
"webhookId": "84244cb1-7ea0-4504-9617-d56b151fe9dc",
"parameters": {
"text": "=*🚨 URGENT Support Ticket 🚨*\n\n*Customer:* {{ $json.customerName }} ({{ $json.customerEmail }})\n*Product:* {{ $json.product }}\n*Urgency:* {{ $json.urgency }}/5\n\n*Summary:*\n{{ $json.summary }}\n\n*Next Action:*\n{{ $json.nextAction }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Workflow Configuration').first().json.urgentSlackChannel }}"
},
"otherOptions": {
"includeLinkToWorkflow": true
}
},
"typeVersion": 2.3
},
{
"id": "b8aa6a61-7439-4af7-8dcd-00283d0684f8",
"name": "Crear Tarea en CRM (Técnico)",
"type": "n8n-nodes-base.httpRequest",
"position": [
2400,
1376
],
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.crmApiUrl }}",
"method": "POST",
"options": {
"response": {
"response": {
"neverError": true
}
}
},
"jsonBody": "={{ {\n \"customer_name\": $json.customerName,\n \"customer_email\": $json.customerEmail,\n \"product\": $json.product,\n \"classification\": \"technical\",\n \"urgency\": $json.urgency,\n \"summary\": $json.summary,\n \"next_action\": $json.nextAction,\n \"sla_hours\": $json.urgency >= $('Workflow Configuration').first().json.urgencyThreshold ? $('Workflow Configuration').first().json.slaThresholdHours : 48\n} }}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "ddb40ba2-945a-4f0f-ad46-ef46eb2d852a",
"name": "Crear Tarea en CRM (Facturación)",
"type": "n8n-nodes-base.httpRequest",
"position": [
2400,
1568
],
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.crmApiUrl }}",
"method": "POST",
"options": {
"response": {
"response": {
"neverError": true
}
}
},
"jsonBody": "={{ {\n \"customer_name\": $json.customerName,\n \"customer_email\": $json.customerEmail,\n \"product\": $json.product,\n \"classification\": \"billing\",\n \"urgency\": $json.urgency,\n \"summary\": $json.summary,\n \"next_action\": $json.nextAction,\n \"sla_hours\": $json.urgency >= $('Workflow Configuration').first().json.urgencyThreshold ? $('Workflow Configuration').first().json.slaThresholdHours : 48\n} }}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "8b8e2540-5dd7-4ec1-bc5d-d7e8d4c80ac7",
"name": "Crear Tarea en CRM (General)",
"type": "n8n-nodes-base.httpRequest",
"position": [
2400,
1760
],
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.crmApiUrl }}",
"method": "POST",
"options": {
"response": {
"response": {
"neverError": true
}
}
},
"jsonBody": "={{ {\n \"customer_name\": $json.customerName,\n \"customer_email\": $json.customerEmail,\n \"product\": $json.product,\n \"classification\": \"general\",\n \"urgency\": $json.urgency,\n \"summary\": $json.summary,\n \"next_action\": $json.nextAction,\n \"sla_hours\": $json.urgency >= $('Workflow Configuration').first().json.urgencyThreshold ? $('Workflow Configuration').first().json.slaThresholdHours : 48\n} }}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "8e57b175-aca0-4c67-82dc-10f2bfd245eb",
"name": "Crear Tarea en CRM (Urgente)",
"type": "n8n-nodes-base.httpRequest",
"position": [
2400,
1952
],
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.crmApiUrl }}",
"method": "POST",
"options": {
"response": {
"response": {
"neverError": true
}
}
},
"jsonBody": "={\n \"customer_name\": \"{{ $json.customerName }}\",\n \"customer_email\": \"{{ $json.customerEmail }}\",\n \"product\": \"{{ $json.product }}\",\n \"classification\": \"urgent\",\n \"urgency\": {{ $json.urgency }},\n \"summary\": \"{{ $json.summary }}\",\n \"next_action\": \"{{ $json.nextAction }}\",\n \"sla_hours\": {{ $('Workflow Configuration').first().json.slaThresholdHours }}\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "1fcfd918-bdb5-4ce3-b038-cab9cfa2c433",
"name": "Registrar en Hojas de Google (Técnico)",
"type": "n8n-nodes-base.googleSheets",
"position": [
2624,
1376
],
"parameters": {
"columns": {
"value": {
"Product": "={{ $json.product }}",
"Summary": "={{ $json.summary }}",
"Urgency": "={{ $json.urgency }}",
"Timestamp": "={{ $now.toISO() }}",
"Next Action": "={{ $json.nextAction }}",
"Customer Name": "={{ $json.customerName }}",
"Classification": "technical",
"Customer Email": "={{ $json.customerEmail }}"
},
"schema": [
{
"id": "Timestamp",
"required": false,
"displayName": "Timestamp",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Customer Name",
"required": false,
"displayName": "Customer Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Customer Email",
"required": false,
"displayName": "Customer Email",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "Product",
"required": false,
"displayName": "Product",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Classification",
"required": false,
"displayName": "Classification",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Urgency",
"required": false,
"displayName": "Urgency",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Summary",
"required": false,
"displayName": "Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Next Action",
"required": false,
"displayName": "Next Action",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Customer Email"
]
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Support Tickets"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Workflow Configuration').first().json.googleSheetId }}"
}
},
"credentials": {},
"typeVersion": 4.7
},
{
"id": "dfecf8ef-ce60-4fa0-b944-529a637ce06b",
"name": "Registrar en Hojas de Google (Facturación)",
"type": "n8n-nodes-base.googleSheets",
"position": [
2624,
1568
],
"parameters": {
"columns": {
"value": {
"Product": "={{ $json.product }}",
"Summary": "={{ $json.summary }}",
"Urgency": "={{ $json.urgency }}",
"Timestamp": "={{ $now.toISO() }}",
"Next Action": "={{ $json.nextAction }}",
"Customer Name": "={{ $json.customerName }}",
"Classification": "billing",
"Customer Email": "={{ $json.customerEmail }}"
},
"schema": [
{
"id": "Timestamp",
"required": false,
"displayName": "Timestamp",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Customer Name",
"required": false,
"displayName": "Customer Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Customer Email",
"required": false,
"displayName": "Customer Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Product",
"required": false,
"displayName": "Product",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Classification",
"required": false,
"displayName": "Classification",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Urgency",
"required": false,
"displayName": "Urgency",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Summary",
"required": false,
"displayName": "Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Next Action",
"required": false,
"displayName": "Next Action",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Timestamp"
]
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Support Tickets"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Workflow Configuration').first().json.googleSheetId }}"
}
},
"credentials": {},
"typeVersion": 4.7
},
{
"id": "c492c5b8-8caa-422a-b291-be06512b1810",
"name": "Registrar en Hojas de Google (General)",
"type": "n8n-nodes-base.googleSheets",
"position": [
2624,
1760
],
"parameters": {
"columns": {
"value": {
"Product": "={{ $json.product }}",
"Summary": "={{ $json.summary }}",
"Urgency": "={{ $json.urgency }}",
"Timestamp": "={{ $now.toISO() }}",
"Next Action": "={{ $json.nextAction }}",
"Customer Name": "={{ $json.customerName }}",
"Classification": "general",
"Customer Email": "={{ $json.customerEmail }}"
},
"schema": [
{
"id": "Timestamp",
"required": false,
"displayName": "Timestamp",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Customer Name",
"required": false,
"displayName": "Customer Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Customer Email",
"required": false,
"displayName": "Customer Email",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "Product",
"required": false,
"displayName": "Product",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Classification",
"required": false,
"displayName": "Classification",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Urgency",
"required": false,
"displayName": "Urgency",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Summary",
"required": false,
"displayName": "Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Next Action",
"required": false,
"displayName": "Next Action",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Customer Email"
]
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Support Tickets"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Workflow Configuration').first().json.googleSheetId }}"
}
},
"credentials": {},
"typeVersion": 4.7
},
{
"id": "472ccb11-7e70-419c-822f-c6154ea2abc8",
"name": "Registrar en Hojas de Google (Urgente)",
"type": "n8n-nodes-base.googleSheets",
"position": [
2624,
1952
],
"parameters": {
"columns": {
"value": {
"Product": "={{ $json.product }}",
"Summary": "={{ $json.summary }}",
"Urgency": "={{ $json.urgency }}",
"Timestamp": "={{ $now.toISO() }}",
"Next Action": "={{ $json.nextAction }}",
"Customer Name": "={{ $json.customerName }}",
"Classification": "urgent",
"Customer Email": "={{ $json.customerEmail }}"
},
"schema": [
{
"id": "Timestamp",
"required": false,
"displayName": "Timestamp",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Customer Name",
"required": false,
"displayName": "Customer Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Customer Email",
"required": false,
"displayName": "Customer Email",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "Product",
"required": false,
"displayName": "Product",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Classification",
"required": false,
"displayName": "Classification",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Urgency",
"required": false,
"displayName": "Urgency",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Summary",
"required": false,
"displayName": "Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Next Action",
"required": false,
"displayName": "Next Action",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Customer Email"
]
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Support Tickets"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Workflow Configuration').first().json.googleSheetId }}"
}
},
"credentials": {},
"typeVersion": 4.7
},
{
"id": "f74fcb3e-acc8-429a-a372-9b2cb23666ff",
"name": "Verificar Urgencia para SLA",
"type": "n8n-nodes-base.if",
"position": [
2848,
1664
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": false,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "id-1",
"operator": {
"type": "number",
"operation": "gte"
},
"leftValue": "={{ $json.urgency }}",
"rightValue": "={{ $('Workflow Configuration').first().json.urgencyThreshold }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "b8991d6c-954f-487b-8f11-829761a6d5e6",
"name": "Manejador de Errores - Registrar en DLQ",
"type": "n8n-nodes-base.httpRequest",
"position": [
928,
2176
],
"parameters": {
"url": "<__PLACEHOLDER_VALUE__Dead Letter Queue API Endpoint__>",
"method": "POST",
"options": {},
"jsonBody": "={{ { \"workflow\": \"AI Customer Support Triage\", \"error\": $json.error, \"timestamp\": $now.toISO(), \"data\": $json } }}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "a6fe778b-d8de-4127-8bd6-1cfb0266d228",
"name": "Generar Número de Referencia",
"type": "n8n-nodes-base.code",
"position": [
3072,
1664
],
"parameters": {
"jsCode": "const timestamp = Date.now();\nconst random = Math.random().toString(36).substring(2, 8).toUpperCase();\nconst referenceNumber = `SUP-${timestamp}-${random}`;\nconst urgency = items[0].json.urgency;\nconst urgencyThreshold = items[0].json.urgencyThreshold || 4;\nconst slaHours = urgency >= urgencyThreshold ? items[0].json.slaThresholdHours || 24 : 48;\nconst slaResponseTime = `${slaHours} hours`;\nreturn { json: { ...items[0].json, referenceNumber, slaHours, slaResponseTime } };"
},
"typeVersion": 2
},
{
"id": "e3b53f01-39cf-40fa-b4b1-a16279d383fa",
"name": "Preparar Datos para Respuesta Automática por Correo",
"type": "n8n-nodes-base.set",
"position": [
3296,
1664
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "emailSubject",
"type": "string",
"value": "=Your Support Request Received - Ref: {{ $json.referenceNumber }}"
},
{
"id": "id-2",
"name": "emailBody",
"type": "string",
"value": "=Dear {{ $json.customerName }},\n\nThank you for contacting {{ $('Workflow Configuration').first().json.companyName }} support. We have received your inquiry and our team is reviewing it.\n\n**Ticket Details:**\n• Reference Number: {{ $json.referenceNumber }}\n• Issue Summary: {{ $json.summary }}\n• Classification: {{ $json.classification }}\n• Priority Level: {{ $json.urgency }}/5\n• Expected Response Time: {{ $json.slaResponseTime }}\n\nOur support team will respond to your request within {{ $json.slaResponseTime }}. You can track the status of your ticket at:\n{{ $('Workflow Configuration').first().json.supportPortalUrl }}\n\nIf you have any additional information to add, please reply to this email with your reference number: {{ $json.referenceNumber }}\n\nBest regards,\n{{ $('Workflow Configuration').first().json.companyName }} Support Team\n{{ $('Workflow Configuration').first().json.supportEmail }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "113a0dee-5142-48ab-9b94-a1ef76407712",
"name": "Enviar Respuesta Automática vía Gmail",
"type": "n8n-nodes-base.gmail",
"position": [
3520,
1664
],
"webhookId": "6c090444-ecd0-486e-9e4d-5ef48968023d",
"parameters": {
"sendTo": "={{ $json.customerEmail }}",
"message": "={{ $json.emailBody }}",
"options": {},
"subject": "={{ $json.emailSubject }}"
},
"credentials": {},
"typeVersion": 2.1
},
{
"id": "e92c40d8-b13e-4223-996e-ab9540592c46",
"name": "Reintentar Respuesta Automática (Intento 1)",
"type": "n8n-nodes-base.httpRequest",
"position": [
3744,
1664
],
"parameters": {
"url": "<__PLACEHOLDER_VALUE__SMTP Fallback API Endpoint__>",
"method": "POST",
"options": {},
"jsonBody": "={{ {\n \"to\": $json.customerEmail,\n \"subject\": $json.emailSubject,\n \"body\": $json.emailBody,\n \"referenceNumber\": $json.referenceNumber\n} }}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.3
},
{
"id": "d05dc36d-bb82-42d6-a631-5fbe16d3ab04",
"name": "Reintentar Respuesta Automática (Intento 2)",
"type": "n8n-nodes-base.httpRequest",
"position": [
3968,
1664
],
"parameters": {
"url": "<__PLACEHOLDER_VALUE__SMTP Fallback API Endpoint (Backup)__>",
"method": "POST",
"options": {
"response": {
"response": {
"neverError": true
}
}
},
"jsonBody": "={{ {\n \"to\": $json.customerEmail,\n \"subject\": $json.emailSubject,\n \"body\": $json.emailBody,\n \"referenceNumber\": $json.referenceNumber\n} }}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.3
},
{
"id": "bacdcf4a-d4ae-4436-bfaf-43954b53d832",
"name": "Registrar Respuesta Automática Fallida en DLQ",
"type": "n8n-nodes-base.httpRequest",
"position": [
4192,
1664
],
"parameters": {
"url": "<__PLACEHOLDER_VALUE__Dead Letter Queue API Endpoint__>",
"method": "POST",
"options": {},
"jsonBody": "={{ { \"workflow\": \"AI Customer Support Auto-Reply\", \"error\": \"Failed to send auto-reply after 3 attempts\", \"timestamp\": $now.toISO(), \"customerEmail\": $json.customerEmail, \"referenceNumber\": $json.referenceNumber, \"data\": $json } }}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.3
},
{
"id": "1b09b649-cda1-4e24-aef7-dda7c3edede8",
"name": "Nota Adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
432,
496
],
"parameters": {
"color": 4,
"width": 736,
"height": 640,
"content": "# 🟢 Setup & Intake\n\n## Configure your email or webhook trigger for new support tickets. \n\n## Update the “Workflow Configuration” node:\n\n## Slack Channel IDs\n\n## CRM Type (HubSpot or Salesforce)\n\n## Google Sheet ID\n\n## SLA (Service Level Agreement) thresholds \n\n## Connect credentials for OpenAI, Slack, Google Sheets, and Gmail before running.\n"
},
"typeVersion": 1
},
{
"id": "28b93a1c-529b-47b2-bea0-3b6c78ad215b",
"name": "Nota Adhesiva1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1264,
512
],
"parameters": {
"color": 3,
"width": 784,
"height": 624,
"content": "# 🤖 AI Triage\n\n## The AI Triage & Summarization node uses OpenAI to:\n## Summarize the message (<200 words)\n## Classify issue type (technical, billing, general, urgent)\n## Assign urgency (1–5)\n## Suggest next action \n## Model: GPT 5 (editable). \n## Output feeds into routing, logging, and auto-reply generation.\n"
},
"typeVersion": 1
},
{
"id": "2abd4593-c630-4bb0-96df-f5c592d489d2",
"name": "Nota Adhesiva2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2128,
528
],
"parameters": {
"color": 5,
"width": 784,
"height": 608,
"content": "# 🔀 Routing & Logging\n## Route by Classification directs tickets to Slack channels & CRM task queues. \n## Each triaged ticket is logged to Google Sheets with:\n## Timestamp\n## Classification & urgency\n## AI summary & suggested action \n## Failed or missing data goes to the DLQ tab for review.\n"
},
"typeVersion": 1
},
{
"id": "3482614e-7fe0-4e62-93dd-d15d43c83e60",
"name": "Nota Adhesiva3",
"type": "n8n-nodes-base.stickyNote",
"position": [
3040,
544
],
"parameters": {
"width": 736,
"height": 592,
"content": "# ✉️ Auto-Reply & Error Handling\n## The “Auto-Reply Generator” node drafts a personalized acknowledgment email with:\n## Customer name\n## Issue summary\n## Ticket ID & support SLA timeframe \n## Email sent via Gmail or SMTP. \n## Invalid or failed triage attempts are logged to the DLQ for auditing.\n"
},
"typeVersion": 1
},
{
"id": "5e3bc0f5-b4be-4b12-892c-d9f24a8ad2d3",
"name": "Nota Adhesiva4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1200,
2144
],
"parameters": {
"color": 2,
"width": 496,
"height": 320,
"content": "# 🔴 Error Handler – Log to DLQ\n## Optional global error catcher for failed executions. Configure with your Google Sheet DLQ tab or remove if handling errors elsewhere in the workflow.\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "cddc9402-f487-4610-8ff6-7b0a423840cc",
"connections": {
"471ce97b-249c-4061-bdc1-be65d3d7e014": {
"ai_languageModel": [
[
{
"node": "754686ef-a5a9-4158-9eee-be35c091b5f1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"96528838-d29c-497d-a221-b2b4c9025a5d": {
"main": [
[
{
"node": "8e57b175-aca0-4c67-82dc-10f2bfd245eb",
"type": "main",
"index": 0
}
]
]
},
"f74fcb3e-acc8-429a-a372-9b2cb23666ff": {
"main": [
[
{
"node": "a6fe778b-d8de-4127-8bd6-1cfb0266d228",
"type": "main",
"index": 0
}
]
]
},
"6df1111d-ada7-4877-8f7c-e8499e9138ee": {
"main": [
[
{
"node": "754686ef-a5a9-4158-9eee-be35c091b5f1",
"type": "main",
"index": 0
}
]
]
},
"22546b0f-d5e9-4f7a-b569-612df6d66721": {
"main": [
[
{
"node": "ddb40ba2-945a-4f0f-ad46-ef46eb2d852a",
"type": "main",
"index": 0
}
]
]
},
"397fc082-4440-47a2-a6a7-602471bf1485": {
"main": [
[
{
"node": "8b8e2540-5dd7-4ec1-bc5d-d7e8d4c80ac7",
"type": "main",
"index": 0
}
]
]
},
"94f25509-3536-4eaa-8e30-bb0d3d2bcb3a": {
"main": [
[
{
"node": "6df1111d-ada7-4877-8f7c-e8499e9138ee",
"type": "main",
"index": 0
}
]
]
},
"27af38f5-7f57-48b0-9933-2f14fb492ba1": {
"main": [
[
{
"node": "b8aa6a61-7439-4af7-8dcd-00283d0684f8",
"type": "main",
"index": 0
}
]
]
},
"b97cd4c8-8dbe-434b-b47b-4ca4c9608218": {
"main": [
[
{
"node": "27af38f5-7f57-48b0-9933-2f14fb492ba1",
"type": "main",
"index": 0
}
],
[
{
"node": "22546b0f-d5e9-4f7a-b569-612df6d66721",
"type": "main",
"index": 0
}
],
[
{
"node": "397fc082-4440-47a2-a6a7-602471bf1485",
"type": "main",
"index": 0
}
],
[
{
"node": "96528838-d29c-497d-a221-b2b4c9025a5d",
"type": "main",
"index": 0
}
]
]
},
"8e57b175-aca0-4c67-82dc-10f2bfd245eb": {
"main": [
[
{
"node": "472ccb11-7e70-419c-822f-c6154ea2abc8",
"type": "main",
"index": 0
}
]
]
},
"097c80f5-3577-4b45-985e-ef073c3a55f3": {
"ai_outputParser": [
[
{
"node": "754686ef-a5a9-4158-9eee-be35c091b5f1",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"ddb40ba2-945a-4f0f-ad46-ef46eb2d852a": {
"main": [
[
{
"node": "dfecf8ef-ce60-4fa0-b944-529a637ce06b",
"type": "main",
"index": 0
}
]
]
},
"8b8e2540-5dd7-4ec1-bc5d-d7e8d4c80ac7": {
"main": [
[
{
"node": "c492c5b8-8caa-422a-b291-be06512b1810",
"type": "main",
"index": 0
}
]
]
},
"a6fe778b-d8de-4127-8bd6-1cfb0266d228": {
"main": [
[
{
"node": "e3b53f01-39cf-40fa-b4b1-a16279d383fa",
"type": "main",
"index": 0
}
]
]
},
"113a0dee-5142-48ab-9b94-a1ef76407712": {
"main": [
[
{
"node": "e92c40d8-b13e-4223-996e-ab9540592c46",
"type": "main",
"index": 0
}
]
]
},
"b8aa6a61-7439-4af7-8dcd-00283d0684f8": {
"main": [
[
{
"node": "1fcfd918-bdb5-4ce3-b038-cab9cfa2c433",
"type": "main",
"index": 0
}
]
]
},
"e92c40d8-b13e-4223-996e-ab9540592c46": {
"main": [
[
{
"node": "d05dc36d-bb82-42d6-a631-5fbe16d3ab04",
"type": "main",
"index": 0
}
]
]
},
"d05dc36d-bb82-42d6-a631-5fbe16d3ab04": {
"main": [
[
{
"node": "bacdcf4a-d4ae-4436-bfaf-43954b53d832",
"type": "main",
"index": 0
}
]
]
},
"472ccb11-7e70-419c-822f-c6154ea2abc8": {
"main": [
[
{
"node": "f74fcb3e-acc8-429a-a372-9b2cb23666ff",
"type": "main",
"index": 0
}
]
]
},
"e3b53f01-39cf-40fa-b4b1-a16279d383fa": {
"main": [
[
{
"node": "113a0dee-5142-48ab-9b94-a1ef76407712",
"type": "main",
"index": 0
}
]
]
},
"dfecf8ef-ce60-4fa0-b944-529a637ce06b": {
"main": [
[
{
"node": "f74fcb3e-acc8-429a-a372-9b2cb23666ff",
"type": "main",
"index": 0
}
]
]
},
"c492c5b8-8caa-422a-b291-be06512b1810": {
"main": [
[
{
"node": "f74fcb3e-acc8-429a-a372-9b2cb23666ff",
"type": "main",
"index": 0
}
]
]
},
"754686ef-a5a9-4158-9eee-be35c091b5f1": {
"main": [
[
{
"node": "b97cd4c8-8dbe-434b-b47b-4ca4c9608218",
"type": "main",
"index": 0
}
]
]
},
"1fcfd918-bdb5-4ce3-b038-cab9cfa2c433": {
"main": [
[
{
"node": "f74fcb3e-acc8-429a-a372-9b2cb23666ff",
"type": "main",
"index": 0
}
]
]
},
"40bab90c-06e8-400e-ba35-d629ab529144": {
"main": [
[
{
"node": "94f25509-3536-4eaa-8e30-bb0d3d2bcb3a",
"type": "main",
"index": 0
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - Gestión de tickets, Resumen de IA
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
NodeAlchemy
@robertsantini🧠 NodeAlchemy turns ideas into powerful automations. I build modular n8n workflows for creators and businesses — from personal productivity tools to full-scale systems. ⚡ Explore ready-made templates or request a custom build.
Compartir este flujo de trabajo