GA4

GA4 特定ページの流入元URL(参照元URL)の調べ方から分析まで 【探索・SQL】

GA4のデフォルトの集計において最も詳細な参照元情報となるのが「参照元URL」となり、探索のディメンション名では「ページの参照元 URL」と表示されている。一般的にどこから流入してきたのか?という質問はよくあるが、どのsource/mediumから流入してきたのか?と聞かれることは少ない。そのため、伝達手段としても「参照元URL」はクライアントサイドにとっても理解しやすい。一般的には「参照元」よりも「流入元」と表現されることが多いが、ここでは同一の意味として扱い、以下解説では「参照元」と統一する。

sem-report|参照元URL・LP(CVセグメント適用)

そもそも「参照元URL」とは?

GA4のレポーティングにおいてはクライアントの言うなりのままレポートを作成しても、言わんとする定義の認識が間違っていることも大いにあるため、レポートの作成に入る前に要件の定義を固めることが重要になる。例えばクライアントがいう「参照元URL」の場合「前のページ」を指していることもあるが、アナリティクスの定義としては通常「参照元URL」と言った場合、ランディングページの直前に閲覧していた自ドメイン以外のサイトのURLを指す。そのため、参照元URLと言った場合は、ランディングページ以外のページで参照元URLを抽出することはできない。このような認識のズレが起きていないかをまず確認する必要がある。

参考:参照元 URL – Google広告ヘルプ

【探索】特定ページの参照元URL

探索の設定項目

ディメンション
 ・日付
 ・ページの参照元 URL
 ・イベント名
 ・ページ ロケーション
指標
 ・セッション
フィルタ

 ・ページの参照元 URL 次の正規表現に一致 http[s]?:\/\/[^\s”]+
 ・イベント名 次と一致 session_start
 ・ページの参照元 URL 含まない 自身の参照元URL

ページの参照元は全てが取得できるわけではないため、探索レポートに空白が多く表示される。これらを除外するために、http[s]?:\/\/[^\s”]+ を設定する。

イベント名にはsession_startを設定することで、ランディングページの前のページの取得が可能なるため必須の設定となる。

ページの参照元 URLはサイト内外の両方の参照元を取得するため、自身のサイトURLを設定して除外する。

【探索】CVを達成した特定ページの参照元URL

CVを達成したセッションに限定して参照元URLを確認することで、CVを達成したセッションに限定した中での参照元URLを抽出することが可能になる。つまり、CVにつながりやすい参照元URLとページのセットを特定することができる。

セグメントの追加

セッションのセグメントを新規作成し、コンバージョンイベントを選択する。作成したセグメントを設定する。

【SQL】特定ページの参照元URL

探索はあくまでアドホック的に抽出するための道具であるため、レポーティング用途として作成するのであればBigQueryを活用する必要がある。また抽出したデータを分かりやすく可視化するためにはLooker Studioを用いる。また、Looker Studioを使うのであれば、制限のあるAPI接続を選択する必要はないため、BigQueryを使うことをデフォルトとした方がよい。以下SQLでの実装を解説する。

CREATE TEMP FUNCTION date_from() RETURNS STRING AS ('20240301');
CREATE TEMP FUNCTION exclude_url() RETURNS STRING AS ('sem-report.com');

WITH
  Referrer_URL AS (
    SELECT
      ymd,
      page_location,
      page_referrer,
      COUNT(DISTINCT user_pseudo_id) AS _uu,
      COUNT(DISTINCT ssid) AS _ssuu
    FROM (
      SELECT
        PARSE_DATE("%Y%m%d", event_date) AS ymd,
        REGEXP_REPLACE((SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location'), r"\?.*", "") AS page_location,
        (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_referrer') AS page_referrer,
        user_pseudo_id,
        CONCAT(user_pseudo_id, '-', CAST((SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id') AS STRING)) AS ssid,
      FROM
        `<project>.<dataset>.events_*`
      WHERE
        _TABLE_SUFFIX BETWEEN date_from() AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
      AND
        event_name = 'session_start'
    )
    WHERE
      NOT REGEXP_CONTAINS(page_referrer, exclude_url())
    AND
      page_referrer IS NOT NULL
    GROUP BY
      ymd,
      page_location,
      page_referrer
  )

SELECT
  *
FROM
  Referrer_URL

【SQL】CVを達成した特定ページの参照元URL

CREATE TEMP FUNCTION date_from() RETURNS STRING AS ('20230301');
CREATE TEMP FUNCTION exclude_url() RETURNS STRING AS ('sem-report.com');
CREATE TEMP FUNCTION key_event_A() RETURNS STRING AS ('CV_A');
CREATE TEMP FUNCTION key_event_B() RETURNS STRING AS ('CV_B');

WITH
  SEG_ssid AS (
    SELECT
      CONCAT(user_pseudo_id, '-', CAST(ga_session_id AS STRING)) AS ssid
    FROM (
      SELECT
          user_pseudo_id,
          (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id') AS ga_session_id
      FROM
        `<project>.<dataset>.events_*`
      WHERE
          _TABLE_SUFFIX BETWEEN date_from() AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
        AND (
            event_name = key_event_A()
          OR
            event_name = key_event_B()
        )
    )
    GROUP BY
      ssid
  ),
  SEG_Referrer_URL AS (
    SELECT
      ymd,
      page_location,
      page_referrer,
      COUNT(DISTINCT user_pseudo_id) AS _uu,
      COUNT(DISTINCT ssid) AS _ssuu,
    FROM (
      SELECT
        *
      FROM (
        SELECT
          PARSE_DATE("%Y%m%d", event_date) AS ymd,
          REGEXP_REPLACE((SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location'), r"\?.*", "") AS page_location,
          (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_referrer') AS page_referrer,
          user_pseudo_id,
          CONCAT(user_pseudo_id, '-', CAST((SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id') AS STRING)) AS ssid,
        FROM
          `<project>.<dataset>.events_*`
        WHERE
          _TABLE_SUFFIX BETWEEN date_from() AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
        AND
          event_name = 'session_start'
      ) AS event_data
      WHERE
        event_data.ssid IN (SELECT ssid FROM SEG_ssid)
    )
    WHERE
      NOT REGEXP_CONTAINS(page_referrer, exclude_url())
    AND
      page_referrer IS NOT NULL
    GROUP BY
      ymd,
      page_location,
      page_referrer
  )

SELECT
  *
FROM
  SEG_Referrer_URL

Looker Studioで参照元URLとページセットを可視化

sem-report|参照元URL・LP(CVセグメント適用)

BigQueryから可視化に必要なデータマートを作成しLooker Studioで可視化することで、CVに貢献した参照元URLとランディングページのセットが分かりやすくビジュアライズすることが可能になる。完成形のコードとLooker Studioのテンプレートは『Visual SEM Report』で公開している。

≫ 『Visual SEM Report』で提供中

参照元URLを活用した分析手法

ランディングページと参照元URLの組み合わせは散布図でビジュアライズすると直感的に傾向を掴むことができる。プロットしているのはランディングページと参照元URLを組み合わせの文字列を置いている。分析のアクションとしては広告流入だけを見ていては気付けない、LPと参照元URLの組み合わせを見付けることから始める。主に検索からの流入でCVRの高いLPと参照元URLの組み合わせがあれば、リライトを行ったり、その記事の関連記事を新規作成したり、記事広告の参考にしたりと、使い道は色々考えられるだろう。

関連記事

【GA4 SQL】初回訪問から初回CVまでの日数をBigQueryから取得

【GA4 SQL】ページごとのページビュー数をBigQueryから集計

【GA4 SQL】セッションセグメントを適用させる方法

おすすめ記事

最近の記事
おすすめ記事
  1. 【Looker Studio】GA4ランディングページのページタイトル取得

  2. 【GTM】ページ遷移(特定のページ経由)のトリガーを作成しタグを発火させる手順

  3. 【GA4 SQL】CV(申し込みページ)に到達したセッション数を集計

  1. 【検証】GA4 entrancesパラメータ

  2. 【GA4SQL】イベント・パラメータの対応一覧を確認

  3. 【検証】batch_page_id パラメータとは

PAGE TOP