ブログに戻る

ブログ

サーバーコンテナが受け取る GA4 イベントのすべて — そして、それぞれがどこから来るのか

公開 · 読了 6 分

GA4 をサーバーコンテナ経由にしても、存在するイベントの種類は変わりません。変わるのは、どのイベントが届いているかをようやく確かめられるようになることです。コンテナページは転送したイベント名をすべてカウントします。このリストは両方向に人を驚かせます。設定した覚えのないイベントが現れ、期待していたイベントが見当たらない。どちらも、各イベントの出どころを知れば説明は単純です。

Google タグがどのプロパティでも送信する 4 つのイベント

Google タグが測定 ID とともに読み込まれた瞬間から、設定なしで 4 つのイベントが流れ始めます。アナリティクス側でオフにする方法はなく、コンテナ側で要求する必要もありません。

  • page_view — ページ読み込みごとに 1 回。シングルページアプリでは、ストリームの「ページの変更」オプションが有効ならルート変更ごとに 1 回。
  • session_start — 新しいセッションの最初のヒット。セッションは 30 分間の非アクティブで終了するため、2 時間後に戻ってきた訪問者は別のセッションを開始します。
  • first_visit — ブラウザごとに 1 回、GA4 がそのブラウザから初めて見たセッションで送信されます。Cookie を消去すると再び発生します。
  • user_engagement — ページが 10 秒間フォアグラウンドにあったとき、または訪問者が操作後に離脱したときに送信されます。GA4 のエンゲージメント時間はここから来ています。

page_view しか見えないなら、タグは動いています。故障ではありません。まだ誰もページの最下部までスクロールしていないサイトというだけです。

拡張計測機能からの 9 つのイベント — そして 1 つでも受け取れるかを決めるスイッチ

GA4 の拡張計測機能は、タグなしでブラウザ内からさらに 9 つのイベントを収集します。設定場所はタグマネージャーではなくデータストリームなので、サーバーコンテナはその存在を知らないまま転送します。

それぞれに、名前から想像するより厳しい条件があります。

  • scroll — ページごとに 1 回、ページの高さの 90% が表示されたときだけ。少しスクロールしただけでは発生せず、最下部に達したときに発生します。ビューポートより短いページでは一度も発生しません。
  • click — 現在のドメイン以外への外部クリック。内部リンクは数えません。イベント名は click で、outbound パラメータが付きます。outbound_click というイベントはありません。
  • view_search_results — URL に検索クエリパラメータ(デフォルトでは q、s、search、query、keyword)を含むページ読み込み。
  • file_download — ドキュメント、アーカイブ、音声、動画、スプレッドシートの拡張子で終わるリンクのクリック。
  • form_start と form_submit — ページ上のフォームに対する最初の操作と、その送信。
  • video_start、video_progress、video_complete — 埋め込み YouTube プレーヤーのみ、しかも埋め込みで JS API が有効な場合のみ。

ここからが、何週間も奪う部分です。この 9 つはすべてストリームの拡張計測機能のマスタースイッチに依存しており、アナリティクスの管理画面ではなく Analytics Admin API 経由で作成されたストリームは、このスイッチがオフになっています。API で設定を読むと個々のトグルはすべて true を返しますが、マスタースイッチは応答に含まれません。値が false で、API は false のブール値を省略するからです。つまり設定は完全に有効に見えながら、届くのは page_view だけになります。

私たちはこれを自社のプロパティで見つけました。SignalHost はプロパティを作成する際にマスタースイッチをオンにします。別の方法で作成したプロパティで scroll が一向に届かないなら、アナリティクスでデータストリームを開き、下にある個々のトグルではなく「拡張計測機能」そのものを確認してください。

7 つの e コマースイベント — サイトが送信する場合に限る

コマースイベント — view_item_list、view_item、add_to_cart、remove_from_cart、begin_checkout、add_payment_info、purchase — はショップが本当に気にするイベントであり、このページで唯一、自動では何も送信されないイベントです。GA4 が名前と形式を定義し、サイト側がそれぞれを正確にその名前で、ecommerce オブジェクトを添えて dataLayer にプッシュしなければなりません。

標準の Shopify テーマはこれを行いません。WooCommerce のコアも行いません。行うのは dataLayer アプリやプラグインで、Shopify ではテーマのコンテナがチェックアウトページで一切読み込まれないため、チェックアウト系のイベントには Custom Pixel が必要です。SignalHost のウィザードでショッププラットフォームを選ぶと、7 つのイベントそれぞれにトリガーと GA4 イベントタグを設置するので、サイトが purchase をプッシュした瞬間にイベントは転送されます。ただし、プッシュ自体を用意するのはあなたです。次の記事で、何をインストールすべきかを正確に説明します。

コンテナページが数えているもの

コンテナを通過する計測リクエストはすべて、イベント名ごとに日単位で 400 日間カウントされます。保持するのは名前だけです。URL も、クライアント ID も、パラメータの 1 つも保持しません。だからこそ、それだけ長く保持しても安全なのです。このリストはあなたのホスト名に届いたものそのものなので、アナリティクス自身には答えられない問いに答えます。ブラウザはそもそも送信したのか?

数字が不揃いなのは当然です。ページ読み込みのすべてが page_view で、最下部まで到達した読み込みだけが scroll、10 秒を超えたセッションだけが user_engagement です。ページビュー 10 に対して scroll が 2 のサイトは、ごく普通のサイトです。

イベントが欠けているとき

ケースは 2 つあり、コンテナページで見分けられます。

コンテナのリストにイベントがない場合、サイトはそれを一度も送信していません。届いていないものをコンテナは転送できません。標準イベントならストリームの拡張計測機能のスイッチを、コマースイベントなら dataLayer へのプッシュが正しい名前で、しかるべきページで行われているかを確認してください。

コンテナのリストにはあるのにアナリティクスにない場合、イベントは届いて転送されており、問題は Google 側にあります。測定 ID の誤り、データフィルタ、見ているアカウントとは別のアカウントにあるプロパティ、あるいは単なるレポートの遅延 — リアルタイムには数秒で表示されますが、標準レポートには 1 日かかることがあります。

広告ブロッカーにデータを奪われ続けない

毎月 1 万リクエストを無期限で無料。役に立つかどうかは 4 分でわかります。