RECIPE 087
고객 NPS 설문 자동 발송 → 결과 분석
- ▸구매/가입 후 일정 기간이 지난 고객에게 NPS 설문 자동 발송
- ▸설문 응답을 자동 수집하여 점수대별 분류
- ▸비추천 고객(Detractor)에게 즉시 개인화 대응 이메일 발송
✅사전 준비
- □고객 DB (구매일/가입일 포함) 접근 권한
- □NPS 설문 링크 생성 (Typeform, Google Forms 또는 자체 구현)
- □설문 발송 타이밍 결정 (예: 구매 후 7일)
- □응답 수집용 웹훅 또는 Sheets 연동 설정
발송 대상 고객 필터링
// Google Sheets에서 고객 목록 읽기 후 Code 노드
const customers = $input.all();
const now = new Date();
return customers.filter(c => {
const purchaseDate = new Date(c.json.purchase_date);
const daysSince = Math.floor((now - purchaseDate) / 86400000);
// 구매 후 7일이 된 고객, 아직 설문 미발송
return daysSince === 7 && !c.json.nps_sent;
});NPS 설문 이메일 템플릿
제목: {{ $json.name }}님, 솔직한 피드백을 들려주세요 (1분)
안녕하세요 {{ $json.name }}님,
저희 서비스를 이용하신 지 일주일이 되었습니다.
단 한 가지만 여쭤볼게요:
**친구나 동료에게 저희 서비스를 추천하실 의향이 얼마나 있으신가요?**
0(전혀 없음) ~ 10(매우 높음)
👉 지금 바로 답하기: {{ $json.survey_url }}?email={{ $json.email }}
1분이면 충분합니다. 감사합니다!NPS 점수 분류 및 대응 (Switch)
// 응답 수신 후 Switch 노드
Node: Switch
Value: {{ $json.nps_score >= 9 ? 'promoter' : $json.nps_score >= 7 ? 'passive' : 'detractor' }}
Case 'promoter' (9-10점): 리뷰 작성 요청 이메일
Case 'passive' (7-8점): 개선 사항 질문 이메일
Case 'detractor' (0-6점): CS팀 즉시 알림 + 사과 이메일💡 TIPNPS = (추천 고객 비율%) - (비추천 고객 비율%)로 계산됩니다. 응답 데이터를 Sheets에 축적하면 Code 노드로 월별 NPS 트렌드를 자동 계산할 수 있습니다.
⚡
워크플로우 JSON
아래 JSON을 복사해 n8n에 바로 임포트하세요
📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
"recipeId": "recipe087",
"title": "구글 폼 + 네이버 폼 응답 통합 집계",
"chapter": 8,
"category": "국내 서비스 특화 레시피",
"difficulty": "⭐⭐",
"estimatedTime": "30분",
"usedApps": [
"Google Sheets",
"네이버 폼 Webhook"
],
"description": "구글 폼 응답은 기존 구글 시트 연동으로, 네이버 폼 응답은 Webhook으로 n8n에 연결해 양쪽 응답을 동일한 컬럼 구조로 변환하고 하나의 통합 시트에 자동 기록합니다.",
"nodes": [
{
"id": "node1",
"type": "n8n-nodes-base.googleSheetsTrigger",
"name": "구글 폼 응답 감지",
"parameters": {
"spreadsheetId": "={{$env.GOOGLE_FORM_SHEET_ID}}",
"sheetName": "설문응답",
"triggerOn": "rowAdded"
}
},
{
"id": "node2",
"type": "n8n-nodes-base.webhook",
"name": "네이버 폼 Webhook 수신",
"parameters": {
"path": "naver-form-response",
"httpMethod": "POST"
}
},
{
"id": "node3",
"type": "n8n-nodes-base.code",
"name": "구글 폼 응답 정규화",
"parameters": {
"jsCode": "return items.map(item => ({\n json: {\n source: '구글폼',\n submittedAt: item.json['타임스탬프'] || new Date().toISOString(),\n name: item.json['이름'] || '',\n email: item.json['이메일'] || '',\n answer1: item.json['질문1'] || '',\n answer2: item.json['질문2'] || ''\n }\n}));"
}
},
{
"id": "node4",
"type": "n8n-nodes-base.code",
"name": "네이버 폼 응답 정규화",
"parameters": {
"jsCode": "return items.map(item => ({\n json: {\n source: '네이버폼',\n submittedAt: item.json['createdAt'] || new Date().toISOString(),\n name: item.json['responses']?.find(r => r.questionId === '{{$env.NAVER_NAME_QUESTION_ID}}')?.answer || '',\n email: item.json['responses']?.find(r => r.questionId === '{{$env.NAVER_EMAIL_QUESTION_ID}}')?.answer || '',\n answer1: item.json['responses']?.find(r => r.questionId === '{{$env.NAVER_Q1_ID}}')?.answer || '',\n answer2: item.json['responses']?.find(r => r.questionId === '{{$env.NAVER_Q2_ID}}')?.answer || ''\n }\n}));"
}
},
{
"id": "node5",
"type": "n8n-nodes-base.googleSheets",
"name": "통합 시트 기록",
"parameters": {
"operation": "appendOrUpdate",
"spreadsheetId": "={{$env.UNIFIED_SURVEY_SHEET_ID}}",
"sheetName": "통합응답",
"columns": {
"mappingMode": "defineBelow",
"value": {
"출처": "={{$json['source']}}",
"제출시각": "={{$json['submittedAt']}}",
"이름": "={{$json['name']}}",
"이메일": "={{$json['email']}}",
"답변1": "={{$json['answer1']}}",
"답변2": "={{$json['answer2']}}"
}
}
}
}
],
"envVariables": {
"GOOGLE_FORM_SHEET_ID": "구글 폼 연결 Google Sheets ID",
"UNIFIED_SURVEY_SHEET_ID": "통합 응답 Google Sheets ID",
"NAVER_NAME_QUESTION_ID": "네이버 폼 이름 질문 ID",
"NAVER_EMAIL_QUESTION_ID": "네이버 폼 이메일 질문 ID",
"NAVER_Q1_ID": "네이버 폼 질문1 ID",
"NAVER_Q2_ID": "네이버 폼 질문2 ID"
},
"tips": [
"네이버 폼의 알림 URL 설정은 네이버 폼 → 설문 설정 → 응답 알림 → Webhook URL 입력에서 할 수 있어요.",
"질문 수가 많은 경우 정규화 코드에서 questionId 매핑을 추가로 작성해야 해요. QR코드 템플릿에 매핑 예시가 포함되어 있어요.",
"응답 집계 현황을 주간 단위로 자동 요약해 Slack으로 발송하는 Schedule Trigger를 추가하면 설문 현황을 실시간으로 파악할 수 있어요."
],
"qrUrl": "www.koreaaitimes.com/books/n8n-vol2/recipe087"
}