オルタナティブ・ブログ > 秋山大志のそれとりあえず作ってみようか。 >

あれこれ考えるよりも作ってしまった方が早いんじゃね?と思う、ギークなサラリーマンのアジャイルな日々。

GTMでフォーム送信を計測する方法|フォーム送信トリガーが反応しない原因と対処法|未経験から100日後にGTMのプロになる話【Day 10】

»

広告経由の問い合わせが増えない、でも本当にフォームが送信されていないのか、送信はされているのに何かの理由で計測が漏れているだけなのか区別がつかない――フォーム計測を頼まれると、まずここで詰まります。GA4は標準ではフォーム送信を自動計測してくれないので、GTM側で明示的に拾う必要があります。

まず「フォーム送信トリガー」を疑う前に確認すること

GTMには「フォームの送信」というトリガータイプがあり、対象の<form>要素がsubmitされたタイミングで発火します。設定自体は簡単です。

  1. 「トリガー」→「新規」→種類は「フォームの送信」
  2. 発火条件は「すべてのフォーム」、もしくは対象を絞るなら「一部のフォーム」+Form ID等の条件
  3. 詳細設定の「フォームの送信をチェック」「フォーム要素の検証をチェック」はいったんデフォルトのままで保存
  4. GTMのフォームの送信トリガー設定画面

ここで実務上ハマりやすいのが、この「フォーム要素の検証をチェック」の意味です。オンにすると、ブラウザのHTML5バリデーション(必須項目の入力チェックなど)を通過した送信だけを「成功」として扱います。オフだと、ユーザーが送信ボタンを押した時点で、バリデーションの成否に関係なく発火します。「フォームの送信数」を見たいのか「送信ボタンが押された回数」を見たいのかで、この設定の意味が変わってくるので、要件を確認してから決めてください。

それでも発火しない場合の一番よくある原因

そして、これが今日一番伝えたいポイントです。GTMのフォーム送信トリガーは、ブラウザのネイティブなsubmitイベントを監視しています。ところが最近のフォームは、送信ボタンのクリックをJavaScriptで受け取り、fetch()やAjaxで裏側に送信して、ページ遷移しないままサンクスメッセージだけを表示するタイプが増えています。この場合、ブラウザの<form>としてのsubmitイベント自体が発生しないため、GTMのフォーム送信トリガーはどれだけ待っても発火しません。「フォームトリガーを設定したのに反応しない」と相談を受けたときは、まずこのパターンを疑うようにしています。

この場合の対処法は2つです。

  • サンクスページに遷移するなら:ページビュートリガーで、Page URLが「一部のページビュー」条件に該当する(例:thank-you.htmlを含む)ときに発火させる方法が手軽です。
  • ページ遷移しないSPA的なフォームなら:開発者に依頼して、送信成功時にdataLayer.push({'event':'custom_form_submission'})を仕込んでもらい、GTM側は「カスタムイベント」トリガーでこれを受け取ります。

後者を頼むときは、「送信ボタンが押されたら」ではなく「サーバーからの応答が成功だったら」dataLayer.pushするよう伝えてください。ボタンを押した瞬間にpushしてしまうと、通信エラーで実際には送信できていないケースまで「成功」として計測してしまいます。

GA4に送るタグは共通

どの方法でトリガーを作っても、GA4側の受け皿は同じです。「Google アナリティクス: GA4 イベント」タグを作成し、イベント名(例:form_submission)とパラメータ(Form IDやページURLなど)を設定して、対応するトリガーに紐付けます。

今日のまとめ

フォーム計測で一番大事なのは「そのフォームが本当にネイティブsubmitイベントを発生させているか」の見極めです。ここを外すと、トリガー設定は合っているのに永遠に発火しない、という無駄な調査時間が発生します。次回は、フォーム計測でも触れたカスタムイベントトリガーとdataLayerの活用を、もう少し深く掘り下げます。

INDEX

Comment(0)