AIで判定した問い合わせ品質スコアをGA4に連携して、CVの質を可視化する
この記事のAI要約
AIで判定した問い合わせの品質スコアをGoogle Analytics 4(GA4)に連携する仕組みを構築しました。これにより、単に問い合わせ件数をカウントするだけでなく、営業メールやスパムといった低品質な問い合わせと、具体的な見積もり依頼など高品質な問い合わせを区別し、CVの「質」を可視化できます。GA4で質の違いも把握できるため、マーケティング施策の効果をより正確に評価でき、効率的な営業対応が可能です。営業担当者やマーケター、ウェブ解析に携わる方に特に役立つ内容となっています。
gpt-4.1-miniによる自動要約
前回の記事では、問い合わせフォームに届いた内容をAIで判定し、単なる営業メール判定ではなく「問い合わせ品質スコア」として扱う仕組みを紹介しました。
問い合わせ内容をAIに判定させ、
0点 営業目的・通知不要
30点 しきい値。下回ったら管理者通知なし
50点 通常の問い合わせ
80点 優先対応したい問い合わせ
100点 非常に温度感の高い問い合わせ
のようにスコアリングする構成です。
この仕組みによって、営業メールは管理者に通知せず、有効な問い合わせは通常通り通知する、という運用ができるようになりました。
参考記事
ただ、ここまで来ると次にやりたくなることがあります。
それは、この問い合わせ品質スコアをGA4にも連携すること です。
そこで今回は、AIで判定した問い合わせ品質スコアをGA4のCVイベントに連携し、CVの「件数」だけでなく「質」も見られるようにしました。
INDEX
前回までの流れ
AI判定で問い合わせ品質をスコアリングした
前回の記事では、問い合わせフォームのAI判定を改良しました。
以前は、問い合わせが営業メールかどうかを判定し、営業目的と判断したものは管理者通知を送らない、という考え方でした。
しかし、それだけでは情報量が少ないと感じるようになりました。
問い合わせには、営業メールだけでなく、以下のようなものがあります。
- 具体的な見積り依頼
- 既存顧客からの保守相談
- ざっくりした問い合わせ
- 採用や協業に関する連絡
- 営業メール
- スパムに近い内容
これらを単に「営業かどうか」だけで分けるのではなく、問い合わせとしてどれくらい有効なのか、どれくらい優先して対応すべきなのかを数値化するようにしました。
実際のフォームでは、AI判定結果をGravity FormsのAdmin onlyフィールドに保存しています。
問い合わせ品質スコア
問い合わせ種別
通知判定
トーン
緊急度
判定理由
Admin onlyフィールドは、ユーザー画面には出力されず、管理画面や通知メール、Webhook連携などで使える内部用フィールドです。
次に見たくなったのはCVの質
問い合わせにスコアが付くようになると、次に見たくなるのは自然とCVの質です。
GA4では、フォーム送信をキーイベント、いわゆるCVとして扱うことができます。
ただし、通常のフォームCV計測では、フォームが送信されたことまでは分かっても、
- その問い合わせが有効だったのか?
- 営業メールだったのか?
- ホットリードだったのか?
までは分かりません。
そこで、フォーム送信時にAIで評価した問い合わせ品質スコアもGA4へ送ることにしました。
フォームCVを「件数」だけで見る限界
ECサイトには購入金額という指標がある
ECサイトの場合、CVの価値は比較的わかりやすいです。
たとえば商品購入がCVであれば、CV件数だけでなく、購入金額を見ることができます。
CV件数:10件
売上:300,000円
平均購入単価:30,000円
このように、ECサイトでは1件のCVがどれくらいの金額につながったのかを数値で把握できます。
同じ1CVでも、1,000円の商品購入と100,000円の商品購入では価値が違います。
そのため、ECではCV件数だけでなく、売上や平均購入単価、ROASなどを見ながら施策を評価できます。
つまり、ECサイトにはCVの「質」や「価値」を判断するための明確な指標があります。
企業サイトの問い合わせフォームにはCVの価値指標がない
一方、通常の企業サイトではどうでしょうか。
コーポレートサイトやサービスサイトでは、問い合わせフォームの送信をCVとして計測することが多いです。
弊社では、GA4に generate_lead というイベントを送信し、それをキーイベントとして扱っています。
しかし、この場合にGA4で見えるのは基本的にCV件数です。
問い合わせフォーム送信:10件
もちろん件数は重要です。
しかし、それだけでは問い合わせの中身までは分かりません。
その10件の中には、具体的な見積り依頼もあれば、ざっくりした相談もあります。
既存顧客からの重要な連絡もあれば、営業メールやスパムに近い内容もあります。
ところが、GA4上ではそれらが同じ1CVとして扱われます。
ECであれば購入金額がCVの価値を示してくれます。
しかし、企業サイトの問い合わせフォームには、購入金額に相当する指標がありません。
そこで、その不足を補うために、AI判定による問い合わせ品質スコアを使うことにしました。
同じ1CVでも価値は大きく違う
フォームCVは、数だけ見ていると誤解が生まれます。
たとえば、以下の2つのケースがあったとします。
A:問い合わせ10件、平均スコア20
B:問い合わせ10件、平均スコア80
どちらもGA4上のCV数は10件です。
しかし、事業上の価値はまったく違います。
Aは営業メールや低品質な問い合わせが多い状態かもしれません。
Bは具体的な相談や見積り依頼が多く、対応優先度の高い問い合わせが集まっている状態かもしれません。
これまでは、どちらも同じ「10CV」として扱っていました。
しかし、問い合わせ品質スコアをGA4に連携すれば、
CV件数
+
問い合わせ品質スコア
の両方を見られるようになります。
CVの量だけでなく、質も合わせて見る。
これが今回やりたかったことです。
問い合わせ品質スコアをGA4に送る設計
AIで判定したスコアをCVイベントに紐づける
今回の設計では、フォーム送信時にAIで問い合わせ品質を判定し、そのスコアをGA4のCVイベントに紐づけます。
イメージとしては以下です。
フォーム送信
↓
AI判定
↓
GFCスコアを保存
↓
完了ページ表示
↓
GTM経由でGA4にgenerate_leadを送信
↓
generate_leadにgfc_scoreを付与
これにより、GA4ではフォーム送信をCVとして計測しながら、そのCVにGFCスコアを持たせることができます。
ちなみに、この「GFC」は弊社内で使っているコードネームで、GFW(いわゆる Great Firewall)をもじって、Great Firewall of Chappy と呼んでいるものです。
フォーム営業や低品質な問い合わせのノイズを防ぐための、弊社内のちょっとしたコードネームです。
名前は少しふざけていますが、やっていることは真面目です。
GA4に送る値はまずGFCスコアだけにした
今回、GA4に送る値は最小限にしました。
まず送るのは、GFCスコアです。
gfc_score
本当は、問い合わせ種別や通知判定、緊急度なども送ることはできます。
ただ、今回はまずシンプルに、数値として扱いやすいスコアだけを送ることにしました。
理由は、GA4上で見たい主な値が、問い合わせの質を数値で見ることだったからです。
なお、後述しますが、平均スコアをGA4上で算出するために、後から lead_count という数値も一緒に送るようにしました。
個人情報や判定理由は送らない
GA4に送る値を絞った理由は、もうひとつあります。
それは、個人情報や問い合わせ本文に近い情報をGA4へ送らないためです。
問い合わせフォームには、以下のような情報が含まれます。
- 会社名
- 氏名
- メールアドレス
- 電話番号
- 問い合わせ本文
- AIの判定理由
これらはGA4に送るべきではありません。
また、AIの判定理由も、問い合わせ本文の内容を要約したような情報を含む可能性があります。
そのため、GA4には送らず、Gravity FormsやCRM側で管理する方針にしました。
GA4には、個人を特定できない数値としてのスコアだけを送る。
この方針にしています。
完了ページとGTMをつなぐ方法
GETパラメータにスコアを出す方法は避けた
最初に考えたのは、完了ページURLにスコアを付ける方法です。
たとえば、
/contact/thanks/?gfc_score=80
のような形です。
この方法は実装が簡単です。
完了ページ上のJavaScriptでURLパラメータを読めば、GTMに渡すことができます。
ただ、この方法は採用しませんでした。
理由は、スコアをURLに出したくなかったからです。
GFCスコア自体は個人情報ではありませんが、ユーザーに見せる必要もありません。
また、URLに残るとブラウザ履歴やアクセスログにも残ります。
そのため、URLに直接スコアを出すのではなく、一時キーだけを出す方式にしました。
result_key方式で完了ページへ橋渡しする
採用したのは、result_key方式です。
フォーム送信後に、サーバー側で一時キーを発行します。
/contact/thanks/?result_key=xxxxxxxx
URLに出るのは、この一時キーだけです。
スコアそのものはURLには出しません。
サーバー側では、この result_key に紐づけて、GFCスコアを一時的に保存しておきます。
完了ページでは、result_key を見て、対応するスコアを取得します。
フォーム送信
↓
AI判定
↓
スコアを保存
↓
result_keyを発行
↓
完了ページへリダイレクト
↓
完了ページでresult_keyからスコアを取得
↓
dataLayerへpush
この方法なら、ユーザーから見えるURLにはスコアが出ません。
完了ページ直打ち防止にも使える
この result_key 方式には、もうひとつメリットがありました。
完了ページの直打ち防止にも使えます。
フォームの完了ページは、通常はフォーム送信後にだけ表示したいページです。
しかし、何もしないと、
/contact/thanks/
のようにURLを直接入力しても表示できてしまいます。
今回の実装では、result_key がない場合や、無効な result_key の場合は、入力画面へリダイレクトするようにしました。
/contact/thanks/
→ /contact/ にリダイレクト
/contact/thanks/?result_key=不正な値
→ /contact/ にリダイレクト
/contact/thanks/?result_key=有効な値
→ 完了ページを表示
これにより、完了ページの直打ち防止と、GA4連携用のスコア受け渡しを同じ仕組みで実現できました。
dataLayerとGTMの設定
完了ページでdataLayer.pushする
完了ページでは、取得したGFCスコアを dataLayer に送ります。
実際には、以下のようなイメージです。
GTMのカスタムイベントトリガーで拾う
GTM側では、完了ページでpushされたイベント名をカスタムイベントトリガーで拾います。
たとえば、お問い合わせフォームの場合は、
contact_form_complete
をトリガーにします。
このトリガーが発火したタイミングで、GA4イベントタグを実行します。
GA4イベントタグにgfc_scoreを渡す
GTMでは、まず gfc_score をデータレイヤー変数として登録します。
そして、GA4イベントタグで generate_lead を送る際に、イベントパラメータとして追加します。
イベント名:generate_lead
イベントパラメータ:gfc_score
値:{{GFCスコア}}
これで、フォーム送信時にGA4へ generate_lead イベントが送信され、そのイベントに gfc_score が付与されます。
GA4側の設定
generate_leadをキーイベントにする
GA4側では、generate_lead をキーイベントとして登録します。
これにより、フォーム送信をCVとして扱えるようになります。
gfc_scoreをカスタム指標にする
次に、gfc_score をカスタム指標として登録します。
gfc_score は数値なので、カスタムディメンションではなくカスタム指標として登録しました。
これにより、探索レポートなどでGFCスコアを数値として扱えるようになります。
lead_countも一緒に送る
最初は、gfc_score だけをGA4へ送っていました。
ただ、平均GFCスコアをGA4側で計算するには、分母となるリード件数も明示的に持っておいた方が扱いやすいことに気づきました。
GA4には「キーイベント数」という指標があります。
しかし、複数のキーイベントを設定している場合、単純に「GFCスコア ÷ キーイベント数」とすると、generate_lead 以外のキーイベントまで分母に含まれてしまう可能性があります。
そこで、generate_lead イベント送信時に、lead_count というイベントパラメータも一緒に送るようにしました。
gfc_score: 80
lead_count: 1
generate_lead が1件発生するたびに、lead_count も1として送信します。
これにより、GFCスコアの合計をリード件数で割ることができます。
平均GFCスコアを計算指標として作る
GA4側では、以下のように設定しました。
さらに、計算指標として以下を作成しました。
平均GFCスコア
= GFCスコア / リード件数
これにより、GA4上でリード1件あたりの平均GFCスコアを見ることができます。
つまり、
CV件数
GFCスコア合計
リード件数
平均GFCスコア
を合わせて確認できるようになります。
この「平均GFCスコア」は、ECサイトでいう平均注文額に近い位置づけです。
もちろん、購入金額ほど絶対的な指標ではありません。
AI判定によるスコアなので、運用しながらチューニングしていく必要があります。
それでも、企業サイトの問い合わせフォームにおいて、CVの質を判断するための代替指標としてはかなり有効だと感じています。
CVの質を加味したマーケティングへ
CV数だけでなく平均スコアを見る
GFCスコアをGA4に送ることで、CV件数だけでなく、平均スコアを見ることができます。
たとえば、ある月のフォームCVが20件だったとしても、その平均スコアが20なのか、80なのかで意味は大きく変わります。
CV数:20件
平均スコア:20
であれば、営業メールや低品質な問い合わせが多い可能性があります。
一方で、
CV数:20件
平均スコア:80
であれば、具体的な相談や見積り依頼が多い可能性があります。
同じCV数でも、平均スコアを見ることで、その中身の違いを把握しやすくなります。
流入経路ごとの問い合わせ品質を見る
GFCスコアは、流入経路ごとの評価にも使えます。
たとえば、
- 自然検索からのCVは少ないが、平均スコアが高い
- 広告からのCVは多いが、平均スコアが低い
- 特定の記事経由のCVは件数もスコアも高い
といった傾向が見えてくるかもしれません。
CV数だけを見ていると、件数の多い施策が良く見えます。
しかし、その中身が低品質な問い合わせに偏っている場合、本当に評価すべき施策とは言い切れません。
しかし、そこにスコアを組み合わせることで、どの施策が質の高い問い合わせにつながっているのかを見やすくなります。
CVデータに奥行きを加える
CVデータにGFCスコアを組み合わせると、単純なCV件数だけでは見えなかったことが見えてきます。
これまでは同じ「1CV」として扱っていた問い合わせも、スコアを加えることで、量だけではなく質を含めて評価できます。
つまり、CV数という平面的な指標に、問い合わせ品質という奥行きを加えるイメージです。
これにより、広告、SEO、記事コンテンツ、SNSなどの施策を、単に「どれだけCVを生んだか」ではなく、「どれだけ質の高いCVにつながったか」という視点で見直せるようになります。
CVの件数を見るマーケティングから、CVの質まで見るマーケティングへ。
今回のGA4連携は、そのための小さな一歩です。
まとめ
今回、GFCスコアをGA4へ連携することで、フォームCVを件数だけでなく質も含めて見られるようにしました。
これまでの流れを整理すると、以下のようになります。
Gravity Formsでフォームを再設計
↓
AIで問い合わせ品質をスコアリング
↓
管理者通知やCRM連携に活用
↓
スコアをGA4へ連携
↓
平均GFCスコアでCVの質を見る
フォームは、ただ送信できればよいものではありません。
その問い合わせが営業メールなのか、通常の問い合わせなのか、ホットリードなのかによって、事業上の価値は大きく変わります。
フォームの改善は、問い合わせ対応の効率化だけでなく、営業やマーケティングの改善にもつながります。
同様の課題をお持ちの企業様や、この機会にWebフォームの設計・計測を見直したいとお考えの方は、ぜひお気軽にお問い合わせください。