8
n8n 한국어amn8n.com

Jotform, GPT-4.1 및 Google Sheets를 사용한 자동화된 고객 피드백 분석 및 응답

고급

이것은자동화 워크플로우로, 21개의 노드를 포함합니다.주로 If, Set, Slack, EmailSend, GoogleSheets 등의 노드를 사용하며. Jotform, GPT-4.1 및 Google Sheets를 사용한 자동화된 고객 피드백 분석 및 응답

사전 요구사항
  • Slack Bot Token 또는 Webhook URL
  • Google Sheets API 인증 정보
  • OpenAI API Key

카테고리

-
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "meta": {
    "instanceId": "7ea3ce54fff35125cef70d7d3eb237421160deacac404433c1059018e4254496",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "7d50aea5-d58c-4a01-9964-92da5fe5031d",
      "name": "Jotform — 새 피드백 제출",
      "type": "n8n-nodes-base.jotFormTrigger",
      "position": [
        -128,
        0
      ],
      "webhookId": "85ddb2a9-bacb-45da-a2d2-062353bb19f1",
      "parameters": {
        "form": "251411842823048",
        "onlyAnswers": false
      },
      "credentials": {
        "jotFormApi": {
          "id": "jXvtT52kwCnYtxyM",
          "name": "JotForm account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "1df86418-1292-43b4-a144-1282d700f51d",
      "name": "핵심 필드 추출 (입력 정규화)",
      "type": "n8n-nodes-base.set",
      "position": [
        160,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "1b8cefc9-25fd-4603-88ef-787b5582660e",
              "name": "submissionId",
              "type": "string",
              "value": "={{ $json.submissionID }}"
            },
            {
              "id": "a4f8f6b0-9eea-422a-a02c-8db49cfbb026",
              "name": "fullName",
              "type": "string",
              "value": "={{ $json.rawRequest[\"Full Name\"] }}"
            },
            {
              "id": "804e4a6e-fbae-449a-a0dd-95b3c9a1cc60",
              "name": "email",
              "type": "string",
              "value": "={{ $json.rawRequest.Email }}"
            },
            {
              "id": "59e72537-9635-473b-9d7c-9755497cbc1f",
              "name": "whatsappNumber",
              "type": "string",
              "value": "={{ $json.rawRequest[\"Whatsapp Number\"] }}"
            },
            {
              "id": "ddaddc42-b043-4643-a6c7-d46bdbb3665f",
              "name": "orderId",
              "type": "string",
              "value": "={{ $json.rawRequest[\"Order Id\"] }}"
            },
            {
              "id": "26a71509-4fe2-4111-b206-b990c1669d54",
              "name": "ratings",
              "type": "string",
              "value": "={{ $json.rawRequest.Ratings }}"
            },
            {
              "id": "73ecd764-ba3b-49f4-98f4-1d0aad049c16",
              "name": "experienceFeedback",
              "type": "string",
              "value": "={{ $json.rawRequest[\"Please describe your experience in detail.\"] }}"
            },
            {
              "id": "1badf182-58df-4832-8153-9b7e89fe928d",
              "name": "recommendUs",
              "type": "string",
              "value": "={{ $json.rawRequest[\"Would you recommend us to others?\"] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ba3d2aca-2377-4cad-8aac-e75f7cac07bb",
      "name": "AI 분석 — 감정 및 근본 원인",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        464,
        0
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini",
          "cachedResultName": "GPT-4.1-MINI"
        },
        "options": {
          "temperature": 0.7
        },
        "messages": {
          "values": [
            {
              "content": "=You are a Customer Feedback Analysis AI.\nYour job is to analyze raw customer feedback and produce structured, machine-readable insights.\n\nReturn a valid JSON object only, in the following exact format:\n\n{\n  \"Sentiment\": \"Positive | Neutral | Negative\",\n  \"RootCause\": \"short, human-readable explanation of the main reason behind the feedback\",\n  \"RecoveryDirection\": \"concise, internal note suggesting what the company should do next\",\n  \"RecoveryMessage\": \"optional draft message suggestion for the support team to consider (not to be sent automatically)\"\n}\n\nSubmission:\nRating: {{ $json.ratings }}\nExperience: {{ $json.experienceFeedback }}\nRecommendUs: {{ $json.recommendUs }}\n\nGuidelines:\n1. Be objective — classify based on sentiment and tone, not rating alone.\n2. Use \"RootCause\" to summarize the issue (e.g., “late delivery”, “rude support”, “confusing checkout”).\n3. Keep \"RecoveryDirection\" actionable (e.g., “offer compensation”, “escalate to ops”, “send apology email”).\n4. Keep \"RecoveryMessage\" short and generic (internal use only).\n5. Never include markdown, explanations, or extra text outside the JSON object."
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "id": "DafVSGDfbwLzdqrw",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "9d427e02-2337-44eb-b074-29492fb6f5ff",
      "name": "피드백 부정적 또는 평점 ≤ 3 확인",
      "type": "n8n-nodes-base.if",
      "position": [
        864,
        0
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "d0911e13-fee7-44ec-9c7a-dc14285d0d6b",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.message.content.Sentiment }}",
              "rightValue": "=Negative"
            },
            {
              "id": "f82433a5-15ee-46e2-bb2e-e6aaf527d2c4",
              "operator": {
                "type": "number",
                "operation": "lte"
              },
              "leftValue": "={{ $('Extract Key Fields (Normalize Input)').item.json.ratings }}",
              "rightValue": 3
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "61bad5e0-5b4c-463f-96de-688302bb62ea",
      "name": "AI 생성기 — 맞춤형 회복 메시지",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1168,
        -112
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini",
          "cachedResultName": "GPT-4.1-MINI"
        },
        "options": {
          "temperature": 0.7
        },
        "messages": {
          "values": [
            {
              "content": "=You are an AI Customer Experience Writer. \nYour job is to compose personalized, empathetic recovery messages for customers based on their feedback and AI analysis results for email and whatsapp both channels.\n\nReturn a valid JSON object only, in this exact format:\n\n{\n  \"Email Body\": \"string (the full customer-facing message)\",\n  \"Subject\": \"string (applicable only for email),\n  \"Tone\": \"Friendly | Professional | Empathetic\"\n}\n\nContext:\n- Customer Name: {{ $('Extract Key Fields (Normalize Input)').item.json.fullName }}\n- Brand Name: Your Brand Name\n- Sentiment: {{ $json.message.content.Sentiment }}\n- Root Cause: {{ $json.message.content.RootCause }}\n- Feedback Text: {{ $('Extract Key Fields (Normalize Input)').item.json.experienceFeedback }}\n- Recovery Direction: {{ $json.message.content.RecoveryDirection }}\n- Previous Recovery Message: {{$json[\"RecoveryMessage\"] || \"\"}}\n- Order ID: {{$json[\"order_id\"] || \"N/A\"}}\n- Rating: {{ $('Extract Key Fields (Normalize Input)').item.json.ratings }}\n- Recommend Us: {{ $('Extract Key Fields (Normalize Input)').item.json.recommendUs }}\n\nGuidelines:\n1. Be concise (60–100 words).\n2. Always start with the customer’s name and acknowledge their experience.\n3. Use empathy but maintain professionalism — no exaggerated apologies.\n4. Don’t overpromise — avoid mentioning refunds, compensation, or guarantees unless implied by context.\n5. End on a reassuring note and represent the brand positively.\n6. Return JSON only. No markdown or extra text."
            }
          ]
        },
        "jsonOutput": true
      },
      "credentials": {
        "openAiApi": {
          "id": "DafVSGDfbwLzdqrw",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "c43ead64-eec7-4178-875f-eff6f389a769",
      "name": "회복 이메일 전송 (부정 경로)",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        2000,
        -48
      ],
      "webhookId": "2cce16b7-f70a-48bb-8d1c-4bb428d379dd",
      "parameters": {
        "html": "={{ $json.message.content[\"Email Body\"] }}",
        "options": {},
        "subject": "={{ $json.message.content.Subject }}",
        "toEmail": "={{ $('Extract Key Fields (Normalize Input)').item.json.email }}",
        "fromEmail": "aayushmans0411@gmail.com"
      },
      "credentials": {
        "smtp": {
          "id": "29Uh9G1RUR82SFVn",
          "name": "SMTP account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "2029a509-776a-439e-976b-e435511d9ac1",
      "name": "Slack에서 CX 팀에 알림",
      "type": "n8n-nodes-base.slack",
      "position": [
        1824,
        48
      ],
      "webhookId": "d79a277d-8d4a-4815-a974-aae0165b84d0",
      "parameters": {
        "text": "=🚨 *Negative Feedback Alert*\n*Name:* {{ $json[\"Full Name\"] }}\n*Rating:* {{ $json.Ratings }}\n*Root Cause:* {{ $json[\"Root Cause\"] }}\n*Order ID:* {{ $json[\"Order Id\"] }}\n*Recovery Msg Sent:* ✅",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "name",
          "value": "#customer_feedback"
        },
        "otherOptions": {}
      },
      "typeVersion": 2.3
    },
    {
      "id": "cf844ac0-b5fa-4051-bc26-98b6c27f6d4e",
      "name": "회복 메시지 전송 완료 표시",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2256,
        -32
      ],
      "parameters": {
        "columns": {
          "value": {
            "Submission Id": "={{ $('Prepare Data for Sheet & Notifications (Negative Path)').item.json[\"Submission Id\"] }}",
            "Recovery Message Sent": "Yes"
          },
          "schema": [
            {
              "id": "Submission Id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Submission Id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Full Name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Full Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Whatsapp Number",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Whatsapp Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Order Id",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Order Id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Ratings",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Ratings",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Experience Feedback",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Experience Feedback",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Recommend Us",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Recommend Us",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Sentiment",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Sentiment",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Root Cause",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Root Cause",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Recovery Direction",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Recovery Direction",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Recovery Message",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Recovery Message",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email Subject",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Email Subject",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email Body",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Email Body",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Recovery Tone",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Recovery Tone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Recovery Message Sent",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Recovery Message Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "createdAt",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "createdAt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Submission Id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "=gid=0"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ your_google_sheet_document }}"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "FATfI7LIO9bsNKSj",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "3dae2739-cefe-44fa-962b-ea47c297d201",
      "name": "감사 이메일 전송 (긍정 경로)",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        1472,
        432
      ],
      "webhookId": "64029ffa-e1a3-42dd-a9b7-0ff05356e79c",
      "parameters": {
        "html": "=<table role=\"presentation\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background:#f8fafc;padding:32px 0;font-family:Helvetica,Arial,sans-serif;\">\n  <tr>\n    <td align=\"center\">\n      <table role=\"presentation\" width=\"600\" cellpadding=\"0\" cellspacing=\"0\" style=\"background:#ffffff;border-radius:10px;overflow:hidden;box-shadow:0 4px 10px rgba(0,0,0,0.05);\">\n        \n        <!-- Header -->\n        <tr>\n          <td style=\"background:#0b4a82;padding:20px 24px;color:#ffffff;font-size:20px;font-weight:600;\">\n            Your Brand Name Team\n          </td>\n        </tr>\n\n        <!-- Body -->\n        <tr>\n          <td style=\"padding:32px 40px;color:#0f172a;\">\n            <h2 style=\"margin:0 0 16px 0;font-size:22px;font-weight:600;color:#111827;\">Thank you, {{$json[\"Full Name\"]}}!</h2>\n\n            <p style=\"margin:0 0 16px 0;line-height:1.6;color:#334155;font-size:15px;\">\n              We’re so glad you enjoyed your experience with us. Your feedback keeps our team motivated to do better every day.\n            </p>\n\n            <p style=\"margin:0 0 20px 0;font-size:15px;color:#334155;\">\n              Would you mind sharing your experience publicly? It helps other customers discover us and keeps our small team growing!\n            </p>\n\n            <!-- CTA -->\n            <table role=\"presentation\" cellpadding=\"0\" cellspacing=\"0\" style=\"margin:24px 0;\">\n              <tr>\n                <td>\n                  <a href=\"Your review Page link\" style=\"background:#0b4a82;color:#ffffff;padding:12px 22px;text-decoration:none;border-radius:6px;font-size:15px;font-weight:600;display:inline-block;\">\n                    Leave a Review\n                  </a>\n                </td>\n              </tr>\n            </table>\n\n            <p style=\"margin:16px 0 0 0;font-size:13px;color:#64748b;\">\n              Thanks again for being part of the Your Brand Name community 💙  \n              <br><strong>— The Customer Experience Team</strong>\n            </p>\n          </td>\n        </tr>\n\n        <!-- Footer -->\n        <tr>\n          <td style=\"padding:16px 40px;background:#f9fafb;border-top:1px solid #e2e8f0;font-size:13px;color:#64748b;text-align:center;\">\n            © 2025 Your Brand Name • <a href=\"Unsubscribe Link\" style=\"color:#94a3b8;text-decoration:none;\">Unsubscribe</a>\n          </td>\n        </tr>\n      </table>\n    </td>\n  </tr>\n</table>\n",
        "options": {},
        "subject": "A small favor? Share your happy experience with others!",
        "toEmail": "={{ $json[\"Email\"] }}",
        "fromEmail": "aayushmans0411@gmail.com"
      },
      "credentials": {
        "smtp": {
          "id": "29Uh9G1RUR82SFVn",
          "name": "SMTP account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "6199baa6-140d-45f4-a786-e81f9c022771",
      "name": "Google 시트에 피드백 기록 (부정 경로)",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1840,
        -192
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "Submission Id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Submission Id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Full Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Full Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Whatsapp Number",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Whatsapp Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Order Id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Order Id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Ratings",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Ratings",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Experience Feedback",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Experience Feedback",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Recommend Us",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Recommend Us",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Sentiment",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Sentiment",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Root Cause",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Root Cause",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Recovery Direction",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Recovery Direction",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Recovery Message",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Recovery Message",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email Subject",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email Subject",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email Body",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email Body",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Recovery Tone",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Recovery Tone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Recovery Message Sent",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Recovery Message Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "createdAt",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "createdAt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "=gid=0"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{your_google_sheet_document}}"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "FATfI7LIO9bsNKSj",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "fd15071e-5b5e-4ce1-9494-9df8623950fc",
      "name": "시트 및 알림용 데이터 준비 (부정 경로)",
      "type": "n8n-nodes-base.set",
      "position": [
        1520,
        -112
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "d0ecfce6-a795-4899-b8ca-61930ca608b1",
              "name": "Submission Id",
              "type": "string",
              "value": "={{ $('Extract Key Fields (Normalize Input)').item.json.submissionId }}"
            },
            {
              "id": "48eb542c-26eb-4bcf-99a8-b89da94b09e6",
              "name": "Full Name",
              "type": "string",
              "value": "={{ $('Extract Key Fields (Normalize Input)').item.json.fullName }}"
            },
            {
              "id": "0ba76f73-c547-4878-ae0d-88082ae41ffc",
              "name": "Email",
              "type": "string",
              "value": "={{ $('Extract Key Fields (Normalize Input)').item.json.email }}"
            },
            {
              "id": "5cb71cf8-b6ba-4b5e-a023-77572baf7f2d",
              "name": "Whatsapp Number",
              "type": "string",
              "value": "={{ $('Extract Key Fields (Normalize Input)').item.json.whatsappNumber }}"
            },
            {
              "id": "dbf840c6-6c5c-4ccc-945d-c9bf2666e614",
              "name": "Order Id",
              "type": "string",
              "value": "={{ $('Extract Key Fields (Normalize Input)').item.json.orderId }}"
            },
            {
              "id": "e801c1b2-793b-474a-91c0-be92f3474a70",
              "name": "Ratings",
              "type": "string",
              "value": "={{ $('Extract Key Fields (Normalize Input)').item.json.ratings }}"
            },
            {
              "id": "4ec10cde-0678-4928-a278-d71b3f9bbe8a",
              "name": "Experience Feedback",
              "type": "string",
              "value": "={{ $('Extract Key Fields (Normalize Input)').item.json.experienceFeedback }}"
            },
            {
              "id": "c100a63a-0971-4a00-af92-e5b735fa1682",
              "name": "Recommend Us",
              "type": "string",
              "value": "={{ $('Extract Key Fields (Normalize Input)').item.json.recommendUs }}"
            },
            {
              "id": "02ff8101-ddf0-4d2e-9639-ea67e6088143",
              "name": "Sentiment",
              "type": "string",
              "value": "={{ $('AI Analysis — Sentiment & Root Cause').item.json.message.content.Sentiment }}"
            },
            {
              "id": "ff1e1c61-57f0-4877-be1d-499ad223fbf0",
              "name": "Root Cause",
              "type": "string",
              "value": "={{ $('AI Analysis — Sentiment & Root Cause').item.json.message.content.RootCause }}"
            },
            {
              "id": "829756fc-5b76-4dbb-aaba-ee7fde17eaa0",
              "name": "Recovery Direction",
              "type": "string",
              "value": "={{ $('AI Analysis — Sentiment & Root Cause').item.json.message.content.RecoveryDirection }}"
            },
            {
              "id": "f767550e-66ba-44c0-9182-7379f12e5488",
              "name": "Recovery Message",
              "type": "string",
              "value": "={{ $('AI Analysis — Sentiment & Root Cause').item.json.message.content.RecoveryMessage }}"
            },
            {
              "id": "f83ac8b4-02d2-494d-a066-5c96a5ffe9ec",
              "name": "Email Subject",
              "type": "string",
              "value": "={{ $json.message.content.Subject }}"
            },
            {
              "id": "1f142e06-ca48-4fe6-92ac-f27e871e2721",
              "name": "Email Body",
              "type": "string",
              "value": "={{ $json.message.content[\"Email Body\"] }}"
            },
            {
              "id": "17c39abf-9a2d-4d1a-91fd-afa1240678c1",
              "name": "Recovery Tone",
              "type": "string",
              "value": "={{ $json.message.content.Tone }}"
            },
            {
              "id": "6cf5fcab-5469-4583-877b-4b801835d530",
              "name": "Recovery Message Sent",
              "type": "string",
              "value": ""
            },
            {
              "id": "56b12b3c-2804-4956-98d9-4ea2e42c2e21",
              "name": "createdAt",
              "type": "string",
              "value": "={{ $now.toLocal().toMillis() }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "bdcd7bb0-8d61-4bdd-b0f3-e4ff61efb4d7",
      "name": "시트 및 알림용 데이터 준비 (긍정 경로)",
      "type": "n8n-nodes-base.set",
      "position": [
        1248,
        352
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "d0ecfce6-a795-4899-b8ca-61930ca608b1",
              "name": "Submission Id",
              "type": "string",
              "value": "={{ $('Extract Key Fields (Normalize Input)').item.json.submissionId }}"
            },
            {
              "id": "48eb542c-26eb-4bcf-99a8-b89da94b09e6",
              "name": "Full Name",
              "type": "string",
              "value": "={{ $('Extract Key Fields (Normalize Input)').item.json.fullName }}"
            },
            {
              "id": "0ba76f73-c547-4878-ae0d-88082ae41ffc",
              "name": "Email",
              "type": "string",
              "value": "={{ $('Extract Key Fields (Normalize Input)').item.json.email }}"
            },
            {
              "id": "5cb71cf8-b6ba-4b5e-a023-77572baf7f2d",
              "name": "Whatsapp Number",
              "type": "string",
              "value": "={{ $('Extract Key Fields (Normalize Input)').item.json.whatsappNumber }}"
            },
            {
              "id": "dbf840c6-6c5c-4ccc-945d-c9bf2666e614",
              "name": "Order Id",
              "type": "string",
              "value": "={{ $('Extract Key Fields (Normalize Input)').item.json.orderId }}"
            },
            {
              "id": "e801c1b2-793b-474a-91c0-be92f3474a70",
              "name": "Ratings",
              "type": "string",
              "value": "={{ $('Extract Key Fields (Normalize Input)').item.json.ratings }}"
            },
            {
              "id": "4ec10cde-0678-4928-a278-d71b3f9bbe8a",
              "name": "Experience Feedback",
              "type": "string",
              "value": "={{ $('Extract Key Fields (Normalize Input)').item.json.experienceFeedback }}"
            },
            {
              "id": "c100a63a-0971-4a00-af92-e5b735fa1682",
              "name": "Recommend Us",
              "type": "string",
              "value": "={{ $('Extract Key Fields (Normalize Input)').item.json.recommendUs }}"
            },
            {
              "id": "02ff8101-ddf0-4d2e-9639-ea67e6088143",
              "name": "Sentiment",
              "type": "string",
              "value": "={{ $('AI Analysis — Sentiment & Root Cause').item.json.message.content.Sentiment }}"
            },
            {
              "id": "ff1e1c61-57f0-4877-be1d-499ad223fbf0",
              "name": "Root Cause",
              "type": "string",
              "value": "={{ $('AI Analysis — Sentiment & Root Cause').item.json.message.content.RootCause }}"
            },
            {
              "id": "829756fc-5b76-4dbb-aaba-ee7fde17eaa0",
              "name": "Recovery Direction",
              "type": "string",
              "value": "={{ $('AI Analysis — Sentiment & Root Cause').item.json.message.content.RecoveryDirection }}"
            },
            {
              "id": "f767550e-66ba-44c0-9182-7379f12e5488",
              "name": "Recovery Message",
              "type": "string",
              "value": "={{ $('AI Analysis — Sentiment & Root Cause').item.json.message.content.RecoveryMessage }}"
            },
            {
              "id": "56b12b3c-2804-4956-98d9-4ea2e42c2e21",
              "name": "createdAt",
              "type": "string",
              "value": "={{ $now.toLocal().toMillis() }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "4e18d0fb-c762-433a-9ddf-1ab13204e872",
      "name": "Google 시트에 피드백 기록 (긍정 경로)",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1456,
        240
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "Submission Id",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Submission Id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Full Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Full Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Whatsapp Number",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Whatsapp Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Order Id",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Order Id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Ratings",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Ratings",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Experience Feedback",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Experience Feedback",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Recommend Us",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Recommend Us",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Sentiment",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Sentiment",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Root Cause",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Root Cause",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Recovery Direction",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Recovery Direction",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Recovery Message",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Recovery Message",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email Subject",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Email Subject",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email Body",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Email Body",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Recovery Tone",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Recovery Tone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Recovery Message Sent",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Recovery Message Sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "createdAt",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "createdAt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1YYmyQNTGSdBQcoHuUI1tnd081Nq-5FVcN8KWGLf0iK8/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "=1YYmyQNTGSdBQcoHuUI1tnd081Nq-5FVcN8KWGLf0iK8"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "FATfI7LIO9bsNKSj",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "e6f586ea-130e-46a6-aedd-cf9154f7f401",
      "name": "스티커 메모",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -384,
        -880
      ],
      "parameters": {
        "width": 400,
        "height": 368,
        "content": "## 🧠 Workflow Summary\n\nAI-driven automation that transforms every Jotform feedback submission into actionable customer engagement.\n\n🟢 Captures Feedback → 🧠 Analyzes with GPT → ⚖️ Routes Path →  \n📧 Sends Email → 📊 Logs Data → 🔔 Notifies Team\n\n**Built using:**  \nJotform + n8n + GPT-4.1 + Google Sheets + Slack + SMTP\n\nGet sample google sheet format: https://docs.google.com/spreadsheets/u/2/d/1YYmyQNTGSdBQcoHuUI1tnd081Nq-5FVcN8KWGLf0iK8/copy"
      },
      "typeVersion": 1
    },
    {
      "id": "fb284404-2e7a-4316-a323-5309afd80e93",
      "name": "스티커 메모1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        32,
        -416
      ],
      "parameters": {
        "color": 4,
        "width": 352,
        "height": 608,
        "content": "## Clean Incoming Data\n\nNormalizes raw Jotform fields into structured variables:\n\n- Full Name  \n- Email  \n- WhatsApp Number  \n- Order ID  \n- Rating (1–5 scale)  \n- Experience Feedback Text  \n- Recommendation Response\n\nEnsures consistent naming for downstream AI and routing nodes.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8a3a00f8-9844-49c2-ab38-567b40e64e31",
      "name": "스티커 메모2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        -416
      ],
      "parameters": {
        "color": 6,
        "width": 320,
        "height": 608,
        "content": "## AI Sentiment & Root Cause Detection\n\nGPT analyzes the customer feedback and returns structured insight:\n\n- **Sentiment:** Positive | Neutral | Negative  \n- **Root Cause:** Short explanation of the main issue  \n- **Recovery Direction:** Actionable next step for the business  \n- **Recovery Message:** Optional internal note for CX team\n\n**Output:** JSON-only (no markdown, no extra text)"
      },
      "typeVersion": 1
    },
    {
      "id": "3cea0b32-e8af-463e-8846-3015815f0e9a",
      "name": "스티커 메모3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        736,
        -416
      ],
      "parameters": {
        "color": 5,
        "width": 352,
        "height": 608,
        "content": "## Path Routing Logic\n\nDecision Node Logic:\n- If **Sentiment = Negative** OR **Rating ≤ 3**\n  → Route to *Recovery Path*\n- Else\n  → Route to *Appreciation Path*\n\nThis ensures negative experiences are handled immediately,  \nwhile positive customers are nurtured for reviews."
      },
      "typeVersion": 1
    },
    {
      "id": "0f039f93-f1db-42f6-836d-2172daeb01d7",
      "name": "스티커 메모4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1104,
        -848
      ],
      "parameters": {
        "color": 3,
        "width": 1360,
        "height": 1040,
        "content": "## AI Recovery Message Composer\n\nThe AI crafts a personalized, empathetic message using the customer’s data.\n\n**Context Used:**\n- Name, Rating, Feedback, Root Cause, Recovery Direction  \n\n**Output Format:**\n```json\n{\n  \"Email Body\": \"...\",\n  \"Subject\": \"...\",\n  \"Tone\": \"Friendly | Professional | Empathetic\"\n}\n```\nKeeps tone consistent with your brand and avoids overpromising.\n\n\n---\n\n### 🚨 **Negative Path (Steps 6–10)**\n```markdown\n## 🚨 Recovery Path Flow\n\nTriggered for **Negative Sentiment** or **Rating ≤ 3**.\n\n1️⃣ Log feedback in Google Sheets  \n2️⃣ Send AI-crafted Recovery Email  \n3️⃣ Notify CX Team via Slack  \n4️⃣ Update Google Sheet — “Recovery Message Sent: Yes”  \n\n**Goal:**  \nAcknowledge and recover customer trust quickly, while logging all actions for visibility.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "82cd08d7-0913-42ea-8a4f-1aaa7a5a652f",
      "name": "스티커 메모5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1120,
        208
      ],
      "parameters": {
        "width": 576,
        "height": 656,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## 🌟 Appreciation Path Flow\n\nTriggered for **Positive** or **Neutral** feedback.\n\n✅ Sends personalized **Thank-you Email**  \n✅ Includes CTA to leave a **public review**  \n✅ Logs all data in Google Sheets  \n\n**Objective:**  \nReinforce loyalty and convert satisfied customers into public advocates."
      },
      "typeVersion": 1
    },
    {
      "id": "19b6d6fc-4ef5-421b-9048-1c8504134e1e",
      "name": "스티커 메모6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -384,
        -496
      ],
      "parameters": {
        "width": 400,
        "height": 400,
        "content": "## 🔐 How to Get Your Jotform API Credentials\n\n1. Visit [Jotform](https://www.jotform.com/?partner=aayushmansharma) and **sign up** (if you’re new) or **log in** to your existing account.  \n2. Click your **profile icon (top-right)** → go to **Settings**.  \n3. In the left sidebar, open the **API** section.  \n4. Click **Create New Key**.  \n5. Set permission to **Full Access** (recommended for full workflow functionality).  \n6. Copy the generated API key.  \n7. In **n8n**, open **Credentials → Create New → JotForm API**.  \n8. Paste your API key and save it as `JotForm account`.  \n9. Test the connection by running your **Jotform Trigger** node."
      },
      "typeVersion": 1
    },
    {
      "id": "dd336412-bf91-45fd-92db-63869ff96040",
      "name": "스티커 메모7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        32,
        -880
      ],
      "parameters": {
        "width": 512,
        "height": 448,
        "content": "## ⚙️ Jotform Configuration Guide (for n8n Feedback Workflow)\n\nFollow these steps to connect your Jotform to n8n:\n\n### 1️⃣ Create the Feedback Form\nBuild a form in Jotform with the following exact fields:\n- Field Label - Field Type - Example Input\n- Full Name - Short Text - Customer Name\n- Email - Email - test@gmail.com\n- Whatsapp Number -  Short Text- 91xxxxxxxxxx\n- Order Id - Short Text - #2321\n- Ratings - Ratings - 3\n- Please describe your experience in detail. - Long Text - “Feedback”\n- Would you recommend us to others? - Single Choice (Yes/No) - No\n\n💡 **Tip:** Keep field labels identical — n8n uses these exact keys for data mapping.\n\n"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "7d50aea5-d58c-4a01-9964-92da5fe5031d": {
      "main": [
        [
          {
            "node": "1df86418-1292-43b4-a144-1282d700f51d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c43ead64-eec7-4178-875f-eff6f389a769": {
      "main": [
        [
          {
            "node": "cf844ac0-b5fa-4051-bc26-98b6c27f6d4e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1df86418-1292-43b4-a144-1282d700f51d": {
      "main": [
        [
          {
            "node": "ba3d2aca-2377-4cad-8aac-e75f7cac07bb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ba3d2aca-2377-4cad-8aac-e75f7cac07bb": {
      "main": [
        [
          {
            "node": "9d427e02-2337-44eb-b074-29492fb6f5ff",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3dae2739-cefe-44fa-962b-ea47c297d201": {
      "main": [
        []
      ]
    },
    "9d427e02-2337-44eb-b074-29492fb6f5ff": {
      "main": [
        [
          {
            "node": "61bad5e0-5b4c-463f-96de-688302bb62ea",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "bdcd7bb0-8d61-4bdd-b0f3-e4ff61efb4d7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "61bad5e0-5b4c-463f-96de-688302bb62ea": {
      "main": [
        [
          {
            "node": "fd15071e-5b5e-4ce1-9494-9df8623950fc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fd15071e-5b5e-4ce1-9494-9df8623950fc": {
      "main": [
        [
          {
            "node": "6199baa6-140d-45f4-a786-e81f9c022771",
            "type": "main",
            "index": 0
          },
          {
            "node": "c43ead64-eec7-4178-875f-eff6f389a769",
            "type": "main",
            "index": 0
          },
          {
            "node": "2029a509-776a-439e-976b-e435511d9ac1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bdcd7bb0-8d61-4bdd-b0f3-e4ff61efb4d7": {
      "main": [
        [
          {
            "node": "4e18d0fb-c762-433a-9ddf-1ab13204e872",
            "type": "main",
            "index": 0
          },
          {
            "node": "3dae2739-cefe-44fa-962b-ea47c297d201",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

고급

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
고급
노드 수21
카테고리-
노드 유형8
난이도 설명

고급 사용자를 위한 16+개 노드의 복잡한 워크플로우

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34