NPSアンケートは、素点を集めただけでは業務に使えません。
推奨者、中立者、批判者に区分した集計列を持ち、批判者への通知フローまで作って、初めて運用になります。
最低限の列
response_id
submitted_at
nps_score
nps_segment
reason_text
follow_up_consent
contact_email
owner
status
notified_at
nps_score は0-10の素点、nps_segment はそこから導出する区分列です。
nps_score >= 9 -> promoter
nps_score >= 7 -> passive
nps_score <= 6 -> detractor
区分を都度計算するのではなく、集計列として持たせておくと、ダッシュボードやSQLの条件がシンプルになります。
NPSスコアを集計する
select
count(*) filter (where nps_segment = 'promoter') as promoters,
count(*) filter (where nps_segment = 'detractor') as detractors,
count(*) as total,
round(
100.0 * count(*) filter (where nps_segment = 'promoter') / count(*)
- 100.0 * count(*) filter (where nps_segment = 'detractor') / count(*)
, 1) as nps
from nps_responses
where submitted_at >= now() - interval '30 days';
中立者(passive)は分子の引き算には入りませんが、total の母数には含めます。ここを間違えると、NPSの数値がずれます。
Sheetsで同じことをするなら、COUNTIF で promoter と detractor の件数を数え、割合の差を取るだけです。
低評価者への通知条件
批判者を見つけて終わりにしないために、通知条件を分けます。
| 条件 | 通知先 | 目的 |
|---|---|---|
| nps_segment = detractor かつ follow_up_consent = true | 担当者 | フォロー対象を逃さない |
| nps_segment = detractor かつ follow_up_consent = false | 記録のみ | 同意なき連絡を避ける |
| 同じreason_textの傾向が複数件 | 改善担当 | 個別対応より仕組みの改善を優先する |
同意がない批判者には連絡しません。記録して、次回の改善テーマとして扱います。
自動フォローの最短実装
1. nps_score <= 6 を検知する
2. follow_up_consent = true のときだけ担当者へ通知する
3. status を "未対応" にする
4. 最初のメールは短く、次の連絡の入口だけ作る
5. owner が対応したら status と notified_at を更新する
自動返信を凝った文面にする必要はありません。最初の1通は、内容を確認したことと、詳しく聞かせてほしいという意思表示で十分です。
ご回答ありがとうございます。
いただいた内容を確認しました。
もし差し支えなければ、改善のために詳しくお話を伺えれば幸いです。
NPSフォーム設計の正本へ戻す
この記事では集計列と通知条件に絞りました。
設問構成、CSATとの使い分け、NPSスコアの考え方、自由記述分析まではFORMLOVA側の正本にまとめています。
