はじめに
Googleアナリティクスのeコマース測定に関してよく聞く問題は、「トランザクションがうまく計測できていない」といったものです。
「トランザクション」はECサイトのパフォーマンスを直接的に示す数字です。このデータに欠落が生じていると、アナリティクスのコンバージョン率やROASなどの関連指標にも影響を及ぼし、ECサイトのコンテンツを評価することが難しくなります。
また、「Google広告におけるコンバージョンと、アナリティクスにおけるトランザクションに乖離がある」といった問題はよく耳にしますが、こうした問題の要因ともなります* 。
この記事では、こうしたトランザクションの問題への課題感から出発し、より広い視点からeコマースの測定不備への対処方法を整理したいと思います。
*コンバージョン数のズレのその他の要因・回避策については「[総まとめ] Google広告のコンバージョン数 vs アナリティクスのコンバージョン数」を参照してください。
対象読者
- トランザクションなどeコマースの測定に不安のある方
- Googleタグマネージャーの設定やHTMLコードの編集に抵抗感のない方
前提
Googleアナリティクスの「コンバージョン」の種類を区別する
Googleアナリティクスで「コンバージョン」と呼ばれる指標には、よく使われる「目標の完了」と、今回のトピックである「トランザクション」の2種類あります。調査にあたってはこれらを区別したうえで関係者とコミュニケーションを取ってください。
1.「目標の完了」
ビュー設定の「目標」で条件を指定することで計測できる指標です。同じセッションで何回コンバージョンを行っても1回しかカウントされません。
2.「トランザクション」(eコマースのコンバージョン)
Googleタグマネージャーでコードを設定するか、アナリティクスタグのコードを編集することで計測できる指標です(参照:e コマース トラッキングの設定)。同じセッションで複数回コンバージョンを行うと、その都度カウントされます。
Googleアナリティクスの「トランザクション」の種類を区別する
Googleアナリティクスで「トランザクション」を計測するには「eコマース」と呼ばれる設定が必要ですが、この設定には2種類の方法があります。調査にあたっては2つの方法の違いを踏まえたうえで、設定やコードを確認してください。
1.「標準のeコマース」
お客様のサイトやアプリでの購入行動を分析できます。商品やトランザクションに関する情報、平均注文額、e コマースのコンバージョン率、購入まで期間などのデータが表示されます。
2.「拡張eコマース」
上記「標準のeコマース」に加え、ショッピングのプロセスを計測できる機能が追加されたレポートです。ユーザーによるショッピング カートへの商品の追加、決済手続きの開始、購入の完了が発生したタイミングを確認できます。
※これらの設定で取得できるeコマースデータ(どういった商品に対してどんなアクションがされたかというデータ)のうち、購入の完了時に取得するデータが「トランザクション」です。
eコマース測定の流れ
以下の処理の流れ①~④のそれぞれでトランザクションを始めとするeコマース測定に問題が起こる可能性があります。
①ユーザーがECサイトページを読み込むと、HTMLに商品データが出力されます。
②専用のJavascriptが動き、eコマースデータ(商品、ページの情報)を取得します。
③Javascriptは取得したeコマースデータをアナリティクスに送信します。
④アナリティクスでは受信したeコマースデータをレポートに出力します。
設定の不備を調べる
「eコマース測定の流れ」の各ステップが成功しているか、「④→③→②→①」の順で調べていきます。
※なお、設定方法の概要については公式ドキュメントをご覧ください:「Google アナリティクスの e コマース」
✔ アナリティクスでeコマース設定が有効になっているか?
アナリティクスのe コマースの設定では、「e コマースの有効化」をオンにする必要があります。
さらに、「拡張eコマース」機能を使いたい場合、「拡張 e コマースのレポートを有効化」をオンにする必要があります。
✔ eコマースデータがアナリティクスに送信されているか?
アナリティクスでeコマース設定が有効になっていれば、アナリティクスで受信したeコマースデータをレポートに出力させることができますが、そもそもデータがECサイトからアナリティクスに送られていなければなりません。
eコマースデータがビーコンで送られているか?
ビーコンの確認方法
例えばトランザクションのIDは、ビーコンのURLパラメータ名「ti」として送られます(「標準のeコマース」「拡張eコマース」ともに同じ)。したがって、トランザクションの不備を調査するためには、この「ti」がパラメータに存在するか確認します。
- ブラウザの「デベロッパーツール≫ネットワーク」で「collect」を検索すると、アナリティクスのリクエストがヒットします。
- 詳細情報から「Query String Parameters」を確認すると、「ti (=トランザクションID)」などアナリティクスに送信している情報が確認できます(なお、トランザクションID以外のパラメータについては、「標準のeコマース」と「拡張eコマース」とで異なります)。
(その他のパラメータについてはこちらを参照:Measurement Protocol のパラメータ リファレンス≫e コマース)
↓キャプチャ:「拡張eコマース」で「トランザクションID=T12345;収益=100;アクション=purchase」を送信した結果
→ビーコンが送られており、かつ、④に問題がないならば、設定に問題はありません。それでも問題が起きているようであれば、複雑な事象が発生している可能性があります。
→ もしビーコンが送られていなければ、測定に失敗しています。次のチェック項目「eコマースデータを送信するためのコードが存在するか?」に進んでください。
eコマースデータを送信するためのコードが存在するか?
トランザクションIDをはじめとするeコマースデータを送信するには、Googleタグマネージャーのタグで送信する方法と、Javascriptのソースコードで送信する方法の2通りあります。
- Googleタグマネージャーのタグで送信する場合
もし以下タグ・変数を設定していなければ、測定したいe コマースデータを送信できません。逆に設定しているのに問題が起きるならば、次のチェック項目「✔ eコマースデータを取得するためのコードが存在するか?」に進んでください。- 「標準のe コマース」を使う場合
「ユニバーサルアナリティクスタグ」を「トラッキングタイプ = トランザクション」で設定しているか?
- 「拡張 e コマース」を使う場合
アナリティクスタグが設定されており、
かつ、その設定変数「Googleアナリティクス設定」で「拡張eコマースを有効にする」にしているか?
- 「標準のe コマース」を使う場合
- Javascriptのソースコードで送信する場合
もし以下いずれのコードも追加していなければ、測定したいe コマースデータを送信できません。逆にコードがあるのに測定できていないならば、送るべきデータが存在しない可能性があります。次のチェック項目「✔ eコマースデータを取得するためのコードが存在するか?」に進んでください。- 「標準のe コマース」を使う場合
以下eコマースデータを送信するコードがソースコードに存在するか?- analytics.jsの場合
「ga(‘ecommerce:send’);」
※参照:e コマース測定≫データの送信 - gtag.jsの場合
「gtag(‘event’, ‘purchase’, {…eコマースの商品データ…}」
※参照:gtag.js を使う e コマース
- analytics.jsの場合
- 「拡張 e コマース」を使う場合
以下eコマースデータを送信するコードがソースコードに存在するか?- analytics.jsの場合
「ga(‘send’, ‘pageview’); 」
または
「ga(‘send’ ‘event’ ‘{イベントカテゴリ}’ ‘{イベントアクション}’ ‘{イベントラベル}’)」
※参照:拡張 e コマース≫トランザクションの測定 - gtag.jsの場合
「gtag(‘event’, ‘purchase’, {…eコマースの商品データ…}」
※参照:gtag.js を使用した拡張 e コマース≫購入を測定する
- analytics.jsの場合
- 「標準のe コマース」を使う場合
✔ eコマースデータを取得するコードが正しく実装されているか?
データを取得するためのコードが存在するか?
- Googleタグマネージャーのタグで取得する場合
指定のデータレイヤー変数をHTMLに出力しているか?- 「標準のe コマース」を使う場合
以下がHTMLに出力されている(GTMのカスタムHTMLで出力されているケースもある)<script> window.dataLayer = window.dataLayer || [] dataLayer.push({ 'transactionId': '1234', 'transactionTotal': 38.26, … </script>
- 「拡張 e コマース」を使う場合
以下がHTMLに出力されている(GTMのカスタムHTMLで出力されているケースもある)<script> window.dataLayer = window.dataLayer || [] dataLayer.push({ 'ecommerce': { 'purchase': { 'actionField': { 'id': 'T12345', 'revenue': '100', ... </script>
- 「標準のe コマース」を使う場合
Javascriptのソースコードで取得する場合
もし以下いずれのコードも追加していなければ、測定したいe コマースデータを取得できません。逆にコードがあるのに測定できていないならば、取得すべきデータが存在しない可能性があります。
- 「標準のe コマース」を使う場合
以下eコマースデータを取得するコードがソースコードに存在するか?- analytics.jsの場合
「ga(‘require’, ‘ecommerce’);」
※参照:e コマース測定≫e コマース プラグインの読み込み「ga(‘ecommerce:addTransaction’, {…eコマースデータ… 」
※参照:e コマース測定≫トランザクションの追加 - gtag.jsの場合
検証不要。1つのコマンドでeコマースデータの取得・送信が完結しているため、前のチェック項目で確認済の内容です。
※参照:gtag.js を使う e コマース
- analytics.jsの場合
- 「拡張 e コマース」を使う場合
以下eコマースデータを取得するコードがソースコードに存在するか?- analytics.jsの場合
「ga(‘require’, ‘ec’); 」
※参照:拡張 e コマース≫e コマース プラグインの読み込み
「ga(‘ec:setAction’, ‘purchase’, {…eコマースデータ…」
※参照:拡張 e コマース≫トランザクションの測定 - gtag.jsの場合
検証不要。1つのコマンドでeコマースデータの取得・送信が完結しているため、前のチェック項目で確認済の内容です。
※参照:gtag.js を使用した拡張 e コマース≫購入を測定する
- analytics.jsの場合
コードがeコマースデータを取得してからビーコンを送信するという順になっているか?
- Googleタグマネージャーで取得する場合
- タグのトリガーはデータレイヤーの出力後に起動するような条件になっているか?
「Google アナリティクスの e コマース」に記載のとおり、「すべてのトランザクション情報は、データレイヤーを介して…渡される必要があります。」 したがって、データレイヤー変数に商品情報が出力されてからタグが動くという順番にする必要があります。例:タグマネージャーのタグのトリガーがページビューで、データレイヤーの出力がDOM Readyの場合
商品情報をDBからWebページに出力している場合、「ページビュー」のタイミングで商品情報が存在するのが普通です。しかし、例えばタグマネージャーのカスタムHTMLタグを使ってHTMLのデータ属性から商品情報を抜き出してdataLayer.pushするような処理をしている場合、そのデータレイヤーは「DOM Ready」のタイミング以降でしか使うことができなくなります。
したがって、eコマースデータを送信するタグのトリガー条件を「ページビュー」のタイミングにしていると、タグで送るべきデータレイヤー変数の商品情報が存在しない状態になるため、eコマースデータを送信することができません
- タグのトリガーはデータレイヤーの出力後に起動するような条件になっているか?
- Javascriptのソースコードで取得する場合
- eコマースデータを取得するコードの後にデータを送信するためのコードが処理されているか?
- 「標準のe コマース」を使う場合
以下の順番で発火するようにしてください。- 「ga(‘require’, ‘ecommerce’);」
- 「ga(‘ecommerce:addTransaction’, {…eコマースデータ…」
- 「ga(‘send’ ‘event’ …」
※参照:e コマース測定
- 「拡張 e コマース」を使う場合
- 「ga(‘require’, ‘ec’); 」
- 「ga(‘ec:setAction’, ‘purchase’, {…eコマースデータ…」
- 「ga(‘send’ ‘event’ …」
- 「標準のe コマース」を使う場合
- eコマースデータを取得するコードの後にデータを送信するためのコードが処理されているか?
まとめ
本記事のチェック項目を満たすか検証し、不備があれば修正してください。
もし、チェックに引っかからないにもかかわらずトランザクションなどのeコマースデータが測定できていなかったり、検証に骨が折れる場合は、弊社プリンシプルまでご相談いただければ幸いです。