Googleアナリティクス4(GA4)を見ていると、ある日から急にユーザー数が倍になり、中身を開くと海外からの「Direct」ばかり、ということが起きます。小さな会社のサイトほど元の数字が小さいので、botが1日数百件来ただけで月次の数字が別物になります。この記事では、GA4が自動で除いているbotの範囲、それでも入ってくるbotの見分け方、レポートと探索での切り分け方、Googleタグマネージャー(GTM)で送らないようにする方法とその限界を、サンプル料理教室のサイト sample-cooking.example を例に書きます。読み終わると、増えたアクセスがbotかどうかを判断でき、体験申込などのキーイベント(旧コンバージョン)の数字が汚れていないかを確かめられるようになります。GA4とGTMがすでにサイトに入っていることを前提にします。
先に決めること
botの話は、手段を選ぶ前に「何を守るか」を決めておかないと、消せないものを消そうとして時間を使います。次の4つを先に決めます。
1つ目は、守る数字です。サンプル料理教室で毎月代表が見ているのは、体験申込完了・電話タップ・LINE追加の3つのキーイベントと、その流入元です。ページビューやユーザー数はbotで膨らんでも、キーイベントに入っていなければ判断は変わりません。まず「キーイベントにbotが入っているか」を確かめ、入っていなければ、ユーザー数やセッション数は「除いて読む」で足ります。
2つ目は、消すのか、除いて読むのかです。GA4には、すでに入ったbotのデータをあとから消す機能がありません。データフィルタも作った時点から先にしか効きません。過去の分は、比較・探索のセグメント・データポータル(Looker Studio)のフィルタで「除いて読む」しかありません。これから先の分だけ、GTMやサーバーで止めるかを考えます。
3つ目は、どこで止めるかです。GA4の画面で止められるのは、IPアドレス(内部トラフィック)、デバッグモード、ホスト名の3種類だけで、国やチャネルでは止められません。GTMならブラウザの特徴で送信を止められますが、GTMを通らずに送られてくるデータは止められません。いちばん確実なのはサーバー(レンタルサーバーやCDNの機能)で止めることですが、これは制作会社かサーバーの管理者の仕事になります。
4つ目は、記録の残し方です。botが来た期間は、あとから見ると「この月だけユーザーが多い」としか見えません。いつからいつまで、どの国から、何件くらいだったかを、GA4のメモ機能と社内の共有メモに残します。
botらしいアクセスの見分け方と、対処の手段の一覧
GA4に入ってくるbotには、いくつか共通する特徴があります。1つだけで決めず、2つ以上重なったらbotと見ます。
| 特徴 | 見る場所(ディメンション・指標) | 人のアクセスとの違い |
|---|---|---|
| 特定の国に集中 | 国・市区町村 | 日本語だけのサイトに、ある日から海外の1か国が急に増える |
| Directばかり | セッションのデフォルト チャネル グループ | 参照元が (direct)、メディアが (none) か (not set) |
| エンゲージメント時間がほぼ0秒 | セッションあたりの平均エンゲージメント時間・エンゲージメント率 | 人は短くても数秒は見る。botは1ページ開いてすぐ離れる |
| 同じ時刻に集中 | 時間・日付と時間(YYMMDDHH) | 人は昼休みと夜に山がある。botは深夜や毎時0分台に固まる |
| 同じ端末の特徴 | 画面の解像度・ブラウザ・オペレーティング システム | 何千件もが同じ解像度とブラウザの組み合わせになる |
| 入口のページが1つ | ランディング ページ | トップページだけ、または存在しないURLだけ |
| キーイベントが0件 | キーイベント | 何千セッションあっても申込もタップも起きない |
見つけたあとの手段は、効く範囲がそれぞれ違います。
| 手段 | 過去のデータ | これから先 | 確実さ | 誰がやるか |
|---|---|---|---|---|
| 既知のbotの自動除外 | ― | 自動で効いている | 既知のbotだけ | 設定不要 |
| 比較(標準レポート) | 除いて読める | 除いて読める | データは残る | 社内 |
| 探索のセグメント | 除いて読める | 除いて読める | データは残る | 社内 |
| データポータルのフィルタ | 除いて読める | 除いて読める | データは残る | 社内 |
| ホスト名のデータフィルタ | 効かない | 止まる | 偽のホスト名だけ | 社内 |
| GTMの例外トリガー | 効かない | 一部止まる | GTMを通るbotだけ | 社内 |
| サーバー・CDNで遮断 | 効かない | 止まる | いちばん高い | 制作会社・サーバー管理者 |
| データ削除リクエスト | 件数は減らない | ― | 用途が違う | 使わない |
手順
GA4が自動で除いているbotを知る
GA4のプロパティでは、既知のbotとスパイダー(クローラー)によるトラフィックが自動で除外されています。判定には、Googleの調査と、IAB(Interactive Advertising Bureau)が管理する「International Spiders and Bots List」が使われています。この除外はオフにできず、除外された量を確認することもできません(2026年10月時点)。
つまり、Googleの検索ロボットのように名乗って動く行儀のよいbotは、最初からGA4の数字に入っていません。GA4に入ってくるのは、リストに載っていないbot、ふつうのブラウザのふりをして動くbot、データを直接送りつけてくるスパムです。これらはJavaScriptを実行してGoogleタグを動かすので、GA4から見ると人のアクセスと同じ形で届きます。見分けは、上の表の特徴を組み合わせてやるしかありません。
逆に言うと、JavaScriptを実行しない単純なbotはGA4に来ません。サーバーのアクセスログでは大量に来ていても、GA4の数字には出ないのが普通です。サーバー会社の管理画面のアクセス数とGA4の数字が何倍も違うのは、この差がいちばん大きい理由です。
増え始めた日と国を見つける
まず、いつから何が増えたかを標準レポートで確かめます。
- 「レポート」→「集客」→「トラフィック獲得」を開く
- 期間を過去90日にする
- 折れ線グラフで、ユーザー数やセッション数が段になって増えた日を探す
- 表のディメンションを「セッションのデフォルト チャネル グループ」にし、Directが増えていないか見る
- 「レポート」→「ユーザー属性」→「ユーザー属性の詳細」を開き、ディメンションを「国」にする
- 増えた期間に、日本以外で急に上位に来た国がないか見る

サンプル料理教室のサイトは、ふだん1日30〜50セッションほどです。ここに海外の1か国から1日300セッションが来ると、グラフは一目で分かる段になります。
比較でbotらしい国を分けて見る
標準レポートの数字を、botらしい国とそれ以外に分けて並べます。比較はデータを消さず、表示だけを分けます。
- 「トラフィック獲得」レポートの右上にある比較のアイコンを押す
- 「新規作成」を押し、「ディメンション」で「国」を選ぶ
- 「マッチタイプ」で「完全一致」を選び、増えた国(例: シンガポール)を選んで「適用」を押す
- もう1つ比較を作り、「国」「完全一致しない」で同じ国を選ぶ
- もとの「すべてのユーザー」の比較を外す

これで、増えた国の分と、それを除いた分が色分けで並びます。除いた側の折れ線が以前と同じ高さなら、増えた分はその国だけだと分かります。比較の条件は1つの比較で最大4つまで作れ、条件どうしはAND、1つの条件に入れた複数の値はORで評価されます。毎月使うなら「管理」→「データの表示」→「比較」から保存しておくと、プロパティの全員が同じ比較を選べます。保存は編集者以上の権限が要ります。
探索で「国・チャネル・時間」の表を作る
標準レポートでは特徴を1つずつしか見られないので、探索の自由形式で表にして重なりを確かめます。
- 「探索」→「空白」を開き、手法を「自由形式」にする
- ディメンションに「国」「市区町村」「セッションのデフォルト チャネル グループ」「ランディング ページ」「画面の解像度」「時間」を追加する
- 指標に「セッション」「エンゲージメントのあったセッション数」「セッションあたりの平均エンゲージメント時間」「キーイベント」を追加する
- 行に「国」と「セッションのデフォルト チャネル グループ」を入れ、値に4つの指標を入れる
- セッションの多い順に並べ、増えた国の行を見る

botなら、増えた国の「Direct」の行で、セッションが多いのにエンゲージメントのあったセッション数がほぼ0、平均エンゲージメント時間が0秒台、キーイベントが0になります。エンゲージメントのあったセッションは、10秒以上続いた、キーイベントが起きた、2ページ以上見た、のどれかを満たすセッションです。botの多くはどれも満たしません。
次に、行を「時間」に替えます。人のアクセスは昼休みと夜21時前後に山ができますが、botは日本時間の深夜にまとまっていたり、ほぼ同じ件数で24時間並んでいたりします。さらに「画面の解像度」と「市区町村」で見て、何百件もが1つの値に固まっていれば、ほぼ間違いありません。
探索で見られる期間は、データ保持の設定(「管理」→「データの収集と修正」→「データの保持」)に縛られます。初期値の2か月のままだと、3か月前に来たbotは探索で確かめられません。保持期間は無料のプロパティで2か月か14か月を選べるので、14か月にしておきます。延ばした設定は、まだ消えていないデータにも効きます。
セグメントでbotを除いた数字を作る
探索の中で「botを除いた数字」を見るには、セグメントを使います。
- 探索の左の「セグメント」の横の「+」を押す
- 「セッション セグメント」を選び、名前を
bot除外にする - 含める条件として「国」が
日本を入れる(日本語だけのサイトで、海外の申込がない場合) - 国で全部を切れない場合は、「条件グループを追加」で除外の条件を作り、「国」が増えた国、かつ「セッションのデフォルト チャネル グループ」が
Directのセッションを除く - 「適用」を押し、表の数字が以前の水準に戻ったか確かめる

サンプル料理教室は大人向けの教室で、海外からの申込はありません。こういうサイトは「国が日本のセッションだけ」に絞ると、いちばん簡単に元の数字に戻せます。海外在住の日本人やVPN経由の人が少し落ちますが、毎月の傾向を見るには支障がありません。海外からの客がいる会社は、国で全部を切らず、国とDirectの組み合わせだけを除きます。
セグメントは探索の中でしか使えません。1つの探索に作れるのは10個まで、同時に当てられるのは4個までです。編集者以上なら「プロパティに保存」でほかの人の探索でも使えます。標準レポートの数字はセグメントでは変わらないので、毎月の報告には比較かデータポータルのフィルタを使います。
キーイベントにbotが入っていないか確かめる
いちばん大事な確認です。探索の表で、増えた国・Directの行の「キーイベント」が0なら、申込・電話タップ・LINE追加の数字は汚れていません。ユーザー数やエンゲージメント率がずれるだけなので、除いて読めば足ります。
キーイベントが入っていたら、行を「イベント名」に替えて、どのキーイベントかを見ます。体験申込完了が増えていれば、WordPressのフォームにbotが送信している可能性があります。フォームのお知らせメールの件数とGA4の件数を同じ期間で並べ、メールにも同じだけ届いていれば、フォームそのものがスパムに使われています。これはGA4ではなくフォーム側の問題なので、制作会社にスパム対策(reCAPTCHAなど)を入れてもらいます。メールが届いていないのにGA4だけ増えていれば、データだけを送りつけるスパムです。
Google広告やMeta広告にキーイベントを送っている場合は、botの申込が入札の学習にも入ります。広告のコンバージョンの数字も、同じ期間で見比べておきます。
メモを残す
botが来た期間には、GA4のメモ(注釈)を付けておきます。半年後に月次の数字を見たとき、なぜこの月だけ多いのかがすぐ分かります。
- 「レポート」で折れ線グラフのあるレポートを開く
- botが来始めた日のあたりで、グラフの上を右クリックする
- 「メモを追加」を押す
- タイトルに
海外Direct急増(bot)のように書く(半角60文字まで) - 説明に国と1日の件数、キーイベントへの影響の有無を書く(半角150文字まで)
- 日付は期間で選び、「メモを作成」を押す

メモを作るにはプロパティのアナリスト以上の権限が要ります。作ったメモは、折れ線グラフのあるすべてのレポートに出ます。一覧は「管理」→「データの表示」→「メモ」で見られます。
急増に気づく仕組みを作る
botは、気づくのが遅れるほど説明が大変になります。カスタム インサイトで、セッションが急に増えたらメールが届くようにしておきます。
- ホームの「インサイト」のカードで「すべての統計情報を表示」を押す
- 「作成」を押し、「新規作成」を選ぶ
- 評価の頻度を「日単位」にする
- セグメントは「すべてのユーザー」のままにする
- 指標に「セッション」を選び、条件に「異常値があります」を選ぶ
- 名前を
セッション急増にし、通知先に代表と担当者のメールアドレスを入れて「作成」を押す

「異常値があります」を選ぶと、しきい値を自分で決めなくても、いつもと違う変化をGA4が見つけます。カスタム インサイトはプロパティごとに50個まで作れます。
応用
実際にあった例:特定の国の直接アクセスが1日数万件増えた
実際に運用しているサイトで、ある日から特定の1か国の直接アクセスが1日2万〜3万セッション増えたことがあります。ふだんは1日数百セッションのサイトだったので、ユーザー数は月で数十倍になりました。
見えていた特徴は、この記事の表のとおりでした。国は1か国で、市区町村は2つの都市にほぼ集中。チャネルは全部Direct、入口はトップページだけ、平均エンゲージメント時間は0秒、画面の解像度は数種類だけ。時間帯は日本時間の深夜から朝に厚く、昼もゼロにはなりませんでした。キーイベントは1件も増えていませんでした。
判断は次の順でやりました。最初に、キーイベントと広告のコンバージョンが増えていないことを確かめ、申込の数字と広告の入札には影響がないと判断しました。次に、Search Consoleの検索のクリック数とGA4のOrganic Searchが以前と同じ水準であることを確かめ、人の流入は変わっていないと見ました。そのうえで、国を丸ごとサーバーで止めるかを検討しましたが、そのサイトにはその国からの正規の利用もわずかにあり、止めた場合の影響を読み切れなかったので、まずはGA4の比較とデータポータルのフィルタで「除いて読む」ことにしました。GA4にメモを残し、月次レポートには「この期間は該当国のDirectを除いた数字」と注記を入れました。
このbotはおよそ1か月半で自然に止みました。止める手間をかけなかったのは結果的に正解でしたが、もしキーイベントが増えていたら、サーバー側で止めるほうを選んでいました。判断の分かれ目は、守る数字に入っているかどうかです。
GTMで送らないようにする
これから先のbotをGA4に送らないようにするには、GTMでブラウザの特徴を見て、GA4のタグを止める方法があります。いきなり止めると人まで消すことがあるので、最初は「印を付けて様子を見る」、確かめてから「止める」の2段階でやります。
まず、botらしいブラウザかどうかを判定する変数を作ります。
- GTMの「変数」→「ユーザー定義変数」の「新規」を押す
- 変数のタイプで「カスタム JavaScript」を選ぶ
- 下のコードを貼り、名前を
JS - bot判定にして保存する
function() {
var ua = navigator.userAgent || '';
// 自動操作のブラウザは webdriver が true になる
if (navigator.webdriver === true) {
return 'true';
}
// 画面を持たないブラウザや、計測ツール・クローラーを名乗るもの
if (/HeadlessChrome|PhantomJS|Lighthouse|Googlebot|bingbot|AhrefsBot|SemrushBot/i.test(ua)) {
return 'true';
}
// 画面の幅か高さが0のもの
if (!window.screen || screen.width === 0 || screen.height === 0) {
return 'true';
}
return 'false';
}
次に、この値をGA4に送って、どれくらい当たるかを見ます。
- 「タグ」でGoogleタグ(
G-XXXXXXXXXX)を開く - 「設定」の「パラメータを追加」で行を足し、「構成パラメータ」に
bot_suspect、「値」に{{JS - bot判定}}を入れて保存する - GA4の「管理」→「データの表示」→「カスタム定義」で、範囲を「イベント」にしてカスタムディメンション
bot_suspectを作る - GTMを公開し、1〜2週間待つ
- 探索で「bot_suspect」と「国」「画面の解像度」を並べ、
trueの行が増えた国のbotと重なっているか、社内や実際のお客さんが混ざっていないかを見る

重なりが確かめられたら、止めます。
- 「トリガー」の「新規」を押し、タイプで「カスタム イベント」を選ぶ
- イベント名に
.*を入れ、「正規表現一致を使用」にチェックを入れる - 「一部のカスタム イベント」を選び、
{{JS - bot判定}}がtrueに等しい、を条件にする - 名前を
除外 - bot判定にして保存する - GoogleタグとGA4のイベントタグを1つずつ開き、「トリガー」の「例外」に
除外 - bot判定を追加する - プレビューで、自分のブラウザではタグが配信され、条件に当たる場合は配信されないことを確かめてから公開する

「例外」に入れたトリガーは、配信トリガーが成立していても、その条件に一致すればタグを配信させません。カスタム イベントの .* で作るのは、配信トリガーがページビューでもクリックでも、同じタイミングで例外の判定をさせるためです。
GTMで止める方法の限界
GTMで止められるのは、GTMを読み込んで、その中のタグを動かすbotだけです。限界ははっきりしています。
1つ目に、ふつうのブラウザのふりが上手なbotは当たりません。ユーザーエージェントは自由に書き換えられ、webdriver を隠す方法も出回っています。上のコードで当たるのは、隠そうとしていない一部です。
2つ目に、GTMを通らずにGA4へデータを直接送ってくるスパムは止められません。測定IDはページのソースを開けば誰でも見られるので、GA4の受け口に直接データを送ることができます。GTMの中で何をしても、GTMを通らないデータには関係ありません。
3つ目に、判定を広げるほど人を消します。ユーザーエージェントに bot という文字が入るだけで止める書き方にすると、名前にその文字を含む端末やアプリ内ブラウザまで消えることがあります。印を付ける段階を飛ばさないのはこのためです。
サーバーで止めるほうが確実なのは、bot がページそのものを受け取る前に断れるからです。レンタルサーバーのWAFやアクセス制限、CDNのbot対策、国やIPアドレスの範囲での遮断は、GA4にもGTMにも届く前に効きます。WordPressのサーバーがApacheなら、.htaccess で特定のユーザーエージェントを断る書き方もあります。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (HeadlessChrome|PhantomJS) [NC]
RewriteRule .* - [F,L]
</IfModule>
ただし、サーバーで止めると、検索エンジンのクローラーやSNSのリンクの読み取り、社内で使っている計測ツールまで断ってしまうことがあります。サンプル料理教室では、サーバーの設定は制作会社に頼み、何を止めたかを書面でもらっておきます。
ホスト名のデータフィルタで偽のデータを止める
GA4に直接データを送りつけるスパムは、自分のサイトではないホスト名を名乗ってくることがあります。これはGA4のデータフィルタの「ウェブホスト名のトラフィック」で止められます。
- 先に探索で「ホスト名」のディメンションを行に入れ、届いているホスト名を全部書き出す
- 「管理」→「データの収集と修正」→「データフィルタ」を開く
- 「フィルタを作成」を押し、フィルタの種類で「ウェブホスト名のトラフィック」を選ぶ
- 「データフィルタ名」を
自社ホスト名のみにする - 「フィルタ オペレーション」で「一致するもののみを含める」を選ぶ
- 「マッチ タイプ」を「次で終わる」にし、ホスト名に
sample-cooking.exampleを入れる - フィルタの状態を「テスト」にして作成する
- 24〜36時間おいて、自由形式の探索でテスト中のデータフィルタ名のディメンションと「イベント名」を行に、「イベント数」を値に入れて、意図したホスト名だけが外れているかを確かめる
- 問題がなければフィルタの状態を「有効」にする

予約システム(reserve.example)にも同じGA4のタグを入れてクロスドメイン計測をしている場合は、そのホスト名も含める条件に入れます。入れ忘れると、予約の完了がまるごと消えます。データフィルタの効果は恒久的で、除外したデータはGA4でもBigQueryでも使えなくなります。テストの状態で数日見てから有効にします。
データポータルの月次レポートで除く
代表が毎月見るデータポータルの1枚は、ページ全体にフィルタを掛けておくと、毎回除く手間がなくなります。レポートの編集画面で、ページかレポート全体に「国が日本に等しい」または「国が該当国に等しくない」のフィルタを付けます。botが止んでもフィルタを残すかどうかは、メモと同じ場所に書いておきます。外すと前の月と数え方が変わるので、外す月も記録します。
BigQueryで数え直す
GA4のデータをBigQueryに書き出している場合は、書き出した分をSQLで条件を付けて数え直せます。botが来た期間の、国とホスト名ごとのページビュー数を日別に数えるSQLは次のとおりです。
SELECT
event_date,
geo.country AS country,
device.web_info.hostname AS hostname,
COUNT(*) AS page_views,
COUNT(DISTINCT user_pseudo_id) AS users
FROM
`your-project.analytics_XXXXXXXXX.events_*`
WHERE
_TABLE_SUFFIX BETWEEN '20261001' AND '20261031'
AND event_name = 'page_view'
GROUP BY
event_date, country, hostname
ORDER BY
event_date, page_views DESC;
ここで当たりを付けた国やホスト名を WHERE で除けば、bot抜きの数字が作れます。サンプル料理教室の規模なら、比較とデータポータルで足ります。
Google広告のクリックとSearch Consoleで裏を取る
Google広告では、botや自動ツールによるクリックは無効なクリックとして扱われ、料金は発生しません(請求書ができたあとに見つかった分は、払い戻しではなくクレジットで戻ります)。広告の管理画面のクリック数とGA4の広告からのセッション数が合わないとき、そこにbotは関係していないことが多く、計測の設定を先に疑います。
Search Consoleの検索のクリック数は、Google検索の結果からのクリックを数えたものです。GA4のユーザーが急に増えたとき、Search Consoleのクリック数と、GA4の「Organic Search」が以前と同じなら、人の流入は変わっていないと判断できます。
できないことと、その代わり
| できないこと | 代わりの手 |
|---|---|
| 既知のbotの自動除外をオフにする・除外した量を見る | できない。GA4に入ったものだけを見て判断する |
| 過去に入ったbotのデータを消す | 比較・探索のセグメント・データポータルのフィルタで除いて読む |
| データ削除リクエストでbotのセッションを減らす | パラメータの値が「(データ削除済み)」に置き換わるだけで、イベントは指標に数えられたまま。件数を減らす目的では使わない |
| 国やチャネルでデータフィルタを作る | データフィルタは内部トラフィック・デベロッパー トラフィック・ウェブホスト名の3種類だけ。国はサーバー側で止めるか、除いて読む |
| 「除外する参照のリスト」でbotを除く | 参照元の扱いを変えるだけで、アクセスは消えない。botには使わない |
| GTMですべてのbotを止める | GTMを通らないデータは止まらない。サーバー・CDNで止める |
| 標準レポートにセグメントを掛ける | 比較を使う。比較は保存できる |
よく詰まるところ
| 症状 | 原因 | 直し方 |
|---|---|---|
| 国で除外するデータフィルタが見つからない | データフィルタは3種類しかない | 比較・セグメント・データポータルで除いて読む。止めるならサーバー側 |
| データフィルタを作ったのに先月の数字が変わらない | データフィルタは作った時点から先にしか効かない | 過去の分は比較で除いて読む |
| データ削除リクエストを出したのにセッション数が減らない | 消えるのはパラメータの値で、イベントの数は残る | リクエストは取り消し、除いて読む方法に切り替える |
| 探索でbotを除いたのに標準レポートの数字はそのまま | セグメントは探索の中だけで効く | 標準レポートは比較、月次はデータポータルのフィルタで除く |
| 3か月前のbotを探索で確かめられない | データ保持が初期値の2か月のまま | 保持を14か月にする。消えた分は戻らない |
| GTMで止めたのにbotが減らない | botがGTMを通らずに直接送っている、または判定条件に当たっていない | bot_suspect で当たり具合を見る。直接送られているならホスト名フィルタかサーバー側で止める |
| GTMの判定で社内やお客さんのアクセスまで消えた | ユーザーエージェントの判定が広すぎる | 印を付ける段階に戻し、true になった端末を確かめて条件を狭める |
| ホスト名フィルタを有効にしたら予約の完了が消えた | 「一致するもののみを含める」に reserve.example を入れ忘れた | 条件に追加する。消えた期間のデータは戻らないので、テストの状態で必ず確かめる |
| Directが増えたのを全部botだと思った | LINEアプリ・メールアプリ・チラシのQRコードからの流入もDirectになる | エンゲージメント時間とキーイベントで見分ける。自社の配信にはUTMを付ける |
| 「除外する参照のリスト」に入れたのに数字が減らない | 参照元の扱いを変える機能で、除外の機能ではない | 入れた行は外し、比較で除いて読む |
| エンゲージメント率が急に下がった | エンゲージメントのないbotのセッションが分母に入った | 国で比較して、bot以外のエンゲージメント率が変わっていないか確かめる |
次にやること
botを見分けたら、社内のアクセスも数字から除いておくと、残った数字がそのままお客さんの動きになります。「自分と社内のアクセスを除外する:IPアドレスの除外と内部トラフィック」で、教室のWi-Fiと代表の自宅を除く手順を書いています。
ユーザー数とセッション数のどちらがbotで膨らんだのかが分かりにくいときは、「ユーザー・セッション・イベント数の違い:GA4の数字が合わない理由」で数え方の違いを確かめます。
この記事で使った自由形式とセグメントの作り方は、「探索レポートの作り方:自由形式・ファネル・経路データ探索」でもう少し詳しく書いています。
数字がおかしいのがbotではなく設定のせいかもしれないときは、「計測が取れていないときの点検手順:タグ・トリガー・フィルタ・権限を順に見る」の順で点検します。