NRIネットコム Blog

NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

Google 同意モードを利用してGA4の計測を行うとどうなるか検証してみた

本記事は  【デジマWeek 2023】  2日目の記事です。
📈  1日目  ▶▶ 本記事 ▶▶  3日目  📚

1年ぶりの投稿となります、高橋栞です。
UAの機能の再現や後追いではなく、GA4独自の良いところをどんどん活用できるようにGA4との友情を日々育んでいます。

今回はデジマweek 2023の2日目ということで、デジタルマーケティング事業を担う部署の中でもGAに特化したチームに所属していますので、GA4についての記事を執筆します。
これまでもGA4に関連する記事はいくつか投稿していますので、ぜひこちらもチェックしていただけると嬉しいです!

さて、ここ最近で「Cookieの利用同意バナー」や「プライバシー設定」を表示するウェブサイトを頻繁に目にするようになりました。 弊社NRIネットコムのコーポレートサイトでもプライバシー設定を導入しています。

GAとCookieの管理といえば、GA4が誕生してから追加された機能「同意モード」ですよね。
同意モードの名前はGA4が「アプリ+ウェブ」と呼ばれていた時代から耳にはしていたものの、結局何ができるの?GA4のモデリング機能ってどうやったら使えるの?と疑問がありました。
本記事では、2023年10月時点でGoogle 同意モードを利用してGA4を計測するとどうなるかについて検証していきます。

同意モード(Consent mode)とは

同意モードの概要は公式ヘルプに以下の記述があります。
簡単に言うと、ユーザーが選択したCookieの同意ステータス(同意するのか、拒否するのか)をGoogleに連携することができて、同意ステータスによってCookieを利用するタグの動作を調整できる機能です。

同意モードを使用すると、ユーザーの Cookie またはアプリの識別子の同意ステータスを Google に伝えることができます。タグでは、その動作が調整され、ユーザーによる選択が尊重されます。

同意モードでは、同意管理プラットフォーム(CMP)またはカスタム実装と連携して、ユーザーの同意を取得します(Cookie に関する同意モードのバナーなどを使用)。また、同意に関するユーザーの選択を Cookie バナーやウィジェットから受信し、Cookie の作成または読み取りを行うアナリティクス、Google 広告、第三者タグの動作を動的に調整します。

ユーザーの同意を得られない場合、Cookie は保存されず、代わりにタグを介して ping が Google に送信されます。Google アナリティクス 4 を使用している場合、コンバージョン モデリングと行動モデリングを使ってデータ収集のギャップが補完されます。

公式ヘルプ:ウェブサイトとモバイルアプリの同意モード - アナリティクス ヘルプ

以下の同意タイプを利用して、Google タグ マネージャー(以降、GTMと記載します。)で配信されるタグを管理できます。
ただし、現時点で同意モードでサポートされているのはGoogle タグで、「ad_storage」 と 「analytics_storage」のステータスに基づいてタグの動作が調整されます。

同意タイプ 説明
ad_storage 広告に関連する保存(Cookie など)を有効にします
analytics_storage 訪問時の滞在時間など、分析に関連する情報の保存(Cookie など)を有効にします
functionality_storage 言語設定など、ウェブサイトまたはアプリの機能をサポートする保存を有効にします
personalization_storage おすすめの動画など、パーソナライズに関連する保存を有効にします
security_storage 認証機能、不正行為防止、その他のユーザー保護など、セキュリティに関連する保存を有効にします

公式ヘルプ:同意タイプ - アナリティクス ヘルプ

同意モードって結局何ができるの?

前提として、GAの計測はファーストパーティのアナリティクス Cookieを使用して、ユーザーの行動やウェブサイトでの操作を記憶します。
特にCookie「_ga」では、ユーザーを識別するためのクライアントIDが記録されます。
具体的にどのようなCookieが発行されるか、役割やCookieの有効期限を知りたい方は、下記の公式ドキュメントを参照してみてください。
公式ドキュメント:ウェブサイトでの Google アナリティクスの Cookie の使用  |  ウェブ向けユニバーサル アナリティクス(gtag.js)  |  Google for Developers

ここで本題に入りますが、同意モードを利用すると、ユーザーの同意を得られなかった場合にCookieを利用せずにデータを収集します。
Cookieでユーザーの行動やウェブサイトでの操作を記憶しているのに、Cookieを利用しないとなるとどうなってしまうのか、疑問に感じている方も少なくないと思います。
また、この部分だけ読むと、ユーザーから同意を得られなかった場合にもCookieを利用せずにデータが計測可能になる仕組みと誤解していますが、同意を得られなかったデータ(以降、非同意データと表現します。)はモデリング機能で推定値として利用されます。
なので同意モードを利用したからといって、非同意データを完全に計測できるような機能ではない点に注意してください。

行動モデリングとは 

行動モデリングでは、同意を得られなかったユーザーに関するデータの欠損を、GA4の機械学習によるモデリングデータで補うことができます。 同意モードを利用して収集したデータのうちCookie を受け入れた類似ユーザーの行動を基に、非同意データをモデル化します。
Cookieの利用同意バナーやプライバシー設定をウェブサイトに導入した場合、同意モードを利用しないと、同意を得られなかったユーザーの計測は断念せざるを得ません。
例えば同意したユーザーが全体の30%の場合、実際にウェブサイトにアクセスしたユーザー数が10万であったとしてもGAの計測では3万となってしまうので、この欠損を補える行動モデリングのメリットは大きいですね。

行動モデリングを利用するには、以下の要件を満たす必要があります。

  • 同意モードが、サイトのすべてのページと、すべてのアプリ画面で有効になっている。
  • 同意ダイアログが表示される前にタグが読み込まれ、ユーザーの同意の有無にかかわらず Google のタグが必ず読み込まれるようにウェブページの同意モードを実装する必要があります(高度な実装)。
  • プロパティで、少なくとも 7 日間、1 日あたり 1,000 件以上の analytics_storage='denied' のイベントが収集されている。
  • 過去 28 日間のうち少なくとも 7 日間、1 日あたり 1,000 人以上のユーザーがプロパティで analytics_storage='granted' のイベントを送信している。
    • モデルのトレーニングが成功するためには、その 28 日間でデータしきい値に達している日数が 7 日より多く必要な場合があります。ただし、追加のデータがあってもモデルをトレーニングするのに十分ではない場合もあります。

公式ヘルプ:[GA4] 同意モードの行動モデリング - アナリティクス ヘルプ

要件を満たせたら、管理画面のプロパティ列配下の「レポート識別子」で「ブレンディング」を選択すると、モデリングデータを確認することができます。 実際のレポートの見え方は後述します。

行動モデリングでできないこと(サポートされていないこと)

非同意データはモデリング機能の推定値に利用されると記載しましたが、行動モデリングは全てのレポートで利用できる機能ではありません。
以下は現時点でサポートされていませんので注意してください。

  • オーディエンス
  • セグメントの重複、ユーザー エクスプローラ、コホート、ユーザーのライフタイムのデータ探索
  • シーケンスが定義されたセグメント
  • 維持率レポート
  • 予測指標
  • データのエクスポート(例: BigQuery Export)※モデリングデータはBigQueryにエクスポートされませんが、計測データの一部はエクスポートされます。

ただし、最近では行動モデリングのデータが経路とファネルを含むすべてのデータ探索とレポート(具体的には、経路データ探索・ファネルデータ探索・ユーザーの購入経路レポート・カスタムファネルレポート)で利用できるようになりました。
今後もアップデートがあると思われるので、モデリングに関する情報は要チェックです。

設定時の注意点とデバッグのポイント

実装については利用している同意管理プラットフォーム(CMP)によって異なる点や、gtag.jsを利用するかGTMを利用するかでも異なる点を考慮して、今回は詳細な説明は割愛します。
実装時にはGoogleとCMPの両方の公式ドキュメントを確認し、推奨の設定を行ってください。
同意モードに関するGoogleの公式ドキュメントが点々としていますが、実装については以下にまとまっていますので参考にしてください。

わかりにくいですが、gtag.jsはThe Google tag (gtag.js) API のconsentコマンド、GTMはTag Manager Consent API で同意ステータスを管理しています。
動作するAPIが異なるため、GTMのGoogle タグからgtag.jsのconsentコマンドを動作させるなどして、動作するAPIを混在させないことが推奨されている点に注意してください。

同意モードを設定してみたら、意図したタイミングで同意ステータスが更新されているか、今の自分のアクセスは同意前と認識されているか、同意後として認識されているか、などいろいろと確認したいですよね。
ユーザーにCookieの同意を選んでもらっている以上、ユーザーの選択を尊重した計測を行う必要がありますから、動作確認は必須です。
非同意データはあくまでもモデリングの材料として計測されるため、現時点ではGA4のリアルタイムレポートやDebugViewではデータが正しく送信されているかを確認することはできません。
そのため、GTMのデバッグ画面(Tag Assistant)から同意ステータスが更新されたタイミングを確認したり、GAへの送信データとしてMeasurement ProtocolというHTTP リクエストの内容を確認する必要があります。

意図したタイミングで同意ステータスが更新されているかを確認する

意図したタイミングで同意ステータスが更新されているかを確認する際は、GTMのデバッグ画面で「Consent」というイベントが発生しているかを確認します。
同意を選択する前の段階で「Consent」が発生していない場合は、同意ステータスのデフォルト値を設定できていない可能性があるので、同意モードの実装についての公式ドキュメントを参考に設定を見直してください。

「Consent」が発生していることを確認できたら、デバッグ画面の「Consent」タブを開きます。
この画面から各同意タイプの同意ステータスを確認することができます。デフォルト値が意図した状態となっているか確認してください。

また、同意ステータスのデフォルト値が適切に設定されていると、Google タグ(旧:GA4 設定タグ)を開いて下の方にある「Event Consent Configuration Status」でDefaultが「Detected」となります。
デフォルト値がセットされる前にGoogle タグが発火してしまうと、「A tag read consent state before a default was set」というエラーが発生します。その場合は、デフォルト値がセットされた後にGoogle タグが読み込まれるように設定を見直してください。

デフォルト値が正しく連携できていることが確認できたら、次はCMPツールで同意の選択を行います。
同意の選択を行うと、GTMのデバッグ画面上に再度「Consent」というイベントが発生します。
同意を選択しても「Consent」が発生していない場合は、CMPツール側で同意モードの設定ができていない可能性があるので、CMPツールの公式ドキュメントを参考に設定を見直してください。

再度「Consent」が発生していることを確認できたら、デバッグ画面の「Consent」タブを開き、同意ステータスがCMPツールで選択した同意状況と一致しているか確認します。
次のキャプチャは「ad_storage」と「analytics_storage」のみ同意した場合です。
「ad_storage」と「analytics_storage」の同意ステータスが「granted」となっていることが確認できます。 また、同意したことによって同意ステータスが更新されたので、「Event Consent Configuration Status」でUpdateが「Detected」となっています。

同意後に発火したGoogle タグを確認しても、「Event Consent Configuration Status」でUpdateが「Detected」となります。

GTMのデバッグ画面での確認方法は公式ドキュメントにもまとまっているので、下記も参考にしてください。
公式ドキュメント:Tag Assistant での同意モードのデバッグ  |  タグ  |  Google for Developers

GAに送信されているデータが意図した同意ステータスになっているか確認する

ここまで確認しても、実際にGAに送信されているデータが意図した同意ステータスで送信されているか気になりますよね。
送信されているデータがどの同意ステータスなのかは、同意のステータスであるMeasurement Protocolのパラメータ「gcs」の値から確認することができます。
Measurement ProtocolはGTMのデバッグ画面か、Chromeの検証ツール(デベロッパーモード)のNetworkタブから「collect」と検索することで確認することができます。※他のブラウザでも確認可能です。
Measurement Protocolの詳細については割愛しますが、気になる方は下記の公式ドキュメントを参考にしてください。
公式ドキュメント:Measurement Protocol の概要  |  アナリティクス Measurement Protocol  |  Google for Developers

パラメータ「gcs」の値の意味については以下の通りで、GAの計測においてはパラメータ「gcs」の値がG101G111になっている必要があります。
そもそもパラメータ「gcs」が含まれていない場合は、同意モードが有効になっていない可能性があるので設定を見直してください。

詳細
G100 ad_storage と analytics_storage の両方で同意が拒否されている。
G110 ad_storage では同意が承認され、analytics_storage では拒否されている。
G101 ad_storage では同意が拒否され、analytics_storage では承認されている。
G111 ad_storage と analytics_storage の両方で同意が承認されている。
G1-- サイトで ad_storage または analytics_storage についての同意が必要ない。

例えば、Chromeの検証ツールからad_storage と analytics_storageに同意した後のGAの計測データを見てみると、パラメータ「gcs」の値がG111となることが確認できます。

計測してみたときのクライアントIDとCookie「_ga」の中身はどうなる?

GAに送信されるクライアントIDとCookie「_ga」の値を確認してみたいと思います。
GAに送信されるクライアントIDはMeasurement Protocolのパラメータ「cid」から確認します。 GTMのデバッグ画面が見やすいのでこちらから確認していきます。

アナリティクス Cookieが未発行の場合

初回アクセスなど、GAの計測に関するCookieが未発行の場合は同意前後で以下の通りになりました。

【同意前または拒否した場合】

【同意後】

同意ステータス クライアントID Cookie「_ga」の値
同意前・拒否 684454890.1697299443 なし
同意後 684454890.1697299443 GA1.1.684454890.1697299443

わかったこととしては以下です。

  • 同意前・拒否の場合はGAに送信されるクライアントIDは発行されるものの、Cookie「_ga」は発行されない。
  • Cookie「_ga」がないので、同意前にページをリロードするとクライアントIDは毎回変わる。
  • 同意後は同意前のクライアントIDがそのまま引き継がれ、Cookie「_ga」の値はGAに送信されるクライアントIDと同じになる。

同意前の段階でアナリティクス Cookieが保持されている場合

サブドメイン違いのサイトで既にCookieが発行されてしまっているパターンなどの、同意前の段階でアナリティクス Cookieが保持されている場合は同意前後で以下の通りになりました。

【同意前または拒否した場合】

【同意後】

同意ステータス クライアントID Cookie「_ga」の値
同意前・拒否 673288875.1697300719 GA1.1.684454890.1697299443
同意後 684454890.1697299443 GA1.1.684454890.1697299443

わかったこととしては以下です。

  • 同意前・拒否の場合はGAに送信されるクライアントIDとCookie「_ga」の値が異なることから、非同意データを取得する際はCookieの値を参照していない。
  • 同意前にページを何度もリロードするとクライアントIDは毎回変わるものの、Cookie「_ga」の値は変化しない。
  • 同意後はCookieを参照するようになるので、同意前のクライアントIDが引き継がれるようになるのではなく、既存のCookie「_ga」の値を参照する。

非同意データをそのまま計測してしまうとページの読み込みが発生するたびにクライアントIDが変わり、 新規ユーザーが急増してしまうことになるので、モデリングデータとして利用されるのは納得ですね。
また、同意前後で発生するイベントは「(同意前)page_view→(同意後)user_engagement」となっていました。
同意を得られた場合は、同意後に再び「page_view」が計測されるのではなく「user_engagement」が発生するので、同意した直後のデータが2重計測のような状態になることはなさそうです。

取得したデータの見え方

GA4のレポート上の表示

GA4のレポート上で行動モデリングのデータを確認する際は、レポートの識別子を「ブレンド」にしているとレポートの中で確認することができます。 通常のレポートにモデリング化されたデータが混ざっているイメージです。

データ品質アイコンにカーソルを当てると、「サンプリング」や「しきい値」の適用と同様に確認することができます。
アイコンに表示されるメッセージは、以下の公式ヘルプに記載されています。
同意モードを利用しているのに、レポート識別子を「ブレンド」以外にしているようなうっかりミスの場合もメッセージで教えてくれるようです。
公式ヘルプ:[GA4] 同意モードの行動モデリング - アナリティクス ヘルプ

BigQueryにエクスポートされる内容

モデリングデータについてはBigQueryのエクスポートはサポート対象外ですが、生データはエクスポートされます。
同意に関するBigQueryのスキーマは以下の通りです。

同意ステータス データ型 説明
privacy_info.ads_storage STRING ユーザーに対して広告ターゲティングが有効になっているかどうか。
privacy_info.analytics_storage STRING ユーザーに対してアナリティクスのデータ保存が有効になっているかどうか。
privacy_info.uses_transient_token STRING ウェブユーザーがアナリティクスでのデータ保存を拒否し、デベロッパーがサーバーデータの一時的なトークンに基づいて Cookie を使用しない測定を有効にしているかどうか。

実際にBigQueryエクスポートしたデータの一部をお見せすると、以下のようになりました。(横に長くなってしまうので同意モードの影響がありそうな部分をピックアップしています。)
見やすいように下記のように行を着色しています。

  • 非同意データは着色無しの行
  • ads_storageとanalytics_storageに同意後のデータはオレンジ色の行
  • ads_storageは非同意で、analytics_storageのみ同意後のデータは緑色の行

ヘルプにも記載がある通り、非同意のデータはページの読み込みが発生するたびにイベント「first_visit」と「session_start」が発生していることがわかります。

永続的なユーザー ID をイベントに関連付けることにユーザーが同意していない場合、アナリティクスはイベントが同じユーザーのアクションであるかどうかを検出できません。ページが読み込まれるたびにイベントが送信されるため、該当ユーザーの first_visit イベントと session_start イベントの数が多くなります。

公式ヘルプ:[GA4] 同意モードの行動モデリング - アナリティクス ヘルプ

ユーザーがリピーターかどうかはCookie「_ga」から、セッションの情報はCookie「_ga_<container-id>」から取得しているので、Cookieを参照できないとなると生データ上では初回訪問扱いになってしまうようです。
また、クライアントIDを格納するフィールド「user_pseudo_id」とセッションIDを格納するフィールド「ga_session_id」は空欄となっていました。 Measurement ProtocolではクライアントIDは送信されているようでしたが、「user_pseudo_id」について非同意データは空欄となるようです。
非同意データはセッションの情報をCookieから参照できないためか、traffic_sourceレコードのフィールド「name」「medium」「source」についても空欄となっていました。
表には含んでいませんが、デバイス関連の情報やIPアドレスベースの位置情報などは非同意の場合でも取得できているようでした。

まとめ

今回は同意モードを利用してGA4の計測を行うとどうなるか検証してみました。
同意モードのメリットは主に以下になると思います。

  • Cookieの利用同意バナーやプライバシー設定をウェブサイトに導入した場合、同意モードを利用しないとCookieの利用に同意したユーザーしか計測できないので、データに欠損が生じて指標(ユーザー数、セッション数、ページビュー数、コンバージョン数等)に影響が出る。
  • 同意モードを利用すると行動モデリングの機能が利用可能になり、Cookieの利用に同意していないユーザーのモデリングデータから、実態に近い数値を見れるようになる。

同意モードについてなんとなくイメージはできるけど、そういえばこういう場合はどうなるの?という疑問が多々あり、なかなか導入に踏み切れない方も少なくないと思います。そんな方の後押しになれば幸いです!
また、現在でも同意モード関連の公式ドキュメントは更新されているので、アップデート情報に目が離せません。今後大きなアップデートがあればまた検証してみたいと思います。

執筆者高橋栞

Google アナリティクスを中心としたGoogle マーケティング プラットフォーム(GMP)のテクニカルサポートを担当しています。