GA4のオーディエンス作成画面のディメンション選択ナビゲーションが変更

以前のナビゲーションがアプリ(Firebase Analytics)に寄りすぎていただけかもしれませんが、オーディエンスのディメンションナビゲーションが大幅に改善されました。

 


追加でに does not系のフィルタが増えたことでGUIだけで出来ることが一気に増えました。他の選択肢も一気に増えてはいるのですが、個人的に正規表現の除外パターンがどうしても欲しくて、二の足を踏んでいたところではありました。


ディメンションの選択によってフィルタもちゃんと変わるんですね


スコープまわり、これは変更されているかどうか記憶が定かではありませんが...同一セッションイベントのスコープは無かったような気がしています。これも嬉しいですね。



分析の上でオーディエンスの絞り込みが必須なことは言うまでもありませんが今回の変更でユーザのグルーピングや分析、広告連携等に関してもだいぶ幅が出てきたのではないかと思っています。

内部トラフィックの登録画面は改善されると思うけど現在大変ですよね...

内部トラフィックの設定画面、恐らくGoogle側で今後改善されるだろうとは思うのですが、現状少し大変だなと思う点は...

  1. データストリームごとに設定する必要がある
  2. IPアドレスのメモ欄が無いのでルール名が重要となる


という2点かなぁと感じています。

1点目は今までのGoogle Analyticsですと、一回登録を行っておけば別のプロパティに適用する場合、既存のフィルタとして選択するだけで良かったわけですが、現状そのような機能が存在しないので都度データストリームごとに設定が必要となっています。

2点目のIPアドレスにメモ欄が無いというのは、昔のAWS Security Group設定を思い出しました。AWSのSecurity Groupって要するに「どのIPにどのポートへのアクセスを許可するか」などを設定する画面なのですが、IPが羅列されていても「結局そのIPはどこのIPなの?」という問題が長年あって、外部のExcelシートなどでメモしていたような記憶なのですが4、5年前くらいに「メモ欄」が登場したことでAWSのコンソール内でメモ出来るようになったわけです。

今回内部トラフィックとして例えば「東京支店」と「大阪支店」を一つの内部トラフィックとして登録してしまうと「大阪支店のIPが変更になりました」というイベントに全く対応が出来ないので結局別々にルールを登録しておく必要が出てきます。

事故を防止する視点でも、除外されっぱなしで担当者不在になり放置されたとしても気付けるようにするために。それかExcel管理みたいな前時代的な方法に頼らざるを得なくなります。

他にも今後Google側で改善されていくんだろうなと思う点は多々ありますが、今のペースでどんどん改善を続くといいなという思いです。改善途中のプロダクトは結構見ていても楽しいですし、リセラーさん達も沢山フィードバックされているんだろうなと思い、生暖かい目で見ながら楽しんでいますが。


ところで、皆さんデータストリームってどういう基準で複数作ったりしていますか?(素朴な疑問)

カスタムイベント登録を忘れていても焦らないためにコピペじゃなくて「分析」画面で登録する

 そのうち改善されるのではないかとは思うのですが、「page_view」イベントに伴ってGoogle Analyticsへ連携される

  • page_location
  • page_referrer
など、Google側が測定強化として自動的に飛ぶパラメータ。これはカスタムイベントとして登録を行う必要がありますが、忘れて何を登録すればいいんだっけ?となった場合の対処方法として
  1. helpを見て登録する(自動的に収集されるイベント)
  2. 「分析」のセグメント作成画面から登録する
という方法があるかなと思います。
もちろんGoogle側が自動的に収集しているものではなく、Googleが推奨するイベント名だったり完全にカスタムのイベント名もあると思いますが、「分析」 > セグメント作成画面だとパラメータ名入力欄にカスタムイベントとして登録が必要なパラメータには「(登録)」という文字が表示されます。

※該当のカスタムパラメータがタグの設置等でGoogleのサーバに通知されていることが必要なようです。


ここの「(登録)」のメニューを選択すると、その場で登録することができます。登録直後は利用できなさそうなので少し時間を置く必要があるかもしれませんが、コピペで間違えたり打ち間違えるよりは良いのではないかと思ったりしました。

※セグメント作成は「分析」以外でも出来るので、もしかするとそちらからもポチポチっと登録出来てしまうかもしれません。

Firebase AnalyticsのBigquery Schemaに後からWEBデータストリームを入れてもFirebase Analyticsのschemaのまま出力される

タイトルは当たり前の話といえばそれまでではあるのですがアプリとWEB、一緒に計測が統合できるということで色々本番環境にリリースしてみた結果以下の事までは分かっています。

1. FirebaseからGAを作成した場合、GAからはFirebaseが連携して見えるわけですが、GAのプロパティ名を変更してもFirebaseに影響はない

FirebaseはGCPのプロジェクト名が表示されているためGA単独で名称変更が可能です。正確にはGAのプロパティ名変更はGCPのプロジェクト名とは一切関係がないため任意に変更が可能です。データストリーム名も変更出来たらよりいいんですけどね。

2. Firebase AnalyticsにGAv4のWEBデータストリームを入れると、Firebase Analyticsのダッシュボードにもウェブデータが入ってくる

データを参照している先が一緒だからとしか言えないとは思うのですが、GAv4側の作業がFirebase Analytics側のデータにも影響を受けるということで、分析等に関しては自分でアプリ限定にするなどしなければ過去からの計測が壊れる可能性があります。

3. Firebase AnalyticsとしてBigqueryに追加していた場合、GAv4でウェブデータを追加するとBigqueryのSchemaは変化することなくFirebase Analyticsのschemaにウェブデータが入る

タイトルの件はこの内容となる訳ですが、GAv4のBigquery schemaではなくFirebase AnalyticsのBigquery schema(platform = WEB)のままであるということです。またFirebase AnalyticsのBigquery schemaの場合、問題になるのがそのイベントの発生時刻(timestamp)。これがおかしくなります。

具体的に言うと、見つけられていないだけかもしれませんがFirebase Analyticsのevent_timestampの値がsession中(?)全部同じに見えます...(せっかくBigqueryにデータを入れてもデータが使えなそう)

以下の図は全部同じ人(たぶん私)のウェブページビューログです。これはちょっとツライですね...


アプリとウェブ両方を計測するとしても、Firebase Analyticsで利用しているBigquery table側へのデータ統合ではなく新規にBigqueryへtableを作成して連携する事をする必要がありそうです。

個人的にはデータストリームごとに格納するBigqueryテーブルを分けるようになるか(ゆくゆくは出来そうなインターフェースには現在なっている)、Firebase AnalyticsのBigqueryにtimestampをちゃんと入れてほしいと思っています。

逆にGAv4でBigqueryのtableを新規作成し、連携したあとにFirebaseでアプリ連携した場合どうなるかは未検証です。恐らくFirebase側からBigqueryのtableを生成する際の動きから予測すると、新規にGCPプロジェクト名のデータセットが別に作成されるのではないか?と思ってはいます。その場合Firebase Analyticsダッシュボードに影響はあるのか無いのか、それは大変興味があります。

4. Firebase Analyticsとして作成して作成した名残の「レポート」「Firebaseレポート」の差は恐らくサイドメニューのみ

データ自体に差が無いという感じではありますが、プルダウンは残ったままです

こういう差異やサポート、リセラーさん頑張ってくださいとしか言えなくなりますね...

GAv4で正規化したURLを収集したい場合は測定強化機能をOFFにしてイベントで手動計測するしかない?

以前GAv4へpushState等履歴を使ったページビュー計測について書きましたが、その時に設定を行った"page_locationとしてURLを食わせる"ということを行うと、GAv4のGUI上でもBigquery側でも食わせた通りのURLが出力されました。

これはこれで大問題と言いますか、計測・分析ニーズにあわせて選択することになる気がしています。(対象者はほぼいないと思いますが...)

tl;dr

パラメータ無しの正規化されたキレイなURL、即ち1ページ1URLとしてGAv4に取り込むためにはGAのタグを入れるだけで自動計測されるページビューは利用せずに、自分でpage_locationに正規化URLを入れて渡す必要がありそう。(まだState changeイベントでしか検証していない)
仮想ページビューも一緒ですが、該当ページだけはイベントで計測するという設定が必要。

今回やりたいこと

UAの時は分析しやすくする用途でキレイな正規化したURLを食わせていたため、GAv4でも正規化したURLのみを食わせたい。

URLを正規化する目的

各種計測用パラメータやサイト内検索またはフィルタ等で用いられるURLのパラメータやハッシュを除外したキレイなURLとして計測をすることで、1ページ1URLとして計測しPVの算出をやりやすくしたい。

正規化されていないと分析する際に前処理が必要となりGA管理画面で表示されるグラフが意味を成さなくなったり、自分でBIダッシュボードを作る際にも頑張らないといけなくなる。

今回やりたくない事

  • page_titleを利用すればいいじゃん
    • page_titleは時々(not set)が発生してしまうため使いたくない(私自身これを改善する気が現状あまりない)
  • Bigqueryを利用するのであれば正規表現または文字列の部分一致でも構わないが、事故の可能性も考えるとなるべくやりたくない

試した事

Google Tag ManagerでSPAサイトをGAv4を用いてページビューを計測する場合、計測強化としてGAv4がpushState等もちゃんと計測してくれるとうたわれていたが、ページビューイベントが飛んでなさそうだったため、Google Tag Managerのイベントでpage_viewイベントを飛ばした。

GAv4ではpage_viewイベント計測時に一緒にpage_locationとpage_referrerパラメータを飛ばすため一緒に飛ばすようにした。


※page_locationに正規化したURLを食わせて投げている

結果の確認

きれいなURLがBigqueryに入ってた...。SPAでハッシュがついていたURLをキレイに整形してものとなります。


※他の問題も見つけちゃったけど...(この段階で分かった人はすごひ...)

以上から何が言えるのか(結論)

  • 単純にPVやユーザー数、流入数等をGAv4でも確認したい場合
    • 特にやることなく、そのままgtagでもGTMでも埋め込んでおけば良い
  • page_locationは使わない。page_pathや他の情報を利用する場合
    • こちらも特にやることないので、そのまま計測すれば良い
  • gtag.jsを利用している場合
  • GAに不必要なパラメータをページURLとして食わせたくない場合
    • 残念ながらGAv4の計測強化機能はOFFとし、ページビューイベントもすべて自分で送る事が必要となりそう
    • gtmを利用した場合はGA4設定側のタグではなくてGA4イベントタグのみの利用することになるのではないか

とはいえ、page_viewイベント以外の考慮は?ということもありますし、何とか書き換えする手段はないかな?と、もう少し悩んでから作業しようかなと思います。Bigqueryにはそのままの汚いURLでデータを格納しつつGCP内でETLを回すという手段も無くはないので、その場合は気にせずタグを埋め込むだけで良いと思います。

正規化されていない汚いURLで計測を続けるのは、のちのち結構ツライというのが今まで嫌というほど経験している事でもあるので、最終的にはイベント計測のみに切り替えるという線が個人的には現状濃厚です...。


今回のGAv4は全てが「イベント」となったため、このような設定方法が可能となるという事なのですが、UAのイベント設定とはまた違った印象が出てきますね。

(追記)
いつものメンバーで会話をしていて根本原因というか推測としては今回GTM経由でGAv4を読み込んだ場合、Universal Analyticsとは異なりgtag.jsファイルを読み込むわけではなく、Googleのエンドポイントに対して直接データを投げているということがポイントなんだと思います。

Chromeでjsの読み込みを見ると、こうなっているわけですが。今までのUniversal Analyticsの場合は「analytics.js」が読み込まれています。


ただGAv4ではgtag.jsを読み込まず、gtmのjsの中で処理を行った後にそのままgoogleのサーバへデータが送られています。

友人の「gtagがundefinedになった」という話を聞いて「やっぱり」という感じだったので、恐らくgtag.jsに依存する処理はgtm経由では全て無効ということになるのでしょう。

GAv4でBigqueryと連携しているからといって新規に追加したデータストリームは勝手に連携されない

Google Analytics v4でBigqueryへ紐付けを行っているプロパティがあり、それにデータストリームを追加したのですが、てっきりBigqueryへデータ連携が開始されていると思っていました。

Bigquery側で調べ物をすべくクエリを投げたところ...


ということでクエリを投げて終了(苦笑)。まだまだ無料枠内だしと思ってGAv4側のBigquery連携を確認


データ設定 > データストリームからは新規に作成したデータストリームは除外されていましたので編集から追加してあげないといけません。

これで私は1日無駄にしました...ので、お気をつけて...。

まぁBigqueryへのデータ保管料だったり、Bigqueryでqueryのscheduleその他分析基盤等々に色々連携している場合、勝手にリンクされて事故に繋がるほうがビジネスへのインパクトは大きいので納得の仕様ではあるのですが、確認不足でした...

b※Bigqueryのリンク設定も、のちのち広告と同様に複数プロジェクトとリンク出来るようになるんでしょうね...




Google Analytics v4のページビュー数オプション閲覧履歴取得について

これは未検証記事です。gtagを使った生タグとGTMを利用した設定を比較すべきですが、現在生タグ側の検証をしていません。(ローカルでも出来るのですが...)


前提

Google Analytics v4では「測定機能の強化」として今まで個別にイベントを設定する必要があったものについても特に設定が不要で、タグを埋めるだけでデータが取得出来るようになりました。

確認した事象

タグマネージャー(GTM)を利用した場合、「測定機能の強化」の「ページビュー数」項目で書かれている以下の部分がうまく動いていないのではないか?と思いました。
閲覧履歴のイベントに基づいてイベントを送信するかどうかを指定できます。この測定オプションでは、pushState、popState、replaceState を検知(イベントリスナー)します。

確認する事 

GTMのプレビューモードでpushStateが発生した際にページビューイベントが発火しているかどうか?

事象

GTMのプレビューでは発火しているように見えなかった。
プレビューなのでGTMが発火させたタグ以外は見えないのかな?と思ったため、次にChromeで実際にcollectが飛んでいるかを確認するも、こちらも飛んでいるように見えなかった。

生タグの gtag.js に依存しているのでは?という思いもありますが、ここは検証してみなければ何とも分からないポイントです。

現象を解消するため通常の検索履歴に関する発火を仕込みました。
GAv4のイベントで通常page_viewイベントで飛ぶはずのpage_locationとpage_referrerパラメータを追加してみましたが、page_title等実際にpage_viewイベントをフルで返してあげても良いかもしれません。(現在様子見)


※page_location実はoverride出来るのでは?と思っている...(したい

事象確認中に新たに気づいた点

GAv4のResource PriorityがLowest設定となっている関係上、実際にデータが送信されるまでの時間が長い(データ送信タイミングが非常に遅い)。


上のイメージは順にdoubleclick、GAv3、GAv4ですがGAv4のPriority設定がLowestになっており実際の送信は遅い(数秒単位で遅いように見える)

Lowest設定となっているため恐らくどこかにprefetchが書かれているのでは?と思いますが、ソースは見つけられず。HTTP status 204でデータが投げっぱなしになるからか?とも思いましたが投げて見ないと分からないので多分関係ない。

ただGAv4自体はとても処理が多くsetTimeoutとか色々複雑に絡み合ってしまっていて、実際の実行タイミングも `timer fired` ステータスとなるなどしており、なかなか事象の確認はツライところがある。

本事象もタグの発火順云々の問題とは関係なさそうなので、引き続き確認が必要かもしれない。

※本事象はいつも会話している方を通じて調べてもらう事に...。フロントからネットワーク、ブラウザ処理まわりまでの知識が多少必要そうで一応調べた事と知っている限りのことは伝えたため、リセラーの方じゃないけどGoogleまで質問が届くといいなぁ...(回答来るかは未定

(追記)本事象、setTimeoutの `5E3` って5秒(5000)ということだったんですね。たしかに。chromeでtimer firedステータスとなっていることも納得。
知識不足でしたが仕様ということでTwitter Timeline上では指摘されているようで。とりあえず解決していました。

2020年12月のGoogle Analyticsドキュメント系アップデート

更新されたドキュメントの中でも、ちょっと個人的に気になったものです。

今月、GAに関しては今までも記述されてたけど問い合わせが多いからか強調されたようなものが多かった気がします。GTMまわりはServerside tagで少し。Searchは色々書き換わった気がします。

最近GA4とUAを明示されていなかったり、GA4が強調されたものが増えたなーと思っています。あとGA4については、Googleが公式で"GA4にはこの機能はありません"と言っているものについて、GA4のダッシュボードの「この項目はじゃあ一体...」とふと思ったり、そんな事がポツポツと。

■Google Analytics help

  • UAとGA4のデータに関する対比について
    • Eventまわりのデータ取得が結構混乱を招いているということでドキュメントや例示が大幅に追加されました
    • EventについてUAはcategory、アクション、ラベルという階層を持っているけどGA4はそんな概念無いから、そもそも考え直しなさいよという内容
    • EventのactionがGA4だとevent nameとして扱われ、event_categoryとevent_labelはカスタムパラメータ扱い
    • iOSアプリの場合、GA4はイベントがバックグラウンドで通知される仕組みはあるが、UAでは無いからイベントの数が異なる事がある

■Google Search Console help

  • クロールの統計情報レポートの「データ」項目に「リソースとスコープ」の詳細追加
    • ドメイン限定であることやリダイレクトの取り扱いなどが追加
  • DiscoverのURLデータ等に関する説明追加
    • 表示は正規URLのみ
    • Discoverでクリックして掲載URLへ遷移するようなものだけ計測
  • 検索エンジン最適化(SEO)スターター ガイド
  • SEO 業者の利用を検討する
    • そういえばGoogle検索のサジェストにキーワードを表示しますとか、色々電話やらメールやら来たことがありますね。基本「へー、面白そうですね。資料メールでくださいよ」とか電話で言っちゃいます
    • あとはよく勉強会と称して開いている業者、昔提案された資料でも公開しちゃうぞ!という思いに駆られる事があります(リンク販売系