GTMのクリックイベントが発火しない原因と解決策【2026年最新・全6パターン】
2021年4月13日
GTM(Google Tag Manager)でクリックイベントを設定したのに「タグが発火しない」「GA4やGoogle広告のコンバージョンが計測されない」と悩んでいませんか?
この問題は原因が複数あり、1つずつ確認しないと解決できません。本記事では2026年時点の最新情報をもとに、発火しない原因を6パターンに整理し、それぞれの解決策とコードを紹介します。
この記事でわかること:
- GTMクリックイベントが発火しない6つの原因
- 各原因の確認方法と具体的な解決策
- Consent Mode v2 対応(2024年〜必須)の確認ポイント
- プレビューモードを使った原因の特定手順
- jQueryに依存しないモダンなカスタム変数コード
対象読者:GTMの基本的なタグ・トリガー・変数の設定ができる方
結論:まず「子要素クリック問題」と「コンテナ未公開」を確認し、それでも解決しない場合はConsent Mode v2の設定を見直してください。
目次
GTMクリックイベントが発火しない原因チェックリスト
以下の表で心当たりのある原因から確認してください。
| チェック項目 | 頻度 | 確認方法 |
|---|---|---|
| 子要素(画像・spanなど)がクリックされている | ★★★ 最多 | プレビューでClick Elementを確認 |
| トリガーが「リンクのみ」になっている | ★★★ | トリガー設定を確認 |
| コンテナが未公開 | ★★ | GTM管理画面で公開状況を確認 |
| トリガーの発火条件が間違っている | ★★ | プレビューでトリガーが「Not Fired」か確認 |
| Consent Mode v2 で同意が取れていない | ★★ 2024年〜増加 | 同意バナーの設定を確認 |
| SPA(React/Next.js)での動的DOM問題 | ★ | ページ遷移後のプレビューイベントを確認 |
原因1:子要素がクリックされている(最多パターン)
GTMの「クリック – リンクのみ」トリガーは、クリックされた要素そのものが<a>タグの場合にしか発火しません。
次のようにアンカータグの内側に画像や<span>がある場合、ユーザーが実際にクリックするのは子要素です。GTMは<a>のクリックとして認識せず、タグが発火しません。
<!-- このような構造でクリックが反応しない -->
<a href="...">
<img src="banner.png" alt="バナー">
</a>
解決策:カスタムJavaScript変数で親要素を遡る(jQuery不要)
クリックされた要素から祖先をたどって<a>タグを探すカスタム変数を作成します。2026年現在はjQueryへの依存をなくしたバニラJSで記述するのが推奨です。
ステップ1:変数を作成する
GTM管理画面 → 変数 → 新規 → 変数のタイプ:カスタムJavaScript を選択し、以下のコードを入力します。
function() {
var el = {{Click Element}};
while (el && el.tagName !== 'A') {
el = el.parentElement;
}
return !!el; // <a> が見つかれば true
}
変数名は isAnchorClick など分かりやすい名前にしてください。
ステップ2:トリガーを設定する
トリガーのタイプは必ず「クリック – すべての要素」を選択します(「リンクのみ」では <a> 以外がクリックされた時点で除外されるため機能しません)。
「一部のクリック」を選択し、条件を次のように設定します:
- 変数:
isAnchorClick - 演算子:true と等しい
ステップ3:タグに設定して公開
作成したトリガーをGA4イベントタグやGoogle広告コンバージョンタグに設定し、コンテナを公開します。
原因2:トリガーが「リンクのみ」になっている
「クリック – リンクのみ」トリガーには次の制約があります。
- クリックされた要素が
<a>タグそのものでないと発火しない - 「待機タグ」チェックを有効にすると、ページ遷移前にタグを発火させようとするため遅延が発生したり動作が不安定になる場合がある
解決策:ボタンや画像リンクが対象の場合は「クリック – すべての要素」に変更し、Click URL や Click Classes などの条件で絞り込む方が安定します。
原因3:GTMコンテナが未公開
設定変更後にコンテナを「公開」していないと、本番環境には反映されません。プレビューモードでは動いているのに本番で発火しない場合、まずこれを疑ってください。
確認手順:
- GTM管理画面右上の「公開」ボタンの状態を確認する
- 「未公開の変更があります」と表示されていたら公開する
- バージョン一覧で最新バージョンが「公開済み」になっていることを確認する
原因4:トリガーの発火条件が間違っている
「一部のクリック」で条件を設定している場合、変数の値や演算子が意図と異なっていることがあります。よくある間違いのパターンは次のとおりです。
Click URLに完全なURLを入れているが「含む」ではなく「等しい」にしている(末尾スラッシュや?パラメータで不一致になる)Click Classesを「等しい」で比較しているが、要素に複数クラスがある(「含む」に変える)- 変数が未定義(
undefined)のまま比較している
解決策:プレビューモードの「Variables」タブで、クリック時に各変数に何の値が入っているかを確認してから条件を設定します。
原因5:Consent Mode v2 で同意が取れていない(2024年〜重要)
2024年3月以降、EU向けにGoogle Consent Mode v2 への対応が必須となりました。日本国内サイトでも同意管理プラットフォーム(CMP)を導入しているケースでは、同意状況によってタグの発火が制御されます。
Consent Mode では次のような制御が行われます:
- ユーザーが同意していない場合、
analytics_storageやad_storageがdeniedになる denied状態では、GA4タグやGoogle広告タグは発火してもデータを送信しない(または発火そのものを抑制する設定もある)
確認方法:
- GTMのプレビューモードで
consentイベントを確認する - Chromeデベロッパーツール → コンソールで
google_tag_data.ics.entriesを確認する ad_storage: deniedになっていればCMPの設定を見直す
解決策:CMP(OneTrust・CookiePro・Googleの無料CMPなど)とGTMの連携設定を確認し、同意取得後にタグが発火するよう設定します。
原因6:SPA(React / Next.js など)での動的DOM問題
React・Next.js・Vue.jsなどのSPAでは、ページ遷移時に実際のページロードが発生せず、GTMのデフォルトトリガー(Page View)が発火しないことがあります。クリックイベントも、動的に生成されたDOMには対応できない場合があります。
解決策:
- SPAのルーター変更時に
dataLayer.push({ event: 'virtualPageView' })を実装し、GTM側で仮想ページビューを計測する - クリック対象のDOMが動的生成される場合は、イベントリスナーをdocumentレベルに設定したカスタムHTMLタグで対応する
プレビューモードで原因を特定する手順
どの原因かわからない場合は、GTMのプレビューモードで段階的に確認します。
- GTM管理画面 → 右上「プレビュー」をクリック → 対象サイトのURLを入力して接続する
- 対象のリンク・ボタンをクリックする
- プレビュー画面の「Summary」でイベント一覧を確認する
- 「Click」イベントを選択 → 「Tags」タブで「Tags Fired」と「Tags Not Fired」を確認する
- タグが「Not Fired」の場合 → 「Triggering」タブでトリガーの条件評価結果を確認する
- 「Variables」タブで
Click Element・Click URL・Click Classesなどの実際の値を確認する
「Tags Fired」に表示されているのにデータが計測されていない場合は、原因5(Consent Mode)を確認してください。
よくある質問(FAQ)
Q. プレビューでは発火するのに本番で発火しないのはなぜ?
最も多い原因はコンテナが未公開であること(原因3)です。プレビューはコンテナ未公開でも動作しますが、本番環境には未反映です。GTM管理画面で「公開」を実行してください。次いでConsent Mode(原因5)も確認してください。プレビューでは同意状態がバイパスされる場合があります。
Q.「クリック – リンクのみ」と「クリック – すべての要素」の違いは?
「リンクのみ」はクリックした要素が <a> タグであることを前提にしており、「待機タグ」機能(ページ遷移前にタグ発火を完了させる)が使えます。「すべての要素」はあらゆる要素のクリックを検知でき、条件指定で絞り込みます。画像・ボタン・SPAでのクリックは「すべての要素」が安定します。
Q. 複数のリンクにまとめてトリガーを設定したい
トリガーの条件を「Click URL」「Click Classes」「Click Text」などで柔軟に絞り込めます。例えば特定ドメインへの外部リンク全体に設定したい場合は、Click URL が「example.com を含む」で設定します。
Q. GA4でクリックイベントが重複して計測されている
GA4の拡張計測機能(Enhanced Measurement)とGTMのカスタムイベントタグが両方有効になっている可能性があります。GA4管理画面でデータストリームの拡張計測機能を確認し、重複しているイベント(外部リンククリックなど)はどちらかをオフにしてください。
Q. Consent Mode v2 は日本サイトでも対応が必要?
2024年時点でGoogle側からはEU・EEA向けのみ必須とされていますが、日本でもプライバシーポリシー対応や今後の規制変化を見据えて導入するサイトが増えています。GA4の計測精度を上げる観点でも、モデリングを活用するためConsent Modeの設定は推奨されます。
GTMの計測データが正しく取れているか定期的に確認するために、GASでGA4のデータをスプレッドシートに自動取得する方法も参考にしてください。
広告運用Consent Mode,Google Tag Manager,GTM,クリックイベント,広告計測
Posted by Next-k
関連記事

【Google広告スクリプト】MCCアカウントから全アカウントの運用レポートを取得する方法
Google広告のMCCアカウントから全配下アカウントの運用レポートをスプレッド ...

【GAS】TikTok広告の運用データをスプレッドシートに自動取得する方法|Marketing API対応
GAS(Google Apps Script)でTikTok広告の運用データをス ...

【Google広告】MCCのすべてのアカウントから運用データを取得する
Google広告のデータをMCC内のすべてのアカウントから取得する方法です。定期 ...

【GAS】Yahooディスプレイ広告の運用データをスプレッドシートに自動取得する方法(v19対応)
GASでYahoo!ディスプレイ広告(YDA)の運用データをスプレッドシートに自 ...

[Google ADS]Obtain operational reports from all MCC accounts
This will be the way to get the report f ...

ディスカッション
コメント一覧
まだ、コメントがありません