Googleアナリティクス4(GA4)を入れたばかりのサイトは、いちばんよく見ている人が社内の人です。受付が予約の確認でレッスン紹介を開き、代表が自宅で料金ページを直し、講師がブログの公開後に表示を確かめる。月に数百人しか来ない小さなサイトでは、この社内の閲覧だけで数字の何割かになります。この記事では、GA4の「内部トラフィックの定義」とデータフィルタで社内のアクセスを除く手順と、IPアドレスで除けない人をGoogleタグマネージャー(GTM)で除く方法を書きます。読み終わると、教室のWi-Fiと代表の自宅からのアクセスが数字に入らず、スタッフのスマホも必要なら除ける状態になります。GA4のプロパティとGTMのコンテナがすでにサイトに入っていることを前提にします。
先に決めること
データフィルタは有効にした時点から効き、除いたデータはあとから戻せません。設定の前に次の5つを決めておくと、やり直しが起きません。
1つ目は、誰のアクセスを除くかです。サンプル料理教室なら、教室のWi-Fiにつないだパソコンとスマホ、代表の自宅、講師3名と受付2名の個人のスマホ、サイトを作った制作会社の4つに分かれます。制作会社は修正のたびに何十回もページを開くので、意外と数が多くなります。
2つ目は、どの手段で除くかです。GA4の画面だけでできるのはIPアドレスでの除外です。IPアドレスが変わらない場所(教室・固定回線の自宅)はこれで足ります。IPアドレスが毎回変わる人(スマホの回線・在宅のスタッフ・外出先)はIPで除けないので、GTMでブラウザに印を付ける方法を使います。
3つ目は、traffic_type の値です。GA4は社内と判定したアクセスに traffic_type というパラメータを付け、データフィルタはその値で除外します。初期値は internal です。IPで判定した分もGTMで付けた分も同じ internal に揃えると、フィルタ1つで済みます。データフィルタは1つのプロパティに10個までなので、場所ごとに値を分けるのはやめたほうが楽です。
4つ目は、いつ有効にするかです。テストの状態で数日動かし、除く対象が正しいと確かめてから有効にします。月の途中で切り替えると、その月だけ前半と後半で数え方が違う月になります。月初に有効にすると、毎月の数字を比べるときに説明が要りません。
5つ目は、切り替えた日をどこに残すかです。半年後に「この月から問い合わせ率が上がった」と見えたとき、それが社内アクセスを除いたせいだと分からなくなります。データポータル(Looker Studio)の月次レポートの注記欄や、社内の共有メモに「2026年11月1日から内部トラフィック除外を有効化」と1行書いておきます。
除外の手段の一覧
社内のアクセスを除く手段は1つではありません。サンプル料理教室で使うものと使わないものを並べます。
| 手段 | 何で判定するか | 向く人 | 設定する場所 |
|---|---|---|---|
| 内部トラフィックの定義+データフィルタ | IPアドレス | 教室・固定回線の自宅・会社の事務所 | GA4の管理画面 |
| GTMで traffic_type を付ける | ブラウザのCookieとURLのクエリ | スマホ回線・在宅・外出先 | GTM |
| デベロッパートラフィックのフィルタ | debug_mode か debug_event が入っているか | GTMのプレビューやTag Assistantで確かめる人 | GA4の管理画面 |
| ウェブホスト名のトラフィックのフィルタ | データを送ってきたドメイン | 制作会社のテスト環境 | GA4の管理画面 |
| オプトアウト アドオン | ブラウザの拡張機能 | 自分のパソコンだけ除きたい人 | Chromeの拡張機能 |
| レポートフィルタ | レポートの絞り込み | データを消さずに一部の画面だけで隠したいとき | 各レポート |
サンプル料理教室で最終的に入れる設定は次のとおりです。IPアドレスは説明用の番号です。
| 対象 | 判定 | 設定値 |
|---|---|---|
| 教室のWi-Fi(IPv4) | IPアドレスが等しい | 203.0.113.45 |
| 教室のWi-Fi(IPv6) | IPアドレスが範囲内 | 2001:db8:1234:5600::/56 |
| 代表の自宅(IPv4) | IPアドレスが等しい | 198.51.100.23 |
| 講師・受付のスマホ | GTMのCookie | sc_internal=1 |
| traffic_type の値 | すべて共通 | internal |
| データフィルタ | 内部トラフィック・除外 | 名前 社内アクセス除外 |
| データフィルタ | デベロッパートラフィック・除外 | 名前 デバッグ除外 |
手順
IPアドレスを調べる
ここで調べるのは、インターネット側から見えるIPアドレス(グローバルIPアドレス)です。パソコンの設定画面に出る 192.168. で始まる番号は教室の中だけの番号なので、GA4に入れても一致しません。
- 教室のWi-Fiにつないだパソコンで、GA4の「管理」を開く
- 「データの収集と修正」→「データ ストリーム」を開き、サイトのウェブストリームを選ぶ
- 「タグ設定を行う」→「すべて表示」→「内部トラフィックの定義」→「作成」と進む
- 画面の「IP アドレスを確認」を押し、表示された番号を控える
- 同じことを教室のWi-Fiにつないだスマホでもやり、番号が同じか比べる
- 代表の自宅でも同じ手順で番号を控える

パソコンでは 203.0.113.45 のようなIPv4、スマホでは 2001:db8:1234:5600:... のような長いIPv6が出ることがあります。これは故障ではなく、同じ回線がIPv4とIPv6の両方でインターネットにつながっているためです。ブラウザがどちらを使うかは端末と状況で変わるので、両方を登録します。
IPv6・スマホ回線・在宅勤務の扱い
IPアドレスは、場所によって変わりやすさがまったく違います。登録する前に、それぞれ数日あけて2〜3回調べ、同じ番号が出るか確かめます。
| 場所 | IPの変わり方 | 扱い |
|---|---|---|
| 教室の固定回線(IPv4) | 変わらないことが多い | 「等しい」で登録 |
| 教室の固定回線(IPv6) | 後ろ半分が端末や時間で変わる。前半分は同じことが多い | 共通の前半分を「範囲内」で登録 |
| 代表の自宅の光回線 | ルーターの再起動などで変わることがある | 登録して、月1回変わっていないか確かめる |
| スマホのモバイル回線 | 接続のたびに変わる。他の利用者と同じ番号を使うこともある | 登録しない。GTMの方法を使う |
| 在宅のスタッフ | 家庭の回線ごとにばらばら | 人数が少なければGTMの方法を使う |
| 会社のVPN経由 | VPNの出口のIPにまとまる | 出口のIPを登録 |
IPv6は、番号の後ろ半分が端末ごとに作られ、時間がたつと作り直されるのが普通です。1回調べた番号をそのまま「等しい」で入れると、翌日にはもう一致しません。2〜3回調べた番号を並べ、前から何ブロックまで同じかを見ます。2001:db8:1234:5600: までの4ブロックが同じなら /64、2001:db8:1234:56 までなら /56 を付けて「範囲内」で登録します。範囲を広げすぎると同じプロバイダの他の家庭まで社内扱いになるので、共通の部分より広くはしません。
スマホのモバイル回線は、IPでは除けないと考えたほうが正確です。回線の会社が多くの利用者に同じIPを順番に割り当てるので、たまたま一致した番号を登録すると、体験レッスンを申し込もうとしている一般の人まで除いてしまいます。講師のスマホは、教室のWi-Fiにつないでいるあいだは教室のIPで除かれ、外では除かれません。外でも除きたい人は、後ろの「IPで除けない人をGTMで除く」の方法を使います。
内部トラフィックを定義する
- 「管理」→「データの収集と修正」→「データ ストリーム」→ウェブストリームを選ぶ
- 「タグ設定を行う」→「すべて表示」→「内部トラフィックの定義」→「作成」を押す
- ルール名に
教室と代表自宅と入れる - traffic_type の値は
internalのままにする - 「IP アドレス」の「マッチタイプ」で「IP アドレスが等しい」を選び、「値」に
203.0.113.45を入れる - 「条件を追加」を押し、「IP アドレスが範囲内(CIDR 表記)」で
2001:db8:1234:5600::/56を入れる - もう1つ条件を追加し、「IP アドレスが等しい」で
198.51.100.23を入れる - 「作成」を押す

マッチタイプの初期値は「IP アドレスが範囲内(CIDR 表記)」です。1つの番号だけを登録するときは「IP アドレスが等しい」に選び直します。条件はANDではなくORで判定されます。3つのどれかに一致すれば社内扱いです。マッチタイプには「等しい」「で始まる」「で終わる」「を含む」「範囲内(CIDR 表記)」「正規表現に一致」があります。小さな会社なら「等しい」と「範囲内」の2つで足ります。「で始まる」で 203.0. のように短く書くと、関係のない会社まで一致するので使いません。
この時点では、社内のアクセスに traffic_type=internal という印が付くだけで、数字はまだ1件も減りません。減らすのは次のデータフィルタです。
データフィルタをテストの状態で作る
- 「管理」→「データの収集と修正」→「データフィルタ」を開く
- 「フィルタを作成」を押し、種類で「内部トラフィック」を選ぶ
- 「データフィルタ名」に
社内アクセス除外と入れる - 「フィルタ オペレーション」で「除外」を選ぶ
- パラメータの値が
internalになっているか確かめる - フィルタの状態で「テスト」を選ぶ
- 「作成」を押す

データフィルタ名は同じプロパティの中で重複できず、40文字以内で、使える文字は文字・数字・アンダースコア・スペースです。ハイフンや記号を入れると保存できません。
フィルタの状態は3つあります。
| 状態 | 何が起きるか | 使う場面 |
|---|---|---|
| テスト | 除外はしない。一致したデータに「テスト データフィルタ名」が付く | 作ってから数日、正しく一致するか確かめる |
| 有効 | 一致したデータを処理しない。除いたデータは戻らない | 確かめ終わってから |
| 無効 | フィルタを使わない | 一時的に止めたいとき |
作成や編集には、プロパティの「編集者」以上の権限が要ります。制作会社に閲覧者の権限しか渡していないなら、この作業はこちらでやります。
テストの状態で確かめる
テストの状態のフィルタは、一致したイベントに「テスト データフィルタ名」という印を付けます。データ探索でこの印を数えると、有効にしたら何件減るかが分かります。反映まで24〜36時間かかることがあるので、作った翌々日に見ます。
- 「探索」→「自由形式」で新しいデータ探索を作る
- ディメンションに「テスト データフィルタ名」と「イベント名」を追加する
- 指標に「イベント数」を追加する
- 行に「テスト データフィルタ名」と「イベント名」、値に「イベント数」を置く
- フィルタで「テスト データフィルタ名」が
社内アクセス除外を含む、を指定する

確かめるのは3点です。教室で開いたページビューが出ているか。代表が自宅で開いた日の数が出ているか。体験申込完了のキーイベント(旧コンバージョン)が社内の件数として出ていないか。最後の点が大事で、受付が電話で受けた申込を代わりにフォームで送っている運用だと、本物の申込が社内扱いで消えます。その場合は受付の代理入力だけ別の端末で送るか、代理入力を除外の対象から外す方法を先に決めます。
有効にする
- 「管理」→「データの収集と修正」→「データフィルタ」を開く
社内アクセス除外を選ぶ- フィルタの状態を「有効」に変えて保存する
- 切り替えた日を、月次レポートの注記と社内メモに書く
有効にしたあとは、一致したデータは処理されず、GA4のレポートにもBigQueryにも残りません。あとで「無効」に戻しても、有効だったあいだに除いたデータは戻りません。逆に、有効にする前のデータにはさかのぼって効きません。先月までの数字には社内のアクセスが入ったままです。

データを消さずに、ある画面だけで社内の分を隠したいならレポートフィルタを使います。ただし画面ごとに絞り込みを付けることになり、毎月の数字を代表に見せる用途では付け忘れが出ます。小さな会社なら、テストで確かめてデータフィルタを有効にするほうが手間がかかりません。
デベロッパートラフィックのフィルタを作る
GTMのプレビューで確かめているときのアクセスは、デバッグモードのアクセスとしてGA4に届きます。DebugViewで見るためのものですが、何もしなければ通常のレポートにも入ります。体験申込フォームのテスト送信を10回やれば、キーイベントが10件増えます。デベロッパートラフィックのフィルタは、debug_mode か debug_event の値が入っているイベントをレポートから除きます。DebugViewに残るかどうかはヘルプに書かれていないので、有効にする前にテストの状態とDebugViewで確かめます。
- 「管理」→「データの収集と修正」→「データフィルタ」を開く
- 「フィルタを作成」を押し、種類で「デベロッパー トラフィック」を選ぶ
- 「データフィルタ名」に
デバッグ除外と入れる - 「フィルタ オペレーション」で「除外」を選ぶ
- フィルタの状態で「テスト」を選んで作成する
- 数日後にデータ探索で確かめ、「有効」に変える

デバッグモードになるのは、Tag AssistantやGTMのプレビューで開いたブラウザと、Googleタグに debug_mode を true で入れたときです。DebugViewは「管理」→「データの表示」→「DebugView」で開きます。
ここで1つ確かめることがあります。サイトのコードやGTMのGoogleタグに debug_mode が入ったままになっていないかです。入っていると、全訪問者がデバッグモードで届き、このフィルタを有効にした瞬間に全部が消えます。debug_mode を false にしても無効にはならず、パラメータそのものを消す必要があります。
// 消し忘れると、全員がデバッグモードになる書き方
gtag('config', 'G-XXXXXXXXXX', { 'debug_mode': true });
// false にしてもデバッグモードは切れない。行ごと消す
gtag('config', 'G-XXXXXXXXXX', { 'debug_mode': false });
応用
IPで除けない人をGTMで除く
講師のスマホや在宅のスタッフは、IPでは除けません。GA4のヘルプにも、traffic_type パラメータはイベントに手動で付けられると書かれています。そこで、スタッフが一度だけ特別なURLを開くとブラウザにCookieが入り、そのCookieがあるブラウザからのアクセスに traffic_type=internal を付ける仕組みをGTMで作ります。
全体の流れはこうです。
- スタッフが
https://sample-cooking.example/?sc_internal=onを一度開く - GTMのカスタムHTMLタグが、そのブラウザに
sc_internal=1のCookieを書く - 以後、そのブラウザで開いたページでは、GTMの変数が
internalを返す - Googleタグが
traffic_typeにその値を入れてGA4へ送る - GA4のデータフィルタ
社内アクセス除外が除外する
GTMで作るものは次の5つです。
| 種類 | 名前 | 中身 |
|---|---|---|
| 変数(URL) | Query - sc_internal | コンポーネントタイプ「クエリ」、クエリキー sc_internal |
| 変数(ファーストパーティ Cookie) | Cookie - sc_internal | Cookie名 sc_internal |
| 変数(カスタム JavaScript) | traffic_type | 下のコード |
| タグ(カスタム HTML) | 内部フラグ - Cookieを書く | 下のコード、sc_internal がURLにあるページで配信 |
| Googleタグの設定 | 既存のGoogleタグ | 構成パラメータ traffic_type、値 {{traffic_type}} |
カスタムHTMLタグのコードです。?sc_internal=off を開くとCookieを消します。
<script>
(function () {
var v = new URLSearchParams(location.search).get('sc_internal');
if (v === 'on') {
document.cookie = 'sc_internal=1; path=/; max-age=31536000; SameSite=Lax';
} else if (v === 'off') {
document.cookie = 'sc_internal=; path=/; max-age=0; SameSite=Lax';
}
})();
</script>
トリガーは「ページビュー」で、「一部のページビュー」→「Page URL」「を含む」sc_internal= にします。
カスタムJavaScript変数 traffic_type のコードです。Cookieを書くタグより先にGoogleタグが動いても、最初のページから印が付くように、URLのクエリも見ます。
function () {
var q = {{Query - sc_internal}};
var c = {{Cookie - sc_internal}};
if (q === 'off') {
return undefined;
}
if (q === 'on' || c === '1') {
return 'internal';
}
return undefined;
}
最後に、Googleタグを開き、「設定」欄で「パラメータを追加」を押し、「構成パラメータ」に traffic_type、「値」に {{traffic_type}} を入れます。「構成の設定変数」で設定用の変数を選んでいる場合は、その変数の中に同じ行を足します。

公開する前に、GTMのプレビューで2つ確かめます。?sc_internal=on を付けて開いたときに、変数 traffic_type が internal になっているか。付けずに別のブラウザで開いたときに、undefined のままか。後者が internal になっていたら、全員が社内扱いで消えるので公開しません。
この方法は、Cookieがブラウザごとに入る点に注意が要ります。同じスマホでも、SafariとChrome、LINEやInstagramのアプリの中で開くブラウザは、それぞれ別のCookieです。講師がInstagramのプロフィールからサイトを開くと、そのアクセスは社内扱いになりません。よく使うブラウザで1回ずつ ?sc_internal=on を開いてもらいます。また、ブラウザによってはスクリプトで書いたCookieが期限より早く消えます。3か月に1回、スタッフにもう一度開いてもらう運用にしておくと漏れが減ります。
広告のタグも社内では止める
GA4のデータフィルタは、GA4の中の数字にしか効きません。GTMで入れているGoogle広告のコンバージョンタグとMetaのピクセルは、受付がテストで体験申込フォームを送るたびに、それぞれ広告側でコンバージョンを数えます。体験レッスン向けの広告の成果が実際より多く見え、自動入札がその数字で学習します。
同じ traffic_type 変数を使い、広告のタグだけ社内では配信しないようにします。
- GTMの「トリガー」→「新規」を押す
- トリガーのタイプで「カスタム イベント」を選ぶ
- イベント名に
.*と入れ、「正規表現一致を使用」にチェックを入れる - 「一部のカスタム イベント」を選び、
{{traffic_type}}「等しい」internalにする - 名前を
例外 - 社内アクセスにして保存する - Google広告のコンバージョンタグとMetaのピクセルのタグを開き、「トリガー」の「例外」の欄に
例外 - 社内アクセスを追加する

「例外」に入れたトリガーは、配信トリガーと同じ種類のイベントで判定されます。ページビューのトリガーで例外を作ると、フォーム送信のイベントで動くタグは止まりません。イベント名を .* にしたカスタムイベントにしておくと、どのイベントで動くタグにも効きます。GA4のタグにはこの例外を付けません。GA4にはデータが届き、データフィルタで除かれるほうが、テストの状態で件数を確かめられて扱いやすいからです。
なお、この例外はIPで判定した社内のアクセスには効きません。IPでの判定はGA4のサーバー側で行われ、GTMからは見えないためです。教室のWi-Fiで送ったテスト申込を広告側でも数えたくないなら、教室のパソコンでも ?sc_internal=on を開いておきます。
ブラウザの拡張機能で自分だけ除く
代表が自分のパソコンのChromeだけ除きたいなら、Googleが出しているGoogle アナリティクス オプトアウト アドオンがあります。入れたブラウザでは、どのサイトを開いてもGA4へのデータ送信が止まります。設定は拡張機能を入れるだけです。
ただし、止まるのはGA4だけで、広告のタグは止まりません。また、そのブラウザではDebugViewもリアルタイムも自分のアクセスが映らないので、計測を確かめる人には向きません。ブラウザの拡張機能ではなくヘルプでは「アドオン」と呼ばれていますが、代表のように見るだけの人には手軽で、GTMを触る人はCookieの方法のほうが扱いやすくなります。
制作会社のテスト環境を除く
制作会社が staging.sample-cooking.example のようなテスト用のサイトを持っていて、そこに本番と同じGTMのコンテナが入っていると、テスト環境のアクセスも同じGA4に届きます。このときは、データフィルタの種類「ウェブホスト名のトラフィック」で、データの送り元のドメインを基準に除けます。先にデータ探索で「ホスト名」ごとのイベント数を出し、本番以外のドメインがあるか見てから作ります。制作会社には、テスト環境では別のコンテナか、GTMの環境機能を使ってもらうよう頼むのがいちばん確実です。
できないことと、その代わり
| できないこと | 理由 | 代わりの手 |
|---|---|---|
| 有効にする前の過去のデータから社内分を消す | フィルタは作成後のデータにしか効かない | 切り替えた日を記録し、前後の月を比べるときに注記する |
| 有効にして除いたデータを戻す | 除いたデータは処理されず残らない | 必ずテストの状態で数日確かめてから有効にする |
| アプリの利用者を内部トラフィックで除く | 内部トラフィックのフィルタはウェブのみ | アプリの計測がある会社だけの話。小さな教室では対象外 |
| スマホのモバイル回線をIPで除く | 接続ごとに変わり、他人と共有される | GTMのCookieの方法 |
| IPでの判定をGTMの条件に使う | 判定はGA4側で行われる | 教室の端末でもCookieを入れておく |
| 広告側のコンバージョンを社内分だけ消す | GA4のフィルタは広告のタグに効かない | GTMのタグの「例外」にトリガーを入れる |
| 1人の人を全端末で除く | Cookieはブラウザごと | よく使うブラウザで1回ずつ印を付ける |
よく詰まるところ
| 症状 | 原因 | 直し方 |
|---|---|---|
| 設定したのに社内のアクセスが減らない | 内部トラフィックの定義だけ作り、データフィルタを作っていない | データフィルタを「内部トラフィック」「除外」で作る |
| データフィルタを作ったのに減らない | 状態が「テスト」のまま | データ探索で確かめたうえで「有効」に変える |
| テストのデータ探索に何も出ない | 反映前。24〜36時間かかることがある | 2日待ってから見る |
| 教室のパソコンは除かれるがスマホが除かれない | スマホはIPv6でつながっている | IPv6の前半分を「範囲内」で追加する |
| 先週まで除かれていた代表の自宅が戻ってきた | 自宅のIPアドレスが変わった | 調べ直して条件を書き換える。頻繁に変わるならCookieの方法に切り替える |
| フィルタを有効にしたら全部の数字が0に近くなった | サイトかGoogleタグに debug_mode が入ったまま、またはIPの範囲が広すぎる | すぐ「無効」にし、debug_mode の行を消す、範囲を狭める。消えた分は戻らない |
| 体験申込のキーイベントが減りすぎた | 受付が代理入力した本物の申込まで社内扱いになった | 代理入力の端末を除外から外すか、代理入力の分を別に数える |
| データフィルタ名が保存できない | ハイフンや記号、40文字超え | 文字・数字・アンダースコア・スペースだけにする |
| 一般の人まで社内扱いになっている | GTMの traffic_type 変数が常に internal を返している | プレビューで、印のないブラウザの値が undefined か確かめる |
| 講師のスマホがInstagramから開くと除かれない | アプリ内ブラウザのCookieは別 | アプリ内ブラウザでも ?sc_internal=on を開く |
| GA4は減ったが広告の成果は減らない | 広告のタグは別に数えている | 広告のタグの「例外」にトリガーを入れる |
| データフィルタがもう作れない | 1プロパティ10個の上限 | 値を internal に揃えて1つのフィルタにまとめる |
| フィルタを作れない・編集できない | 権限が閲覧者やアナリスト | プロパティの編集者以上の人が作業する |
次にやること
社内のアクセスを除いたら、ほかの初期設定もまとめて見直します。データ保持期間とGoogleシグナルは「GA4の初期設定:データ保持期間・内部トラフィックの除外・Googleシグナル」に書いています。社内ではないのに怪しいアクセスが混じっているときは「botとスパムのアクセスを見分ける:GA4でできることと、できないこと」が続きです。GTMのプレビューとDebugViewの使い方は「公開前の確認:GTMのプレビューとGA4のDebugView」で、デベロッパートラフィックのフィルタと一緒に読むと流れがつながります。除外したあとでユーザー数やセッション数の動きが気になったら「ユーザー・セッション・イベント数の違い:GA4の数字が合わない理由」を見てください。