GA4の二重計測を見つける手順|タグ直書きとGTM併用を1本に整理する
GA4の二重計測を見つける手順|タグ直書きとGTM併用を1本に整理する
GA4のセッション数が急に増えた。直帰率が不自然に下がった。広告のコンバージョン数が実際の問い合わせ件数と合わない——。こうした「数字が多すぎる」症状で最初に疑うべきは、集客の成果ではなく計測タグが二重に設置されていることです。
先に結論を書きます。計測タグは、ページに直接書く方式(直書き)とGoogleタグマネージャー(GTM)経由のどちらか一方に必ず一本化してください。 そして、一本化できているかの判定はコードを読んで確認するのではなく、ブラウザから実際に飛んでいる送信の本数を数えて行います。この2点を守るだけで、二重計測はほぼ発生しません。
弊社graciautoは名古屋でホームページの制作・運用を行っており、25店舗規模のサロンチェーン、学習塾、ECサイトなどで計測基盤を構築・保守しています。この記事では、それらの現場で実際に使っている判定手順と一本化の手順を実測値をもとに整理します。
二重計測が起きると、何が壊れるのか
二重計測とは、1回のページ表示に対してGA4への送信が2回発生している状態です。単に「数字が2倍になる」だけの問題ではありません。壊れ方には順序があります。
| 指標 | 二重計測時の見え方 | 判断への影響 |
|---|---|---|
| ページビュー・セッション | 実態より多い(最大2倍) | アクセスが伸びたと誤解し、効いていない施策を続ける |
| 直帰率 | 実態より低い | 「読まれている」と誤判定し、離脱ページの改善が後回しになる |
| コンバージョン数 | 実態より多い | 獲得単価が実態の半分に見え、広告予算を増やす判断につながる |
最も損害が大きいのは最後の行です。コンバージョンが二重に計上されると獲得単価は実際の半額に見え、その数字で予算を増やせば採算は想定の半分のまま支出だけが増えます。数字が壊れているときの判断ミスは、数字が無いときより高くつくことがあります。
なお、二重計測は「同じ測定IDへ2回送っている」状態を指します。測定IDが違う2本が飛んでいる場合は、二重計測ではなく複数プロパティへの同時送信で、意図的にそう組んでいるケースもあります。ここを混同すると、消してはいけないタグを消すことになります。判定手順は後述します。
判定は「実際に飛んでいる送信」を数える
計測が正しいかを確かめるとき、多くの方はページのソースを表示して計測タグの有無を見ます。この方法では二重計測は見つかりません。タグは「入っている」ので、確認した人は問題なしと判断してしまうからです。
正しい確認は、ブラウザが実際に送っている通信を数えることです。次の3段階で行います。
手順1:送信の本数と測定IDを数える
公開中のページを実ブラウザで開き、開発者ツールのコンソールで次を実行します。
performance.getEntriesByType('resource')
.map(e => e.name)
.filter(n => n.includes('/g/collect'))
GA4への送信URLが配列で返ります。この結果に含まれる tid= の値と、その出現回数が答えです。
- 同じ
tidが2回以上 → 二重計測 - 違う
tidが複数 → 複数プロパティへの同時送信(意図の確認が必要。二重計測とは別物) - 1本だけ → 正常
開発者ツールの「ネットワーク」タブではなくPerformance APIを使うのには理由があります。GA4の送信はページ離脱時にも確実に届くようsendBeaconという方式を使うことがあり、この送信は監視ツールの種類によっては一覧に現れません。通信の記録では「送信されていない」ように見えたページで、Performance APIでは送信が確認できたケースが実際にあります。検証は取りこぼしのない側を正としてください。
Meta(Facebook)ピクセルを併用しているサイトなら、同じ考え方で次を実行します。
fbq.getState().pixels
設置されているピクセルIDが配列で返り、本数がそのまま答えになります。 ECサイトで購入数が過大に見えるという相談を受けた際は、この方法でピクセルが1本と確認し、主要な操作ごとに送信が1回ずつしか飛ばないことを実測して二重発火の疑いを否定できました。「多いかもしれない」という不安は、数えれば数分で終わります。
手順2:送信元がどこかを特定する
二重計測が確定したら、どちらの経路が余分なのかを特定します。コンソールで次を確認します。
window.google_tag_manager
ここに現れるIDが、GTMが読み込んでいるものです。GTM- で始まるIDのほかに、G- で始まるGA4の測定IDが並んでいれば、その測定IDはGTM経由で送信されています。にもかかわらず同じ測定IDの直書きタグがページ内にもあれば、それが二重の正体です。
手順3:公開サーバーが返している実物のHTMLを見る
直書きタグの有無は、手元のソースコードではなく公開サーバーが返しているHTMLで確認します。ビルドツールや静的サイトジェネレーターを使っている場合、書いたコードと出力されるコードは同じではありません。テンプレートを共通化しているつもりでも、特定のページにだけ古い直書きが残っていることがあります。
curl -s https://example.com/ | grep -c "gtag/js"
このように件数を数える形で確認すると、複数ページを機械的にチェックできます。25店舗のサロンチェーンに計測タグを一斉導入した案件では、全店・全ページで「計測タグが2箇所(読み込みと設定の1組)」であることを数値で検証し、25店すべてが基準どおりであることを確認してから完了としました。目視での見回りは、店舗数やページ数が増えた時点で必ず破綻します。
実案件で起きた併存パターンと、その整理
実際に整理した案件の構成と判断です。二重計測は誰かのミスというより、サイトが増築される過程で構造的に生まれます。
本体はGTM経由、後から作った下層ページだけ直書き
学習塾・予備校の案件で、既存サイトに新しい紹介ページを2枚追加したときの構成です。
調査の結果、本体サイトの計測はGTMのみで直書きは無し、一方で新しく作ったページはGTMを入れないまま計測タグを直書きしていました。この状態で「GTMも入れてください」という依頼をそのまま実行していたら、その2ページだけが二重計測になっていました。
このとき重要なのは、依頼を実行する前にGTMコンテナの中身を実査したことです。コンテナを開くと、GA4系のタグが2本入っていました。片方は自社が把握している測定ID、もう片方は広告運用会社が設置した別プロパティのIDです。どちらも全ページ配信の設定でした。
- 中身を見ずに直書きを残したままGTMを追加していたら → 同じ測定IDが2回飛ぶ二重計測
- 中身を見ずに「知らないタグだから」と削除していたら → 広告運用会社のコンバージョン計測が停止
「GTMを入れてください」という依頼は、必ずコンテナの実査とセットで受けてください。 見ずに足すのも、見ずに消すのも事故になります。
直書きを消すとき、関数の定義だけは残す
上の案件での整理は、直書きの計測タグを削除してGTMに一本化し、ただし gtag() 関数の定義だけはページに残すという形にしました。
理由は、そのページにボタンのクリックを送信するコードが実装されていたためです。直書きタグを丸ごと削除すると、その送信コードが呼び出す関数ごと消えてしまい、イベントだけが静かに止まります。関数の定義を残しておけば、送信されたデータはdataLayerという受け皿を経由してGTM側の計測タグが処理するので、二重にはならず、イベントも生き続けます。
整理後は、Performance APIで送信が1本であることと、目的の測定IDにデータが届いていることを本番URLで実測して完了としました。直書きを削除済みである以上、二重計測は物理的に起こり得ない状態になっています。
「GA4はもう入っています」が空箱だったケース
調べる過程では逆の壊れ方も見つかります。25店舗チェーンの案件では、事前に「GA4はあるようだ」と共有されていたプロパティが2つとも、タグが1本も設置されておらずデータがゼロでした。管理画面にプロパティが存在することと、計測できていることは別物です。この確認を先にやったことで、既存データを汚さずに新しい測定IDへ統合する判断ができました。二重計測の調査は、実質的に計測全体の棚卸しになります。
一本化するときの手順と判断基準
余分なタグを見つけたら、まず消さずに、次の順で進めてください。先に消してから考えると、止めてはいけない計測を止めます。
手順0:消す前に棚卸しする
見つかったタグそれぞれについて、次を確認します。
| 確認項目 | 確認できないときの扱い |
|---|---|
| どの測定ID・広告アカウントへ送っているか | 不明なタグは消さずに保留 |
| 誰が何のために設置したか(広告運用会社を含む) | 関係者に照会するまで触らない |
| 広告のコンバージョン最適化に使われていないか | 使われている可能性があるなら残す |
広告の自動入札は、コンバージョンの実績データを学習に使います。 そのタグを停止すると数字が消えるだけでなく、学習が失われて配信の質が落ちます。「よく分からないタグ」は、消す対象ではなく確認する対象です。
手順1:どちらに寄せるかを決める
原則はGTMへ寄せるです。理由は、タグの追加・停止をサイトのソースを触らずに行えるため、今後の増築で直書きが混ざる余地が減るからです。
例外はGTMを誰も管理していない場合です。管理アカウントの所在が分からないコンテナに寄せると、次の変更で手が出せなくなります。直書きに寄せてGTMを撤去する判断が正解になることもあります。「一般的に良い方法」より「その現場で保守できる方法」を優先してください。
手順2:切り替えの前後を記録する
一本化すると、その日を境にGA4の数字は下がります。正常な動作ですが、記録しておかないと数か月後に「急に落ちた」と別の原因を探すことになります。切替日と作業内容を残し、前後比較には注記を入れてください。
手順3:作業後に実測で確認する
作業後は手順1の方法でもう一度送信を数えます。「消したから大丈夫」ではなく「1本になっていることを見た」を完了条件に。 キャッシュの都合で古いHTMLがしばらく配信され続けることがあります。
二重に見えて二重ではないケース
判定を誤らないために、紛らわしいケースも挙げておきます。
リアルタイムレポートに自分のアクセスが出ない ——これは実装が壊れている証拠にはなりません。ブラウザ拡張機能や通信環境によって、送信自体は行われているのに記録されないことがあります。送信の有無はPerformance APIで判定し、レポート画面の見え方で結論を出さないでください。
管理画面の表を見て「イベントが無い」と判断する ——表が横に長いと、目的の列や行が画面の外にあることがあります。断定する前に表示件数と列の設定を変えて見直してください。実測を名乗った報告でも見落としは起こります。
測定IDが違う2本が飛んでいる ——前述のとおり二重計測ではありません。広告運用会社が別プロパティで計測している構成はよくあります。統合の要否は運用体制の話として別途判断してください。
よくある質問
Q. GTMとページ直書きを両方入れると、必ず二重になりますか
同じ測定IDを両方から送っている場合は二重になります。GTMには広告タグやヒートマップのみを入れ、GA4は直書きという構成であれば二重にはなりません。問題は「両方あること」ではなく「同じIDが2回飛ぶこと」です。
Q. 二重計測だった期間のデータは、後から修正できますか
遡って修正することはできません。期間を特定して「この日までは実態の約2倍」と注記を残し、比較の基準から外すのが現実的な対処です。だからこそ、早く見つけるほど損失が小さくなります。
Q. WordPressのプラグインで計測を入れている場合はどうなりますか
プラグインが計測タグを出力し、テーマ側やGTMからも同じIDを出す併存は頻出です。判定方法は同じで、送信を数えれば経路の数が分かります。
起こりうる問題と、設計段階での予防策
計測の整理で起こりやすい問題と予防策です。すべて着手前に潰せます。
| 起こりうる問題 | 予防策 |
|---|---|
| 直書きを消したらイベント送信も止まる | 送信コードが使う関数の定義だけ残す構成にしてから削除する |
| 広告のコンバージョン計測を止めてしまう | 消す前に全タグの送信先と設置者を棚卸しし、不明なものは保留 |
| 一部のページにだけ古いタグが残る | 公開サーバーの返すHTMLを全ページ機械的に数えて検証する |
| 切替後に数字が落ちて別の原因を探す | 切替日と内容を記録し、比較グラフに注記を入れる |
| 管理画面にプロパティがあるので計測済みと誤解する | データの有無を実際に確認してから設計を決める |
| GTMの管理者が不在で変更できなくなる | 寄せ先を決める前に管理アカウントの所在を確認する |
| 検証を目視で行い、店舗数・ページ数の増加で破綻する | 件数を数える形の検証にして、規模が増えても同じ手順で回す |
まとめ
GA4の二重計測は、サイトが増築されていく過程で自然に生まれる構造的な問題です。特別なミスがなくても起こります。やることは3つです。
- 計測は直書きかGTMのどちらか一方に一本化する(同じ測定IDを2経路から送らない)
- 判定はコードではなく、実際に飛んでいる送信の本数で行う(Performance APIで数える)
- 消す前に全タグの送信先と設置者を棚卸しする(広告のコンバージョン計測を止めないため)
そして、確認を「数える」形にしておくこと。目視の見回りは規模が増えた瞬間に破綻しますが、件数を数える検証は店舗数やページ数が増えても同じ手順のまま使えます。
数字が実感と合わない、広告の獲得単価が良すぎて不安、という状態は、施策より先に計測の健全性を確認するサインです。自社サイトの計測がどうなっているか分からない場合は、実際の送信を見ながらの確認も承っています。