Analyseur de boucle de retour client
Ceci est unMiscellaneous, AI Summarization, Multimodal AIworkflow d'automatisation du domainecontenant 11 nœuds.Utilise principalement des nœuds comme Code, Gmail, Slack, Switch, FormTrigger. Classification automatisée des retours clients via l'IA, Google Sheets et des alertes Slack
- •Compte Google et informations d'identification Gmail API
- •Token Bot Slack ou URL Webhook
- •Informations d'identification Google Sheets API
- •Clé API Google Gemini
Nœuds utilisés (11)
Catégorie
{
"id": "bAczIXMBSsZulax7",
"meta": {
"instanceId": "14e4c77104722ab186539dfea5182e419aecc83d85963fe13f6de862c875ebfa",
"templateCredsSetupCompleted": true
},
"name": "Customer Feedback Loop Analyzer",
"tags": [],
"nodes": [
{
"id": "0aeba1ed-f179-4a69-ad06-23bdf6ed1c4d",
"name": "À la soumission du formulaire",
"type": "n8n-nodes-base.formTrigger",
"position": [
220,
100
],
"webhookId": "",
"parameters": {
"options": {},
"formTitle": "Customer Review",
"formFields": {
"values": [
{
"fieldLabel": "Name",
"requiredField": true
},
{
"fieldLabel": "Review",
"requiredField": true
}
]
}
},
"typeVersion": 2.2
},
{
"id": "1e5cb96f-9467-47ab-b060-8600ee901582",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
528,
220
],
"parameters": {
"options": {},
"modelName": "models/gemini-1.5-flash"
},
"credentials": {
"googlePalmApi": {}
},
"typeVersion": 1
},
{
"id": "0c13ebb7-14ba-4c3b-aa44-b2b22ea72c3f",
"name": "Envoyer le rapport",
"type": "n8n-nodes-base.gmail",
"position": [
1256,
100
],
"webhookId": "8d5fae6b-280c-4286-bf3a-d7355617f013",
"parameters": {
"sendTo": "",
"message": "=Your monthly energy report is as follows {{ $json.url }}",
"options": {
"appendAttribution": true
},
"subject": "Energy Report",
"emailType": "text"
},
"credentials": {},
"typeVersion": 2.1
},
{
"id": "d0abc9c5-7591-4f63-b097-f1682ffaa006",
"name": "Slack",
"type": "n8n-nodes-base.slack",
"position": [
1256,
-100
],
"webhookId": "af63d3d7-1280-4774-b539-2edbf5d0588a",
"parameters": {
"text": "=User {{ $json.candidate_name }} has already applied for {{ $json.role_applied }}",
"user": {
"__rl": true,
"mode": "list",
"value": ""
},
"select": "user",
"otherOptions": {}
},
"typeVersion": 2.3
},
{
"id": "9151ff73-9062-4bb3-8776-1e299636b9ef",
"name": "Recevoir l'avis/retour",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
0,
-100
],
"parameters": {
"filters": {
"labelIds": [
"Label_536806471971916762"
]
},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"credentials": {},
"typeVersion": 1.2
},
{
"id": "c4312796-7756-4a1a-bad8-5af5f2377b69",
"name": "Extraire les détails",
"type": "n8n-nodes-base.code",
"position": [
220,
-100
],
"parameters": {
"jsCode": " const fromEmail = $input.first().json.From // Assuming 'from' field holds the full \"From\" string\n let name = '';\n\n // Check if the name is enclosed in angle brackets\n if (fromEmail.includes('<') && fromEmail.includes('>')) {\n name = fromEmail.substring(0, fromEmail.indexOf('<')).trim();\n } else {\n // If no angle brackets, assume the whole \"From\" field is the name\n name = fromEmail.trim();\n }\n\n return { json: { name: name ,Review : $input.first().json.snippet} };"
},
"typeVersion": 2
},
{
"id": "e1525399-3ac3-4dc0-8b9b-79261b2f9c63",
"name": "Transformer et résumer",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
440,
0
],
"parameters": {
"text": "={{ $json.Review }}",
"options": {
"systemPromptTemplate": "=You are a feedback analyst. Categorize the following user feedback into one of:\n- Bug\n- Feature Request\n- UX Issue\n- Other\n\nAlso extract the core complaint or suggestion in a concise sentence.\n\nFeedback: {{ $json.Review }}"
},
"schemaType": "fromJson",
"jsonSchemaExample": "{\n \"category\": \"Feature Request\",\n \"summary\": \"User wants dark mode support\",\n \"sentiment\": \"Positive\",\n \"Feedback text\": \"Original review\"\n\n}"
},
"typeVersion": 1.1
},
{
"id": "13155178-e7b0-4329-95b5-eddd560d0fe5",
"name": "Examiner les données",
"type": "n8n-nodes-base.googleSheets",
"position": [
816,
0
],
"parameters": {
"columns": {
"value": {
"summary": "={{ $json.output.summary }}",
"category": "={{ $json.output.category }}",
"Timestamp": "={{ $json.output.Timestamp }}",
"sentiment": "={{ $json.output.sentiment }}",
"Feedback text": "={{ $json.output[\"Feedback text\"] }}"
},
"schema": [
{
"id": "category",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "category",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "summary",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "sentiment",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "sentiment",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Feedback text",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Feedback text",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Timestamp",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Timestamp",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"output"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {},
"documentId": {}
},
"credentials": {},
"typeVersion": 4.6
},
{
"id": "66b9626b-dd32-4e12-8eda-1a85f8436a40",
"name": "Catégories",
"type": "n8n-nodes-base.switch",
"position": [
1036,
0
],
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "f245286d-696d-43c2-9717-838befcc4064",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.category }}",
"rightValue": "Bug"
}
]
}
},
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "394c07bc-9828-4d4d-a434-33cb4a96cddb",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.category }}",
"rightValue": "Feature Request"
}
]
}
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "a8490c26-d635-4a74-9c90-04d33e94f85e",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
380
],
"parameters": {
"width": 1520,
"height": 420,
"content": "**Purpose:**\nAutomatically capture customer reviews from forms or emails, analyze them with AI to detect category and sentiment, and notify the right channels while logging everything in Google Sheets.\n\n\n**Core Logic:**\n\n1. **Form submission trigger** captures customer name and review text.\n2. **Gmail trigger** listens for incoming feedback emails.\n3. **Extract details (Code node)** parses reviewer name and feedback text.\n4. **AI analysis** summarizes the review, detects sentiment, and assigns a category (Bug, Feature Request, UX Issue, Other).\n5. **Google Gemini (optional)** provides advanced summarization/classification.\n6. **Google Sheets** logs the categorized feedback for tracking.\n7. **Switch node** routes feedback into different branches based on category.\n8. **Slack notification** alerts the team about critical issues like Bugs.\n9. **Email report** sends categorized summaries (e.g., Feature Requests) to stakeholders.\n\n\n**Outcome:**\nCreates a streamlined feedback loop where customer input is captured, structured, categorized, and routed automatically — ensuring issues are quickly acted on, feature requests are tracked, and all feedback is stored for long-term analysis.\n"
},
"typeVersion": 1
},
{
"id": "a57683e3-5304-4a50-8aec-0ac86427b929",
"name": "Note adhésive1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-82,
-240
],
"parameters": {
"color": 5,
"width": 1520,
"height": 600,
"content": "## Customer Feedback Loop Analyzer"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "1277749b-2809-4280-a59e-17998a61a482",
"connections": {
"66b9626b-dd32-4e12-8eda-1a85f8436a40": {
"main": [
[
{
"node": "d0abc9c5-7591-4f63-b097-f1682ffaa006",
"type": "main",
"index": 0
}
],
[
{
"node": "0c13ebb7-14ba-4c3b-aa44-b2b22ea72c3f",
"type": "main",
"index": 0
}
]
]
},
"13155178-e7b0-4329-95b5-eddd560d0fe5": {
"main": [
[
{
"node": "66b9626b-dd32-4e12-8eda-1a85f8436a40",
"type": "main",
"index": 0
}
]
]
},
"c4312796-7756-4a1a-bad8-5af5f2377b69": {
"main": [
[
{
"node": "e1525399-3ac3-4dc0-8b9b-79261b2f9c63",
"type": "main",
"index": 0
}
]
]
},
"0aeba1ed-f179-4a69-ad06-23bdf6ed1c4d": {
"main": [
[
{
"node": "e1525399-3ac3-4dc0-8b9b-79261b2f9c63",
"type": "main",
"index": 0
}
]
]
},
"9151ff73-9062-4bb3-8776-1e299636b9ef": {
"main": [
[
{
"node": "c4312796-7756-4a1a-bad8-5af5f2377b69",
"type": "main",
"index": 0
}
]
]
},
"e1525399-3ac3-4dc0-8b9b-79261b2f9c63": {
"main": [
[
{
"node": "13155178-e7b0-4329-95b5-eddd560d0fe5",
"type": "main",
"index": 0
}
]
]
},
"1e5cb96f-9467-47ab-b060-8600ee901582": {
"ai_languageModel": [
[
{
"node": "e1525399-3ac3-4dc0-8b9b-79261b2f9c63",
"type": "ai_languageModel",
"index": 0
}
]
]
}
}
}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é ?
Intermédiaire - Divers, Résumé IA, IA Multimodale
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
WeblineIndia
@weblineindiaA Leading Software Engineering, Consulting & Outsourcing Services Company in USA & India serving Clients Globally since 1999.
Partager ce workflow