9.3 クリックとフォームの計測
この章で学ぶこと
- クリックやフォームの計測に必要な組み込み変数
- クリック トリガーの種類と設定方法
- フォーム送信トリガーの使い方と注意点
- CSS セレクタを使って、計測したい要素を正確に指定する方法
- CTA ボタンのクリックを計測する実例
組み込み変数の有効化
GTM には、クリックやフォームの情報を取り出すための 組み込み変数 が用意されています。ただし、初期状態では多くが無効になっているので、まず有効にします。
有効にする手順
- 「変数」を開く
- 「組み込み変数」の欄の「設定」を押す
- 「クリック」と「フォーム」の項目にチェックを入れる
クリックとフォームの組み込み変数
| 変数 | 内容 | 例 |
|---|---|---|
| Click Element | クリックされた要素そのもの | (HTML の要素) |
| Click Classes | クリックされた要素の class 属性 | btn btn-primary |
| Click ID | クリックされた要素の id 属性 | cta-button |
| Click Target | クリックされたリンクの target 属性 | _blank |
| Click URL | クリックされたリンクの href 属性 | https://www.example.co.jp/contact/ |
| Click Text | クリックされた要素のテキスト | 資料をダウンロード |
| Form Element / Form Classes / Form ID / Form Target / Form URL / Form Text | 送信されたフォームの情報 | Form ID = contact-form |
ポイント 「クリック」の変数は、実際にクリックされた要素 の情報を返します。ボタンの中のアイコンや
<span>をクリックした場合、Click ID や Click Classes は、ボタン本体ではなく、その内側の要素のものになることがあります。後述の CSS セレクタを使うと、この問題に対処できます。
クリック トリガー
GTM のクリック トリガーには、2 種類あります。
| トリガー | 対象 | 使いどころ |
|---|---|---|
| クリック - リンクのみ | <a> タグ(リンク)のクリック | ページ遷移を伴うリンク、ファイルのダウンロード、外部リンク |
| クリック - すべての要素 | ページのすべての要素のクリック | <button> のボタン、タブ、アコーディオンなど、リンクでない要素 |
「一部のクリック」で条件を付ける
クリック トリガーは、「すべてのクリック」ではなく、「一部のクリック」 を選んで、条件を付けるのが基本です。
トリガーの種類:クリック - すべての要素
このトリガーの発生場所:一部のクリック
条件:Click ID 等しい cta-button
| 条件の演算子 | 例 |
|---|---|
| 等しい | Click ID 等しい cta-button |
| 含む | Click URL 含む /contact/ |
| 先頭が一致 | Click URL 先頭が一致 tel: |
| 末尾が一致 | Click URL 末尾が一致 .pdf |
| 正規表現に一致 | Click URL 正規表現に一致 \.(pdf|zip|xlsx)$ |
| CSS セレクタに一致する | Click Element CSS セレクタに一致する .cta-button, .cta-button * |
「リンクのみ」の追加の設定
「クリック - リンクのみ」には、次の設定があります。
| 設定 | 内容 |
|---|---|
| タグの配信を待つ | リンクでページが移動する前に、タグの送信を少し待つ(データの取りこぼしを防ぐ) |
| 妥当性をチェック | ほかのスクリプトがリンクの動作を止めた場合は発火しない |
よく使うクリックの計測
| 計測したいもの | トリガーの条件の例 | イベント名の例 |
|---|---|---|
| 電話番号のタップ | Click URL 先頭が一致 tel: | phone_click |
| メールアドレスのクリック | Click URL 先頭が一致 mailto: | email_click |
| LINE の友だち追加ボタン | Click URL 含む line.me | line_click |
| 特定のボタン | Click ID 等しい cta-button | cta_click |
注意 ファイルのダウンロード(
file_download)や外部リンクのクリック(click)は、GA4 の 拡張計測機能 で自動的に計測されます(第 3 部)。GTM で同じものを計測すると、二重計測になるので注意しましょう。
フォーム送信トリガー
フォーム送信 のトリガーは、HTML の <form> が送信されたときに発火します。
トリガーの種類:フォーム送信
タグの配信を待つ:オン
妥当性をチェック:オン
このトリガーの発生場所:一部のフォーム
条件:Form ID 等しい contact-form
フォーム送信トリガーの注意点
フォーム送信トリガーは、うまく動かないことが多い トリガーです。
| 状況 | 起きること |
|---|---|
| JavaScript でフォームを送信している(Ajax など) | 送信のイベントが発生せず、トリガーが発火しない |
| 入力のエラーがあっても送信のイベントが起きる | 送信に失敗したのに計測される |
| フォームが iframe の中にある(外部のフォーム サービス) | GTM から送信を検知できない |
| 確認画面があるフォーム | 「確認画面へ」で発火し、本当の送信と区別できない |
より確実な計測の方法
| 方法 | 内容 | 確実さ |
|---|---|---|
| サンクス ページの表示で計測 | 送信完了後に表示されるページ(/thanks/ など)の表示をトリガーにする | 高い |
| データレイヤーで計測 | 送信が成功したときに、サイト側で dataLayer.push を実行してもらう(次の章) | 最も高い |
| 要素の表示で計測 | 送信完了のメッセージが表示されたことをトリガーにする(第 5 章) | 中程度 |
| フォーム送信トリガー | 上の注意点を確認したうえで使う | 状況による |
ポイント 問い合わせや資料請求など、キーイベントにするような重要なフォームは、サンクス ページ または データレイヤー で計測するのが安全です。フォーム送信トリガーは、プレビュー モードで、入力エラーのとき、送信成功のときの両方を必ず確認しましょう。
CSS セレクタの活用
CSS セレクタ を使うと、計測したい要素を、ID や class よりも柔軟に指定できます。
よく使う CSS セレクタ
| セレクタ | 意味 | 例 |
|---|---|---|
#id | id が一致する要素 | #cta-button |
.class | class を含む要素 | .btn-primary |
要素 要素 | ある要素の中にある要素 | header a(ヘッダーの中のリンク) |
[属性] | 属性を持つ要素 | [data-track] |
[属性="値"] | 属性の値が一致する要素 | [data-track="cta"] |
[属性^="値"] | 属性の値が指定の文字で始まる要素 | a[href^="tel:"] |
* | すべての要素 | .cta-button *(ボタンの中のすべての要素) |
, | いずれかに一致 | .cta-button, .cta-button * |
ボタンの内側のクリックに対処する
ボタンの中にアイコンや <span> がある場合、それらをクリックすると、Click Element はボタン本体ではなくなります。
<button class="cta-button">
<span class="icon">📄</span>
<span>資料をダウンロード</span>
</button>
この場合、次の条件にすると、ボタン本体をクリックしても、内側の要素をクリックしても発火します。
Click Element CSS セレクタに一致する .cta-button, .cta-button *
計測用の属性を付けてもらう
サイトのデザインの変更で class 名が変わると、計測が止まってしまうことがあります。開発者に依頼できる場合は、計測専用の属性(data-track など)を付けてもらうと、デザインの変更の影響を受けにくくなります。
<a href="/download/" class="btn" data-track="whitepaper-download">資料をダウンロード</a>
Click Element CSS セレクタに一致する [data-track], [data-track] *
実例: CTA ボタンの計測
最後に、トップページの「無料相談を申し込む」ボタンのクリックを計測する例を、通して見てみましょう。
1. 計測の設計
| 項目 | 内容 |
|---|---|
| 計測したいこと | どのページのどの CTA ボタンが、どれくらいクリックされているか |
| イベント名 | cta_click |
| パラメータ | cta_name(ボタンの種類)、link_text(ボタンの文言)、link_url(リンク先) |
| 対象の要素 | data-track="cta-consult" の属性が付いたリンク |
2. トリガーを作る
名前:Click - CTA 無料相談
トリガーの種類:クリック - リンクのみ
タグの配信を待つ:オン(2000 ミリ秒)
このトリガーの発生場所:一部のリンククリック
条件:Click Element CSS セレクタに一致する [data-track="cta-consult"], [data-track="cta-consult"] *
3. タグを作る
名前:GA4 - Event - cta_click
タグの種類:Google アナリティクス:GA4 イベント
測定 ID:{{GA4 測定 ID}}
イベント名:cta_click
イベント パラメータ:
cta_name = consult
link_text = {{Click Text}}
link_url = {{Click URL}}
トリガー:Click - CTA 無料相談
4. 確認と公開
- プレビュー モードで、ボタンをクリックし、タグが発火することを確認する
- ボタンの中の文字やアイコンをクリックした場合も確認する
- GA4 の DebugView で、
cta_clickイベントと、3 つのパラメータの値を確認する - バージョン名と説明を書いて公開する
- GA4 で
cta_nameをカスタム ディメンションに登録する(第 3 部)
よくある質問
Q. クリックのトリガーが、プレビュー モードで発火しません。
A. 次の点を確認しましょう。
| 確認すること | 内容 |
|---|---|
| 組み込み変数 | 条件に使っている組み込み変数(Click ID、Click Classes など)が有効になっているか |
| 変数の値 | Tag Assistant でクリックのイベントを選び、「Variables」のタブで、実際の Click ID などの値を確認する |
| リンクのみ / すべての要素 | <a> タグでない要素(<button> など)を、「リンクのみ」のトリガーで計測しようとしていないか |
| 内側の要素 | ボタンの中のアイコンや文字をクリックして、Click Element が内側の要素になっていないか |
Q. 同じクリックで、タグが 2 回発火します。
A. 「リンクのみ」と「すべての要素」の 2 つのトリガーが、同じクリックに反応している、同じ条件のトリガーが 2 つのタグに設定されている、などが考えられます。Tag Assistant で、発火したタグと、その原因のトリガーを確認しましょう。
Q. Click Text に、余計な空白や改行が入ります。
A. 要素の中の文字に、改行やスペースが含まれていると、そのまま値に入ります。GA4 での集計に影響する場合は、カスタム JavaScript の変数で空白を取り除いた値を作るか、計測専用の data- 属性に、ボタンの名前を入れてもらう方法がおすすめです。
実践ワーク
自社のサイトで、計測したいクリックを 3 つ選び、設計表を作ってみましょう。
| 計測したいクリック | 要素の特定方法(CSS セレクタ) | トリガーの種類 | イベント名 | パラメータ |
|---|---|---|---|---|
| 例:ヘッダーの「お問い合わせ」ボタン | header a[href*="/contact/"], header a[href*="/contact/"] * | クリック - リンクのみ | cta_click | cta_name = header_contact |
設計表ができたら、ブラウザの開発者ツールで、選んだ CSS セレクタが目的の要素だけに一致するかを確認してから、GTM で設定しましょう。開発者ツールのコンソールで document.querySelectorAll('セレクタ') を実行すると、一致する要素の数を確かめられます。
まとめ
- クリックやフォームを計測する前に、組み込み変数の「クリック」「フォーム」を有効にする
- クリック トリガーには「リンクのみ」と「すべての要素」があり、「一部のクリック」で条件を付けて使う
- フォーム送信トリガーは動かない・誤動作することが多く、重要なフォームはサンクス ページかデータレイヤーで計測する
- CSS セレクタを使うと、ボタンの内側のクリックや、計測専用の属性を使った指定ができる
- 計測の設計 → トリガー → タグ → 確認 → 公開 → カスタム ディメンションの登録、の順で進める
次の章では、サイトと GTM の間で情報を受け渡す「データレイヤー」の仕組みを学びます。