独立站のGA4導入:イベント計測、EC計測、クロスドメイン、デバッグ
1. GA4の全体コード:gtagを直接設置するかGTM経由か
多くのチームが「gtag.jsを直接貼るか、GTMコンテナを使うか」で悩みます。判断基準はただ1つ、エンジニア以外がタグを変更する必要があるかどうかです。マーケティング担当が自分でピクセルを追加したりコンバージョンイベントを変更したりするならGTM。自分1人で運用するならgtag.jsの直接設置のほうが軽く、コンテナが1層減る分だけ故障点も減ります。
直感に反するかもしれませんが、GTMは万能薬ではありません。小規模チームがGTMを使うと、かえってデバッグの手間が増えます。タグ、トリガー、変数の3層が入れ子になるため、問題が起きたらどの層で切れたのかをまず切り分ける必要があります。B2Bの独立サイトは1年に何度もタグを変更しないので、gtagを直接設置するほうが運用コストは低くなります。GTM自体の整理方法はこちらGTMのタグ・トリガー・変数の管理。
| 実装方法 | 適した用途 | メリット | デメリット |
|---|---|---|---|
| gtag.jsを直接設置 | 1人で運用、タグが少ない | コードが短く、デバッグの経路も短い | タグ変更のたびにリリースが必要 |
| GTMコンテナ | 複数人で運用、ピクセル追加が頻繁 | マーケティング担当が自分でタグを変更 | 3層の入れ子で原因特定が難しい |
| Googleタグ(gtag統合) | GA4とAdsを同時に導入 | 1つのコードで複数プロダクトを管理 | アップグレード経路が固定される |
2. イベント計測:自動イベントとカスタムイベントの使い分け
GA4はpage_view、session_start、first_visit、scroll、click、view_search_resultsなど、いくつかのイベントを自動で収集します。これらはコードを書かなくても取得できますが、粒度が足りません。独立サイトで自分で定義すべきイベントは4つだけです。フォーム送信(generate_lead)、ファイルダウンロード(file_downloadをカスタム定義)、CTAクリック(cta_click)、動画再生(video_start)です。イベントは多ければよいわけではなく、カスタムイベントが15個を超えるとレポートが見づらくなります。
イベント名はGA4が推奨するsnake_caseを使い、すべて小文字でアンダースコア区切りにします。公開後に名前を変えると過去のデータが途切れます。GA4は古いイベント名を新しい名前に自動で対応付けできないため、イベントの変更で手動でマッピングを作成するしかなく、しかも将来のデータにしか反映されません。イベント名のルールはこちらを参照構造化データのSchemaマークアップ一覧の命名ルール。
| イベント名 | 送信タイミング | 必須パラメータ | 用途 |
|---|---|---|---|
| generate_lead | 問い合わせフォーム送信完了 | form_id、page_location | 問い合わせコンバージョン数 |
| cta_click | 電話/WhatsAppボタンのクリック | cta_type、cta_text | 問い合わせボタンの訴求力 |
| file_download | PDF/仕様書のダウンロード | file_name、file_type | コンテンツ資産の利用状況 |
| video_start | 製品動画の再生開始 | video_title | 動画エンゲージメント |
三、ECトラッキング:B2Bサイトに必要か
問い合わせ専門のB2Bサイトでは「カートもないのにECトラッキングなんて無意味」と考える人が多い。これは誤りだ。GA4のECイベントはpurchaseだけではない。view_itemやview_item_listからbegin_checkoutまで、要は「ユーザーが製品カタログをどこまで進んだか」を測る仕組みだ。オンライン決済がなくても、B2Bサイトならview_item(製品詳細ページの閲覧)とview_item_list(製品一覧ページの閲覧)は実装すべきだ。そうして初めて、どの製品ページが本当に読まれているかが分かる。
実際にオンラインで販売する場合(サンプル注文や部品注文など)、purchaseイベントにはcurrencyとvalueの2つのパラメータが必須だ。どちらか欠けるとGA4は収益を計算できない。currencyはUSDのような3文字コード、valueは数値で通貨記号は付けない。トラッキングとフォームの連携方法はこちらを参照。問い合わせフォームの信頼性とスパム対策。
| ECイベント | B2Bサイトでの実装 | 必須パラメータ | 実装しない場合の影響 |
|---|---|---|---|
| view_item | 必須 | item_id、item_name | どの製品ページが深く読まれているか分からない |
| view_item_list | 実装を推奨 | item_list_id | 製品一覧ページの成果が見えない |
| begin_checkout | カートがある場合のみ | value、currency | 購入手続きの離脱が見えない |
| purchase | オンライン決済がある場合のみ | transaction_id、value、currency | 収益を帰属できない |
四、クロスドメイン計測:サブドメインと外部決済ページの設定
独立サイトで最も多いクロスドメインの問題は、メインサイトがwww.example.comにあり、問い合わせフォームがcrm.example.comに送信される、あるいは決済がpay.example.comに遷移するケースだ。クロスドメインを設定しないと、メインサイトからサブドメインへ移動した時点でGA4は新しいセッションとして扱い、流入元も失われる。
設定方法はGA4管理画面の「データストリーム→タグ設定→ドメインのクロスドメイン計測を設定」でexample.comを追加する。ただし、第三者の決済ドメイン(stripe.comなど)は追加しないこと。あれは他人のドメインだ。設定後は必ず実測する。メインサイトからフォームでサブドメインへ移動し、DebugViewでsession_idが変わらないか確認する。CRM連携のフィールドマッピングはこちらを参照。サイトリードのCRM連携。
| クロスドメインのケース | 設定の要否 | 設定場所 | 検証方法 |
|---|---|---|---|
| wwwからblogサブドメインへ | 必要 | クロスドメインリストにexample.comを追加 | DebugViewでsession_idが変わらないことを確認 |
| メインサイトから決済サブドメインへ | 必要 | 同上 | 遷移後も流入元パラメータが保持される |
| 外部決済ページへ遷移 | 不要 | 外部ドメインは追加しない | 戻った後にセッションが再作成されないか |
| 多言語でサブディレクトリが異なる | 不要 | 同一ドメインなのでクロスドメイン不要 | パスの変化はセッションに影響しない |
五、デバッグと検証:検証しなければ実装していないのと同じ
デバッグの三種の神器は、GA4 DebugView、ChromeのGA4 Debugger拡張機能、GTMプレビューモードです。公開手順は必ず次の通りにします。まずDebugViewを開き、自分でサイト上を一周します。トップページの閲覧、商品ページ、フォーム送信、ファイルダウンロードと進み、各ステップで対応するイベントがDebugViewに表示されるか、パラメータが揃っているかを確認します。
見落としがちな検証ポイントがもう一つあります。イベントの重複排除です。フォーム送信ボタンにトリガーが二重に設定されていると、ユーザーが一度クリックしただけでgenerate_leadが2件送信され、データがそのまま倍になります。DebugViewで一度だけクリックし、イベント数がちょうど1件かどうかを確認してください。検証後は3日間リアルタイムレポートを継続して観察し、テストトラフィックだけではないことを確かめます。サイトの日次モニタリングチェックリストはこちらサイト監視とアラート。
| 検証項目 | ツール | 合格基準 | よくある失敗原因 |
|---|---|---|---|
| page_viewが発火しているか | DebugView | ページを開いて30秒以内に表示される | コードの設置場所が間違っている、またはキャッシュに阻まれている |
| カスタムイベントのパラメータ | DebugViewの詳細 | keyもvalueも空でない | 変数の取得ミスまたは未定義 |
| イベントが重複しない | DebugViewのカウント | 1回の操作につきイベント1件 | トリガーの二重設定 |
| クロスドメインでsessionが継続 | DebugView session_id | クロスドメイン後もIDが変わらない | クロスドメインの設定漏れ |
| データが本番レポートに入る | リアルタイムレポート | 翌日にデータが正常に集計される | デバッグモードを閉じ忘れてデータを汚染 |
六、公開後の月次レビュー:データのズレをどう見つけるか
GA4は導入して終わりではありません。毎月必ず一度データの健康診断を行い、次の3つの異常に注目します。セッション数が突然半分に落ちたら、ほぼ間違いなくコードがキャッシュに上書きされたか、CDNのルールが変更されています。あるカスタムイベントが2週間連続でゼロなら、ユーザーが突然操作しなくなったのではなく、トリガーが機能しなくなっています。流入元に突然未知のチャネルが増えたら、UTMが悪用されていないかを確認します。
月次レビューを公式サイト保守で毎月やる6つのことのチェックリストに入れ、毎月1日に必ず実行することをおすすめします。B2Bサイトは流入が少ないため、1週間のデータでは問題が見えません。週次で前週比、月次で前年同月比を比較して初めて異常が浮かび上がります。レビューのたびにスクリーンショットを1枚保存しておき、3か月後に見返して傾向を比べると、数字そのものを見るより役に立ちます。
| 異常シグナル | 考えられる原因 | 調査の順序 | 修正アクション |
|---|---|---|---|
| セッション数の週次比較で50%減 | コードがキャッシュされた、またはCDNルールの変更 | CDNキャッシュルールを確認→ページのソースを確認→GTMの公開履歴を確認 | キャッシュを更新、またはタグのバージョンをロールバック |
| あるカスタムイベントが2週間ゼロ | トリガーの失効、またはセレクタの変更 | DebugViewを開いて手動で1回クリック→トリガーの一致を確認 | CSSセレクタを修正、または要素を選び直す |
| 流入元に未知のチャネルが急増 | UTMの誤用、または悪意あるクローラー | ランディングページと参照元ドメインを確認→クローラーを除外 | フィルタルールを追加、またはUTMのルールを修正 |
| イベントパラメータが空になる | 変数の取得に失敗 | DebugViewで詳細を確認→変数の定義を確認 | 変数のマッピングを修正 |
FAQ よくある質問
GA4は導入からどれくらいでレポートにデータが表示されますか?
B2Bの問い合わせサイトでECをやらない場合、ECイベントは入れなくていい?
クロスドメイン設定後もsessionが切れる場合は?
カスタムイベントはいくつ作るのが適切?
GA4のDebugViewに自分のテストトラフィックが表示されない?
1日の訪問数が非常に少ない場合、GA4データに統計的な意味はある?
最後に
GA4の導入は、技術的には難しくありません。本当に難しいのは「設置後に誰が検証するか」です。多くのチームはgtagを貼った時点で完了とみなしますが、3か月後に振り返るとフォームイベントが一度も発火しておらず、それまでのデータに基づく意思決定がすべて絵に描いた餅だったと気づきます。
実施は3ステップ。第一に、グローバルコードはgtag直設置かGTMのどちらか一方にし、両方は使わない。第二に、カスタムイベントは4から8個に抑え、それぞれを1つの業務課題に対応させる。第三に、公開当日にDebugViewで全経路を確認し、3日目にリアルタイムレポートを照合し、7日目にデータ集計が正常か確認する。データ経路が通って初めて、独立サイト技術その他の最適化に測定の土台ができます。
覚えておきたい一言。GA4の計測をDebugViewで確認せずに公開するのは、電力量計を取り付けても配線しないのと同じ。明かりがつくかどうかは永遠にわかりません。
