なぜ危ないのか
社外共有HTMLにGA測定IDが含まれると、クライアントや競合他社の社員がアクセスしただけで自社の計測プロパティにセッションデータが蓄積されます。キャンペーン期間中であればコンバージョン率の計算が狂い、広告予算配分の判断を誤る原因になります。
クライアントへの提案書HTMLにクライアントのGA IDが誤って別クライアントのIDに置き換わっていた場合、提案先の競合情報を収集するかたちになります。こうした事故は技術的には軽微でも、契約上の守秘義務違反として法的問題に発展するリスクがあります。
- 相手がログインなしで開ける状態か確認する
- PCとスマホで最低1回ずつ表示を確認する
- 内部情報・個人情報・不要な外部送信が残っていないか見る
- レビュー期限と修正時の差し替え方を決めておく
ソースで見る場所
`gtag('config', '`の後に続く引数を確認します。本番IDは`G-`で始まり10桁の英数字が続きます。ダミー値との見分け方は、実際のGA4コンソールでそのIDのプロパティが存在するかどうかです。不明な場合は`G-XXXXXXXXXX`に置き換えておけば安全です。
Google Tag Managerを経由している場合は、`GTM-XXXXXXX`形式のID検索も実施します。GTMコンテナの中に複数のタグが含まれることがあるため、GTM IDが見つかったらコンテナの管理画面でどのタグが有効かを確認する必要があります。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
安全に共有する設定
レビュー用ビルド専用のnpmスクリプトを用意し、`build:review`実行時にHTMLからGA関連タグをsedやpostprocessスクリプトで自動削除します。ビルドコマンドを変えるだけでタグの有無を切り替えられるため、手動削除のミスがなくなります。
共有ツールとしてギガサイト便を使い、URLに会社ドメイン認証を設定します。認証をクリアした相手だけがアクセスできるため、GAタグが残っていても計測されるユーザーをコントロールできます。特定ドメインの人だけを対象にすることで、GA上のセグメント除外も設定しやすくなります。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
再発防止ルール
プロジェクトの`README.md`に「レビュー用共有前に`npm run check:tracking`を実行すること」と明記します。このコマンドが`package.json`のscriptsに登録されており、実行するとgrepスキャンが走り結果が表示されるようにしておきます。
四半期に一度、過去の共有済みURLを棚卸しし、有効期限切れのURLが本当に無効になっているかを確認します。ギガサイト便のダッシュボードでアクティブなURLを一覧表示して確認する手順をチームのカレンダーに登録しておきます。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
よくある質問
GA4の「データ削除リクエスト」は具体的にどの画面から申請しますか?
GA4のAdminメニュー→「Data collection and modification」→「Data deletion requests」から申請できます。日付範囲・フィルタ条件を指定して削除対象を絞り込み、確認後に申請します。削除完了まで最大63日かかります。
GAデータの汚染を発見したとき、クライアントにどう報告すべきですか?
事実を正確に伝えることが信頼回復の第一歩です。「いつ・どのHTMLに・どのIDが含まれていたか」「影響を受けた可能性のあるアクセス数」「データ削除の申請状況」の三点を書面で報告し、再発防止策も併せて提示してください。
測定ID混入を検出する自動テストをJestで書けますか?
はい。`fs.readFileSync`でHTMLを読み込み、`/G-[A-Z0-9]{10}/.test(html)`がfalseであることをassertするテストが書けます。ダミーID(`G-XXXXXXXXXX`)は許容する場合は、正規表現から`X`のみで構成されるパターンを除外する条件を追加してください。