• Google Analyticsのeコマース計測は注文完了時にtransactionとitemを送る

Google Analyticsのeコマース計測は注文完了時にtransactionとitemを送る

公開日: 執筆:佐藤

Google Analyticsのeコマース計測では、注文が成立したときに、注文全体を表すtransactionと、購入商品を表すitemをga.jsから送ります。_addTrans()で注文を作り、商品ごとに_addItem()を加え、最後に_trackTrans()で送信します。

固定のJavaScriptを注文完了ページへ置くだけでは足りません。注文番号、合計金額、税、送料、SKU、単価、数量を、注文システムの確定値から出力する必要があります。Google Analyticsの設定と、注文データを正しく渡す実装は別の作業です。

目標は完了件数を数えeコマースは注文内容を送る

問い合わせ完了ページをGoalへ設定すれば、完了した訪問数を数えられます。eコマース計測は、完了したかどうかだけでなく、注文番号、売上、税、送料、商品、SKU、単価、数量を送ります。

計測方法 主に送る内容 向いている判断
URL destinationのGoal 完了した訪問と設定した目標値 問い合わせや資料請求の件数
Event Tracking クリックや操作の分類と値 PDF、外部リンク、画面内操作
Ecommerce Tracking transactionとitem 売上、注文、商品別の成果

注文完了ページをGoalにしたうえで、同じ注文をeコマースでも送ることはできます。ただし、Goalの目標値とeコマースの売上を同じ金額として合算しません。完了件数を見るのか、実際の注文金額と商品を見るのかを分けます。

transactionとitemは同じ注文番号で結ぶ

ga.jsのeコマースAPIリファレンスは、_addTrans()、_addItem()、_trackTrans()の三つを定義しています。

_addTrans()は、注文全体を表すtransactionを作ります。

値 役割 実装時の確認
transactionId 注文を識別する番号 注文システムの注文番号と対応するか
affiliation 店舗名や販売区分 複数店舗を分ける必要があるか
total 注文の商品合計 税と送料を含めず渡しているか
tax 税額 注文システムの確定額か
shipping 送料 無料の場合も値の扱いを決めたか
city、state、country 地域 必要な集計範囲だけを渡すか

_addItem()は、一つの商品をtransactionへ加えます。transactionIdは親のtransactionと同じ値にし、sku、商品名、カテゴリ、単価、数量を渡します。一つの注文に三商品があれば、_addItem()を三回呼びます。

SKUは商品を識別するキーです。異なる商品へ同じSKUを使うと、商品別の集計を分けられません。商品名が似ていても、在庫や価格を別に管理する商品なら、注文システム側で一意のSKUを持たせます。

三つの命令は注文確定値から順番に作る

仮に、注文システムが次の値を確定したとします。

注文番号: ORD-10025
商品合計: 12000
税: 600
送料: 500
商品: SKU-Aを2点、SKU-Bを1点

注文完了ページでは、概ね次の順でJavaScriptを出力します。

_gaq.push(['_addTrans',
  order.id,
  'online-store',
  order.productTotal,
  order.tax,
  order.shipping,
  order.city,
  order.state,
  order.country
]);

for (var i = 0; i < order.items.length; i++) {
  var item = order.items[i];
  _gaq.push(['_addItem',
    order.id,
    item.sku,
    item.name,
    item.category,
    item.unitPrice,
    item.quantity
  ]);
}

_gaq.push(['_trackTrans']);

このコードは構造を示す仮例です。orderはブラウザが自動で作る値ではありません。注文システムが保持する注文と商品を読み、HTMLへ安全に出力する処理が必要です。

_addTrans()と_addItem()は送信待ちの情報を作り、_trackTrans()がtransactionとitemをGoogle Analyticsへ送ります。_trackTrans()を先に呼べば、後から追加した商品はその送信に含まれません。順番を固定します。

金額計算は注文システムを正とする

_addItem()は、単価と数量から注文合計を計算する機能ではありません。APIリファレンスも、追加の数量計算をしないと説明しています。商品合計、税、送料、各商品の単価と数量は、注文システムで計算してから渡します。

Google Analyticsへ送る合計金額を、画面に表示された文字列からJavaScriptで再計算しません。割引、端数処理、税率、送料条件があると、注文記録とのずれが生じます。会計や受注管理の正本は注文システムに置き、Google Analyticsは集客経路と注文を分析するために使います。

同じ注文内で同じSKUを複数回追加すると、APIの一時的な商品情報は最初の値が後の値に置き換わります。同じ商品は数量へまとめ、SKUごとに一行として送ります。注文番号も、再利用しない一意の値を使います。

注文完了以外ではtransactionを送らない

カート表示、入力画面、確認画面では、まだ注文が成立していません。_trackTrans()は、購入が成立したことを送る命令です。購入ボタンを押した瞬間ではなく、注文システムが注文を受け付け、注文番号と金額を確定した後に実行します。

注文完了ページを再表示した場合や、ブラウザの戻る操作をした場合も確認します。transaction IDは注文と商品を結ぶキーですが、あらゆる再送信を防ぐ仕組みとしては扱いません。注文システム側で、どの状態を一件の成立注文として出力するかを決めます。

第三者のショッピングカートや決済後ページへ移動する構成では、注文完了ページのHTMLと注文データを変更できるかを先に確認します。Google Analytics公式のeコマースQ&Aも、第三者サイトで発生するGoalとeコマース計測を設定課題として扱っています。外部サービスにコードを置けないなら、自社サイトの設定だけでは同じ方法を実装できません。

テスト注文は注文記録と一項目ずつ照合する

公開前に、商品数と金額の異なるテスト注文を用意します。一件だけ成功させるのではなく、次の対応を確認します。

  1. 注文番号とtransactionIdが同じである。
  2. 商品合計、税、送料が注文記録と同じである。
  3. 商品数と_addItem()の回数が同じである。
  4. 各商品のSKU、単価、数量が同じである。
  5. 注文未完了、決済失敗、確認画面では_trackTrans()が動かない。

値が違う場合は、Google Analyticsのレポートだけを直そうとせず、注文データからJavaScriptへ値を渡す対応表を調べます。実装を制作会社へ依頼しても、注文項目の定義、テスト注文、照合結果、Google Analyticsアカウントは事業者側で確認できるようにします。

戻る