ISSUNコンサルタントの矢崎です。
Googleアナリティクスは、2023年7月1日にユニバーサルアナリティクス(通称UA)のサポートが終了し、GA4という新しいバージョンに代わりました。
GA4で無くなった指標のひとつに「ページの価値」があります。
「ページの価値」とは、ページを修正したとき、それが成功だったのかが一目でわかるだけでなく
・収益に貢献しているページ
・売上の足をひっぱっているページ
などが瞬時に判断できる便利な指標でした。(詳細な手順はこちら)
一言で言うと、ページの価値とは、「特定のページを経由した収益 / ユニークPV数」なのですが、
この指標がGA4から無くなり、必要な場合は BIgQueryを使う必要があり、専門知識やコストが必要などハードルが高くなっています。
参考:ページの価値とは https://support.google.com/analytics/answer/2695658
そこで本記事では、ノーコスト、ノーコード、コピペで完了する「ページの価値」の再現方法を弊社webチーム(筧田・矢崎)が検証・開発いたしましたので、本稿にてご紹介させていただきます。
参考:BigQueryを使いページの価値を算出する方法はこちら
GA4でページの価値を算出するために必要な指標
ページの価値を算出するため、本記事で用意する指標は以下の4つです。
①ユーザーを識別するクライアントID
②各ページを訪れた際のタイムスタンプ
③コンバージョンの値
④各ページのユニークPV数
※①は、本来であればセッションIDを使用するのですが、ユーザー別での動線が確認できるクライアントIDを使用することで、よりユーザーがCV前に見ていたページを確認することが出来るようになるため、今回はセッションIDではなくクライアントIDを採用しています。
※④本来であればユニークPV数を使用しますが、現状BigQueryを使わずにユニークPV数を出す方法がないため、代替としてユーザー数を使用しています。
では、それぞれ用意していきましょう。
ページの価値算出に必要なもの
- GA4アカウント(編集権限以上)
- GoogleTagManagerアカウント(公開権限)
- スプレッドシート(編集権限以上)
- スプレッドシートアドオン(インストール時に下記権限を許可)
このアプリケーションがインストールされているスプレッドシートの表示と管理
Google アナリティクスのデータの参照、ダウンロード
Google アナリティクス データの表示と管理
Google アプリケーション内のプロンプトとサイドバーで、サードパーティのウェブコンテンツを表示、実行します
実装の流れ
①GoogleTagManagerでクライアントID、タイムスタンプ(日時)、コンバージョンの価値を設定
②GA4でカスタムディメンションを設定
③スプレッドシートに各指標を出力
④出力した指標からページの価値を計算する
①GTMでクライアントID、タイムスタンプ(日時)、コンバージョンの価値を設定
まず、タグマネージャーにてクライアントIDの発行タグを作成いたします。
タグマネージャーのワークスペースから「新規」をクリック
コミュニティテンプレートのギャラリーから、
GTAG GET API を選択します。
タグの名前を「クライアントID発行タグ」に設定
MeasurmentIDをGA4の測定IDに設定します。
Default Fields To Getのチェックボックスはすべて選択
トリガーに「ALL Pages」を設定し、保存します。
GA4の測定IDは設定→データストリームで表示されたデータストリームをクリックすると表示されます。
クライアントID生成をトリガーにするイベントを作成
トリガーから「新規」を選択
トリガー名を「gtagApiGet」
トリガーのタイプを「カスタムイベント」
イベント名を「gtagApiGet」
に設定し、保存します。
発行したクライアントIDを処理できるようデータレイヤーを作成
変数→「新規」を選択
変数の名前を「gtagApiResult.client_id」
変数のタイプを「データレイヤーの変数」
データレイヤーの変数名を「gtagApiResult.client_id」
に設定し保存します。
タイムスタンプの変数を設定
タイムスタンプをタグマネージャーで処理できるよう、変数を作成します。
変数→「新規」を選択
変数の名前を「time_stamp_JS」
変数のタイプを「カスタムJavascript」
内容を下記に設定し保存します。
function() {
var date = new Date();
var YYYY = date.getFullYear();
var MM = date.getMonth()+1;
var DD = date.getDate();
var HH = date.getHours();
var MI = date.getMinutes();
var SS = date.getSeconds();
var mm = ('0' + MM).slice(-2);
var dd = ('0' + DD).slice(-2);
var hh = ('0' + HH).slice(-2);
var mi = ('0' + MI).slice(-2);
var ss = ('0' + SS).slice(-2);
var time = YYYY + "/" + mm + "/" + dd + " " + hh + ":" + mi + ":" + ss;
return time;
}
GA4用のイベントを作成
タグ→「新規」を選択
タグの種類:Googleアナリティクス GA4イベント
設定タグ:なし
測定ID:GA4の計測ID
イベント名:「ページの価値計測用」
イベントパラメータに下記を設定
clientId : {{gtagApiResult.client_id}}.
※注 変数の後に必ず「.」を入力してください
「.」を入力しないと、クライアントIDが数字として扱われてしまい。
「918227259.1684217542」の「168」以降が小数点以下として省略されてしまいます。
timestamp : {{time_stamp_JS}}
URL : {{Page URL}}
配信トリガーを
カスタムイベント:gtagApiGet に設定
これで
クライアントID
タイムスタンプ
閲覧したページURL
をパラメータに格納したイベントが作成されました。
ここまで設定したらタグを公開します。
GA4のリアルタイムにてイベントが計測されているか確認しましょう
問題がなければ2~3分程で反映がされます。
※イベントが計測されない場合、下記をご確認ください。
・ここまでのタグやトリガーの設定が完了している
・タグマネージャーが「公開」されている
コンバージョンの設定
クライアントID、タイムスタンプ、コンバージョン値、通貨をパラメータとして持つイベントを作成します。
タグ→「新規」から
タグの種類:Googleアナリティクス GA4イベント
設定タグ:なし
測定ID:GA4の計測ID
イベント名:※任意のイベント名 今回は「GA4-お問い合わせクリック」としています。
イベントパラメータに下記を設定
clientId : {{gtagApiResult.client_id}}. ※注 変数の後に必ず「.」を入力してください
timestamp : {{time_stamp_JS}}
value:※任意のコンバージョンの価値 今回は「1000」としています
currency:JPY
トリガー:このイベントが発生するトリガー
※コンバージョンがeコマースのトランザクション場合、
「purchase」イベントがASPとの連携でGA4に送られているケースもあるかと思われます。
今回ご紹介している方法はGTMで設定したイベントでなければクライアントIDとタイムスタンプのパラメータを付与することが難しいため、新たにGTMでイベント名「購入」を作成し、クライアントID、タイムスタンプ、value(eコマースの売上)を設定したイベントを作成することでECサイトでも対応が可能です。
購入イベントの例
こちらも作成後にタグマネージャーを公開し、
GA4のリアルタイムでイベントが計測されているか確認しましょう
②GA4でカスタムディメンションを設定
①で設定したクライアントIDなどのパラメータは、そのままではGA4のレポートなどで見ることが出来ません。カスタムディメンションを設定し、GA4で確認出来るように設定します。
左上の「カスタムディメンションを作成」から
下記のカスタムディメンションを作成
ディメンション名:クラアントID
範囲:イベント
イベントパラメータ:clientId
ディメンション名:タイムスタンプ
範囲:イベント
イベントパラメータ:timestamp
ディメンション名:URL
範囲:イベント
イベントパラメータ:URL
設定後、GA4への反映に24~48時間程かかるため時間を置いて③のステップに移ります。
③スプレッドシートに出力
新規のスプレッドシートを作成し、
拡張機能から「アドオン」→「アドオンを取得」
GA4 Reports Builder for google analytics をインストールします。
このアドオンを使い、GA4のデータをスプレッドシートに出力します。
※インストール直後はアドオンを選択しても「ヘルプ」しか表示されないことがありますが、スプレッドシートを更新すると解決されます。
出力するデータは3種類です
①クライアントID別の時系列のページ遷移
②クライアントIDと紐づいたイベントのデータ
③各ページのユーザー数
①クライアントID別の時系列のページ遷移
インストールしたアドオンから「Create New report」を選択
出力したいGA4のアカウントを設定し、
Report name を「ユーザー動線」
Account を今回ページの価値を取得するGA4アカウント
Property を今回ページの価値を取得するGA4プロパティ
Start date をspecific date→開始する日付(この記事では2023年8月1日)
Ebd date を yesterday
Dimentions:
customEvent:clientId
customEvent:timestamp
eventName,
customEvent:URL
Metrics:
eventCount
上記設定が出来たら「Create Report」でレポートを作成します。
Report Configurationシートが作成され、レポートの設定が出力されます。
追加のレポートはC列、D列のセルを更新することで追加可能です。
②クライアントIDと紐づいたイベントのデータ
セルB3、B4、B5をセルC3、C4、C5にコピーし、
C2:コンバージョン
C6:eventValue
C7:eventName,customEvent:clientId, customEvent:timestamp
C11:1000
と入力します。
③各ページのPV数
同様に、セルB3、B4、B5をセルD3、D4、D5にコピーし、
D2:ユーザー数
D6:totalUsers
D7:date, pageLocation
D11:1000
と入力します。
ここまで入力出来たら、
拡張機能→GA4 Reports Builder for google analytics→Run reportsを選択
設定が上手く出来ていれば、ユーザー動線、コンバージョン、ユーザー数のシートが新たに作成されます。
これで必要なデータをスプレッドシートに出力することが出来ました。
④出力した指標からページの価値を計算する
スプレッドシートに「ページの価値」シートを作成
それぞれ必要なデータを処理していきます。
ページの価値を計算するシートを作成
①コンバージョンの価値が0より上のイベントを出力
A1に「価値の発生したクライアントID」と入力 ※A1:D1までわかりやすく色をつけています。
「ページの価値」シートのA2に下記関数を入力
=QUERY('コンバージョン'!A15:D,"where D > 0",1)
②価値が発生したクライアントIDの動線
CVに至り、価値が発生したクライアントIDが辿った動線を出します。
F1に「価値の発生したクライアントIDの動線」と入力 ※F1:K1までわかりやすく色をつけています。
「ページの価値」シートのF2に下記関数を入力
=QUERY('ユーザー動線'!A15:E,"where A MATCHES '^("& JOIN("|",B3:B)&")$'")
K3:Kに、コンバージョンに至る前に辿ったページにEvent Valueを付与する関数を入力
=SUMIFS($D:$D,$B:$B,F3,$C:$C,">="&G3)
=SUMIFS($D:$D,$B:$B,F4,$C:$C,">="&G4)
=SUMIFS($D:$D,$B:$B,F5,$C:$C,">="&G5)
.
.
.
③ページの価値計算
整形された情報を使い、ページの価値を算出します。
「ページの価値」シートのM2に下記関数を入力
=query('ユーザー数'!A15:C,"select B,sum(C) group by B order by SUM(C) DESC",1)
O3に各ページにのページの価値を合計する関数を入力
=ARRAYFORMULA(SUMIF(I:I,M4:M,K:K))
P3にページの価値をユーザー数で割る関数を入力
=IFERROR(ARRAYFORMULA(O3:O/N3:N),"")
これでページの価値を算出を出すことが出来ました。 お疲れ様でした。
参考:BigQueryで算出する方法
BigQueryを使用すると、上記のような作業をせずとも簡単にページの価値を出すことが出来ます。
導入にハードルはあるものの、確認出来る指標が増えるためこれを機にBigQueryの導入を検討されてもよいかもしれません。
with revenue_table as(
select
event_params[safe_offset((select index from unnest(event_params) with offset index where key = 'ga_session_id'))].value.string_value as ga_session_id,
sum(ecommerce.purchase_revenue) as revenue
from
`bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_20230101`
group by
1
order by
2 desc
),
page_table as (
select distinct
event_params[safe_offset((select index from unnest(event_params) with offset index where key = 'ga_session_id'))].value.string_value as ga_session_id,
event_params[safe_offset((select index from unnest(event_params) with offset index where key = 'page_title'))].value.string_value as page_title
from
`bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_20230101`
where
event_name = 'page_view'
),
distinct_table as(
select distinct
page_table.page_title,
page_table.ga_session_id,
revenue_table.revenue
from
page_table
left join revenue_table on page_table.ga_session_id = revenue_table.ga_session_id
)
select
page_title,
count(distinct ga_session_id) as unique_pv,
sum(revenue) as revenue,
sum(revenue)/count(distinct ga_session_id) as page_price
from
distinct_table
group by
page_title
まとめ
本記事では、BigQueryを使わずにGA4でページの価値を算出する方法について解説いたしました。
・必要なデータが分からない
・Googleアナリティクスの活用方法が分からない
・プロに解析をお願いしたい
など、WEB解析の疑問点があれば是非ISSUNにご相談くださいね。
関連記事
【無料でOK】Googleアナリティクス(UA)バックアップ手段