拡張 e コマース

このガイドでは、analytics.js を使用して拡張 e コマースのデータを収集する方法について説明します。

概要

analytics.js 向けの拡張 e コマース プラグインを使用すると、e コマースサイトで扱う商品とショッピング ユーザーとの接点(商品のインプレッション、商品のクリック、商品情報の表示、ショッピングカートへの商品の追加、決済プロセスの開始、トランザクション、払い戻しなど)を測定できます。

e コマース プラグイン(ecommerce.js)からの移行と互換性

すでに e コマース トラッキングを実装済みで、拡張 e コマース トラッキングを開始する場合は、主に次の 2 つの方法があります。

新しいプロパティを使用する

新しく作成したプロパティに新しいトラッカーを追加して、そのプロパティで拡張 e コマースのタグ付けと有効化を行います。1 つのページから複数のプロパティにデータを送る方法については、 複数のトラッキング オブジェクトの処理方法をご覧ください。

既存のプロパティを移行する

最新の analytics.js をご利用の場合、e コマース プラグインから拡張 e コマース プラグインに移行するには、e コマース プラグインの参照を削除して、拡張 e コマースコードに置き換える必要があります。

ga.js をご利用の場合は、まず analytics.js に移行してから拡張 e コマース プラグインを使用します。

この移行によって、過去に ecommerce.js プラグインで収集されたトランザクション データや商品データが影響を受けることはありません。こうしたデータは元のプロパティとビューで引き続き参照できます。

拡張 e コマースデータの種類と操作

analytics.js で送ることができる e コマースデータの種類は、インプレッション データ商品データプロモーション データアクション データです。

インプレッション データ

インプレッション データは表示された商品に関する情報を表すもので、impressionFieldObject として参照され、次の値を含みます。

キー 値の型 必須 説明
id テキスト 必須* 商品 ID や SKU(例: P67890)。*このフィールドか name のいずれかを設定する必要があります。
name テキスト 必須* 商品の名前(例: Android の T シャツ)。*このフィールドか id のいずれかを設定する必要があります。
list テキスト いいえ 商品が属するリストやコレクション(例: 検索結果)。
brand テキスト いいえ 商品に関連するブランド(例: Google)。
category テキスト いいえ 商品が属するカテゴリ(例: アパレル)。区切り文字として「/」を使って最大 5 レベルの階層を指定できます(例: アパレル / 男性用 / T シャツ)。
variant テキスト いいえ 商品のバリエーション(例: 黒)。
position 整数 いいえ リストやコレクションにおける商品の掲載順位(例: 2)。
price 通貨 いいえ 商品の価格(例: 2,920)。

商品データ

商品データは、表示されたかショッピング カートに追加された個々の 商品を表すもので、productFieldObject として参照され、次の 値を含みます。

キー 値の型 必須 説明
id テキスト 必須* 商品 ID や SKU(例: P67890)。*このフィールドか name のいずれかを設定する必要があります。
name テキスト 必須* 商品の名前(例: Android の T シャツ)。*このフィールドか id のいずれかを設定する必要があります。
brand テキスト いいえ 商品に関連するブランド(例: Google)。
category テキスト いいえ 商品が属するカテゴリ(例: アパレル)。区切り文字として「/」を使って最大 5 レベルの階層を指定できます(例: アパレル / 男性用 / T シャツ)。
variant テキスト いいえ 商品のバリエーション(例: 黒)。
price 通貨 いいえ 商品の価格(例: 2,920)。
quantity 整数 いいえ 商品の数(例: 2)。
coupon テキスト いいえ 商品に設定されているクーポンコード(例: SUMMER_SALE13)。
position 整数 いいえ リストやコレクションにおける商品の掲載順位(例: 2)。

プロモーション データ

プロモーション データは表示されたプロモーションを表すもので、promoFieldObject として参照され、次の値を含みます。

キー 値の型 必須 説明
id テキスト 必須* プロモーション ID(例: PROMO_1234)。*このフィールドか name のいずれかを設定する必要があります。
name テキスト 必須* プロモーションの名前(例: Summer Sale)。*このフィールドか id のいずれかを設定する必要があります。
creative テキスト いいえ そのプロモーションが使われてる広告(例: summer_banner2)。
position テキスト いいえ その広告の掲載位置(例: banner_slot_1)。

アクション データ

アクション データは e コマースで発生したアクションに関する情報を表すもので、actionFieldObject として参照され、次の値を含みます。

キー 値の型 必須 説明
id テキスト 必須* トランザクション ID(例: T1234)。*purchaserefund のアクションでは必須です。
affiliation テキスト いいえ このトランザクションが発生したショップやアフィリエイト(例: Google Store)。
revenue 通貨 いいえ トランザクションで発生した合計収益額か合計販売額(例: 11.99)。この値には送料や税金など、合計収益の計算に含める調整額を設定できます。 注: revenue に値が設定されなかった場合、同じヒットのすべての商品の数量フィールドと価格フィールドを使って、値が自動的に計算されます。
tax 通貨 いいえ トランザクションで発生した合計税額。
shipping 通貨 いいえ トランザクションで発生した送料。
coupon テキスト いいえ そのトランザクションで使われたクーポン。
list テキスト いいえ 対象商品が属するリスト(省略可)。
step 整数 いいえ 決済プロセスのステップを表す番号。checkout アクションのオプションです。
option テキスト いいえ checkout アクションと checkout_option アクションのオプション フィールド。決済ページのオプション情報(お支払い方法など)を付加できます。

商品アクションとプロモーション アクション

アクションでは、Google アナリティクスに送る商品データやプロモーション データをどのように解釈するかを指定します。

アクション 説明
click 商品や商品リンク(1 個以上の商品を表示するリンク)のクリック。
detail 商品情報の表示。
add ショッピング カートへの 1 個以上の商品の追加。
remove ショッピング カートからの 1 個以上の商品の削除。
checkout 1 個以上の商品に関する決済プロセスの開始。
checkout_option 任意の決済ステップに対するオプション値の送付。
purchase 1 個以上の商品の販売。
refund 1 個以上の商品の払い戻し。
promo_click 社内プロモーションのクリック。

実装

次のセクションでは、e コマース プラグインを実装し、analytics.js ライブラリを使ってウェブサイトの e コマース アクティビティを測定する方法を説明します。

e コマース プラグインの読み込み

analytics.js ライブラリのサイズを減らすため、デフォルトでは拡張 e コマース トラッキングはライブラリ内に含まれていません。プラグインとして利用する形になるので使用前に読み込む必要があります。

拡張 e コマース プラグインを読み込むには、次のコマンドを使用します。

ga('require', 'ec');

このコマンドは必ずトラッカー オブジェクトを作成した、かつ拡張 e コマースの機能を使用するに実行してください。

拡張 e コマースデータの送信

プラグインを読み込むと、デフォルトのトラッカーに拡張 e コマース トラッキング専用の新しいコマンドがいくつか追加され、e コマースデータを送信できるようになります。

e コマース アクティビティの測定

拡張 e コマースの一般的な実装では、商品のインプレッションに加え、次のようなアクションを測定します。

  • 商品リンクのクリック
  • 商品情報の表示
  • 社内プロモーションのインプレッションとクリック
  • ショッピング カートへの商品の追加や削除
  • 商品の決済プロセスの開始
  • 購入と払い戻し

インプレッションの測定

商品のインプレッションは ec:addImpression コマンドで測定します。商品に関する詳しい情報は impressionFieldObject に追加します。

次のサンプルコードは、検索結果のリストに表示された商品のインプレッションを測定するものです。

ga('ec:addImpression', {            // Provide product details in an impressionFieldObject.
  'id': 'P12345',                   // Product ID (string).
  'name': 'Android Warhol T-Shirt', // Product name (string).
  'category': 'Apparel/T-Shirts',   // Product category (string).
  'brand': 'Google',                // Product brand (string).
  'variant': 'Black',               // Product variant (string).
  'list': 'Search Results',         // Product list (string).
  'position': 1,                    // Product position (number).
  'dimension1': 'Member'            // Custom dimension (string).
});

impressionFieldObject には nameid の値を設定する必要があります。その他の値はすべてオプションで、設定しなくてもかまいません。

アクションの測定

アクションを測定するには、productFieldObject を使った ec:addProduct コマンドで商品情報を追加し、発生している アクションec:setAction コマンドで指定します。

次のサンプルコードは、検索結果のリストに表示された商品リンクのクリックを測定するものです。

ga('ec:addProduct', {               // Provide product details in a productFieldObject.
  'id': 'P12345',                   // Product ID (string).
  'name': 'Android Warhol T-Shirt', // Product name (string).
  'category': 'Apparel',            // Product category (string).
  'brand': 'Google',                // Product brand (string).
  'variant': 'Black',               // Product variant (string).
  'position': 1,                    // Product position (number).
  'dimension1': 'Member'            // Custom dimension (string).
});

ga('ec:setAction', 'click', {       // click action.
  'list': 'Search Results'          // Product list (string).
});

productFieldObject には nameid のいずれかの値を設定する必要があります。その他の値はすべてオプションで、設定しなくてもかまいません。

インプレッションとアクションの併合

商品のインプレッションとアクションの両方を測定している場合は、1 回のヒットで 2 つをまとめて測定することが可能です。

次のサンプルコードは、商品情報を表示したアクションに、関連する商品セクションの情報を付けて測定する方法を示したものです。

// The impression from a Related Products section.
ga('ec:addImpression', {            // Provide product details in an impressionFieldObject.
  'id': 'P12345',                   // Product ID (string).
  'name': 'Android Warhol T-Shirt', // Product name (string).
  'category': 'Apparel/T-Shirts',   // Product category (string).
  'brand': 'Google',                // Product brand (string).
  'variant': 'Black',               // Product variant (string).
  'list': 'Related Products',       // Product list (string).
  'position': 1                     // Product position (number).
});

// The product being viewed.
ga('ec:addProduct', {                 // Provide product details in an productFieldObject.
  'id': 'P67890',                     // Product ID (string).
  'name': 'YouTube Organic T-Shirt',  // Product name (string).
  'category': 'Apparel/T-Shirts',     // Product category (string).
  'brand': 'YouTube',                 // Product brand (string).
  'variant': 'gray',                  // Product variant (string).
  'position': 2                       // Product position (number).
});

ga('ec:setAction', 'detail');       // Detail action.

トランザクションの測定

トランザクションを測定するには、ec:setAction コマンドを使用してアクション タイプpurchase に設定します。合計収益額、税金、送料といったトランザクション単位の情報は actionFieldObject で提供します。

ga('ec:addProduct', {               // Provide product details in an productFieldObject.
  'id': 'P12345',                   // Product ID (string).
  'name': 'Android Warhol T-Shirt', // Product name (string).
  'category': 'Apparel',            // Product category (string).
  'brand': 'Google',                // Product brand (string).
  'variant': 'black',               // Product variant (string).
  'price': '29.20',                 // Product price (currency).
  'coupon': 'APPARELSALE',          // Product coupon (string).
  'quantity': 1                     // Product quantity (number).
});

ga('ec:setAction', 'purchase', {          // Transaction details are provided in an actionFieldObject.
  'id': 'T12345',                         // (Required) Transaction id (string).
  'affiliation': 'Google Store - Online', // Affiliation (string).
  'revenue': '37.39',                     // Revenue (currency).
  'tax': '2.85',                          // Tax (currency).
  'shipping': '5.34',                     // Shipping (currency).
  'coupon': 'SUMMER2013'                  // Transaction coupon (string).
});

アクション タイプが purchaserefund の場合は、actionFieldObject で必ず id の値を設定します。その他の値はすべてオプションで、設定しなくてもかまいません。

払い戻しの測定

1 件のトランザクションすべてを払い戻すには、次のように refund アクションを設定してトランザクション ID を指定します。

// Refund an entire transaction.
ga('ec:setAction', 'refund', {
  'id': 'T12345'    // Transaction ID is only required field for full refund.
});

該当するトランザクションがない場合、refund ヒットは処理されません。

部分的な払い戻しを測定するには、次のように refund アクションを設定し、払い戻しの対象となるトランザクション ID、商品 ID、商品数を指定します。

// Refund a single product.
ga('ec:addProduct', {
  'id': 'P12345',       // Product ID is required for partial refund.
  'quantity': 1         // Quantity is required for partial refund.
});

ga('ec:setAction', 'refund', {
  'id': 'T12345',       // Transaction ID is required for partial refund.
});

払い戻しで非インタラクション イベントを使用する場合

払い戻しデータをイベントを使って送る必要があり、オンサイトで標準的に測定する行動としてイベントが含まれていない(ユーザーが開始するイベントではない)場合は、非インタラクション イベントを使って送ることをおすすめします。これにより、直帰率やサイト滞在時間といった指標がイベントの影響を受けずに済みます。次に例を示します。

ga('send', 'event', 'Ecommerce', 'Refund', {'nonInteraction': 1});

決済プロセスの測定

決済プロセスの各ステップを測定する手順は次のとおりです。

  1. 決済プロセスの各ステップを測定するトラッキング コードを追加します。
  2. 必要に応じて、決済オプションを測定するトラッキング コードを追加します。
  3. オプションとして、管理画面の [アナリティクス設定] の [e コマースの設定] で、決済目標到達プロセスのレポートに表示するわかりやすいステップ名を設定します。

1. 決済ステップの測定

決済プロセスの各ステップを測定するには、そのためのトラッキング コードを各ステップに実装し、Google アナリティクスにデータを送る必要があります。

Step フィールド

測定の対象とする決済ステップには、必ず step 値を含めます。この値は、[e コマースの設定] で指定した各ステップのラベル(名前)と決済アクションを結び付けるために使われます。

Option フィールド

決済ステップの測定時にステップに関する情報を追加する場合は、checkout アクションで option フィールドにその情報を設定します。たとえば、対象ユーザーのデフォルトのお支払い方法(例: 「Visa」)などを設定します。

個々の決済ステップの測定

個々の決済ステップを測定するには、商品ごとに ec:addProduct を使用して、ec:setAction で決済(checkout)であることを示します。 また、必要に応じて ec:setAction で別の actionFieldObject を使って stepoption で決済ステップの説明を付加します。

次のサンプルコードは、決済プロセスの最初のステップの測定方法を示したもので、1 個の商品と、お支払い方法に関する追加情報が付加されています。

ga('ec:addProduct', {               // Provide product details in an productFieldObject.
  'id': 'P12345',                   // Product ID (string).
  'name': 'Android Warhol T-Shirt', // Product name (string).
  'category': 'Apparel',            // Product category (string).
  'brand': 'Google',                // Product brand (string).
  'variant': 'black',               // Product variant (string).
  'price': '29.20',                 // Product price (currency).
  'quantity': 1                     // Product quantity (number).
});

// Add the step number and additional info about the checkout to the action.
ga('ec:setAction','checkout', {
    'step': 1,
    'option': 'Visa'
});

2. 決済オプションの測定

決済オプションを使用すると、決済に関する追加情報を測定できます。この機能は、最初のページビューで決済ステップを測定した後で、同じ決済ステップの別のオプションが指定され、追加情報が出た場合に便利です。たとえば、ユーザーが選択した配送方法を情報として追加できます。

決済オプションを測定するには、ec:setAction で決済オプション(checkout_option)であることを示し、ステップ番号とオプションの説明を含めます。

このアクションは、ユーザーが決済プロセスの次のステップに移るボタンをクリックした後に測定することをおすすめします。次に例を示します。

// (On "Next" button click)
ga('ec:setAction', 'checkout_option', {'step': 2, 'option': 'FedEx'});

ga('send', 'event', 'Checkout', 'Option', {
    hitCallback: function() {
      // advance to next page
});

3. 決済目標到達プロセスの設定

決済プロセスのステップごとに、レポートで使用するわかりやすい名前を設定できます。こうした名前を設定するには、Google アナリティクスの管理画面の [アナリティクス設定] で対象のビュー(旧プロファイル)を選択して [e コマースの設定] をクリックします。表示される e コマースの設定手順に従って、測定する個々の決済ステップに名前を設定します。

Google アナリティクス管理画面の [アナリティクス設定] にある [e コマースの設定]e コマースが有効で、決済目標到達プロセスのステップラベルが 4 つ追加されています: 1. カートの確認、2. お支払い情報の収集、3. 購入情報の確認、4. 領収書
図 1: e コマースの設定 - 決済目標到達プロセス

社内プロモーションの測定

拡張 e コマース プラグインでは、社内プロモーション(ウェブサイトの別のセクションで行っているセールを宣伝するバナー広告など)のインプレッションとクリックの測定をサポートしています。

プロモーションのインプレッション

社内プロモーションのインプレッションは、一般的にページが読み込まれたときに測定され、ec:addPromo コマンドを使って最初のページビューと共に送られます。次に例を示します。

ga('ec:addPromo', {               // Promo details provided in a promoFieldObject.
  'id': 'PROMO_1234',             // Promotion ID. Required (string).
  'name': 'Summer Sale',          // Promotion name (string).
  'creative': 'summer_banner2',   // Creative (string).
  'position': 'banner_slot1'      // Position  (string).
});

プロモーションのクリック

社内プロモーションのクリックは、promo_click アクションを設定することで測定できます。次に例を示します。

// Identify the promotion that was clicked.
ga('ec:addPromo', {
  'id': 'PROMO_1234',
  'name': 'Summer Sale',
  'creative': 'summer_banner2',
  'position': 'banner_slot1'
});

// Send the promo_click action with an event.
ga('ec:setAction', 'promo_click');
ga('send', 'event', 'Internal Promotions', 'click', 'Summer Sale');

たとえば、商品情報ページを使ってインプレッションとプロモーション クリックを測定するには、次のように最初のページビューで商品データとインプレッション データを送ってから、別のイベントでプロモーション クリックのデータを送ります。

// 1. Send product and impression data with pageview.

ga('ec:addProduct', {
  'id': 'P12345',                   // Product ID (string).
  'name': 'Android Warhol T-Shirt', // Product name (string).
  'category': 'Apparel',            // Product category (string).
  'brand': 'Google',                // Product brand (string).
  'variant': 'Black',               // Product variant (string).
  'position': 1,                    // Product position (number).
});

// The impression from the Related Products section.
ga('ec:addImpression', {
  'id': 'P12345',                   // Product ID (string).
  'name': 'Android Warhol T-Shirt', // Product name (string).
  'category': 'Apparel/T-Shirts',   // Product category (string).
  'brand': 'Google',                // Product brand (string).
  'variant': 'Black',               // Product variant (string).
  'list': 'Related Products',       // Product list (string).
  'position': 1,                    // Product position (number).
});

ga('ec:setAction', 'detail');       // Detail action.

ga('send', 'pageview');             // Send the product data with initial pageview.

// 2. Send the promo click data when the promo click occurs.

// Call this function when promo click occurs.
function onPromoClick() {
  ga('ec:addPromo', {
    'id': 'PROMO_1234',
    'name': 'Summer Sale',
    'creative': 'summer_banner2',
    'position': 'banner_slot1'
  });

  // Send the promo_click action with an event.
  ga('ec:setAction', 'promo_click');
  ga('send', 'event', 'Internal Promotions', 'click', 'Summer Sale');
}

promoFieldObject には nameid のいずれかの値を設定する必要があります。その他の値はすべてオプションで、設定しなくてもかまいません。

完全なサンプルコード

以下のコードは、拡張 e コマース プラグインを使って 1 個の商品の e コマースのライフサイクル(最初のインプレッションからトランザクションまで)を測定する方法を示したものです。

商品インプレッションの測定

たとえば、ユーザーが検索結果のリスト上で初めて対象商品を目にしたとしましょう。この商品のインプレッションを測定するには、次のように ec:addImpression コマンドを使って impressionFieldObject に商品情報を含めます。

ga('create', 'UA-XXXXX-Y');
ga('require', 'ec');

ga('ec:addImpression', {
  'id': 'P12345',                   // Product details are provided in an impressionFieldObject.
  'name': 'Android Warhol T-Shirt',
  'category': 'Apparel/T-Shirts',
  'brand': 'Google',
  'variant': 'black',
  'list': 'Search Results',
  'position': 1                     // 'position' indicates the product position in the list.
});

ga('ec:addImpression', {
  'id': 'P67890',
  'name': 'YouTube Organic T-Shirt',
  'category': 'Apparel/T-Shirts',
  'brand': 'YouTube',
  'variant': 'gray',
  'list': 'Search Results',
  'position': 2
});

ga('send', 'pageview');              // Send product impressions with initial pageview.

商品クリックの測定

次に、ユーザーがこの商品に興味を示し、商品リストをクリックして、この商品の詳細情報を表示しました。

この商品クリックを測定するには、次のように ec:addProductec:setAction を使用します。

// Called when a link to a product is clicked.
function onProductClick() {
  ga('ec:addProduct', {
    'id': 'P12345',
    'name': 'Android Warhol T-Shirt',
    'category': 'Apparel',
    'brand': 'Google',
    'variant': 'black',
    'position': 1
  });
  ga('ec:setAction', 'click', {list: 'Search Results'});

  // Send click with an event, then send user to product page.
  ga('send', 'event', 'UX', 'click', 'Results', {
    hitCallback: function() {
      document.location = '/product_details?id=P12345';
    }
  });
}

この場合、商品リンクは次のようなコードで実装できます。

<a href="/next-page.html"
   onclick="onProductClick(); return !ga.loaded;">Android Warhol T-Shirt</a>

商品情報の表示の測定

商品リストをクリックしたユーザーが、商品情報ページを閲覧しました。

この商品情報の表示を測定するには、次のように ec:addProductec:setAction を使って detail アクションを指定します。

ga('create', 'UA-XXXXX-Y');
ga('require', 'ec');

ga('ec:addProduct', {
  'id': 'P12345',
  'name': 'Android Warhol T-Shirt',
  'category': 'Apparel',
  'brand': 'Google',
  'variant': 'black'
});

ga('ec:setAction', 'detail');

ga('send', 'pageview');       // Send product details view with the initial pageview.

カートへの追加や削除の測定

ユーザーが商品をショッピング カートに追加して、購入する意向を示しました。

ショッピング カートへの商品の追加や削除を測定するには、次のように ec:addProduct を使ってアクション タイプに addremove を設定します。

// Called when a product is added to a shopping cart.
function addToCart(product) {
  ga('ec:addProduct', {
    'id': product.id,
    'name': product.name,
    'category': product.category,
    'brand': product.brand,
    'variant': product.variant,
    'price': product.price,
    'quantity': product.qty
  });
  ga('ec:setAction', 'add');
  ga('send', 'event', 'UX', 'click', 'add to cart');     // Send data using an event.
}

決済プロセスの測定

ユーザーの決済プロセスに進む準備ができました。この例では、決済プロセスには次の 2 つのステップがあり、ステップはそれぞれ別のページに表示されます。

  1. お支払い情報を追加する(payment.html)。
  2. 配送情報を追加する(shipping.html)。

必要に応じて、管理画面の [アナリティクス設定] の [e コマースの設定] で、決済目標到達プロセスを適切に設定していることを確認します。例:

Google アナリティクス管理画面の [アナリティクス設定] にある [e コマースの設定]e コマースが有効で、決済目標到達プロセスのステップラベルが追加されています: 1. お支払い情報、2. 配送の詳細
図 2: e コマースの設定 - 決済目標到達プロセス

ステップ 1 - お支払い

決済の最初のステップを測定するには、次のようにショッピング カートのすべての商品について ec:addProduct を使用して、ec:setAction で決済(checkout)であることを示します。ec:setAction では actionFieldObject を引数として、その決済ステップの情報(ステップ番号と、option フィールドに含まれたデフォルトのお支払い方法に関する追加情報)を表します。

ga('create', 'UA-XXXXX-Y');
ga('require', 'ec');

/**
 * Called when the user begins the checkout process.
 * @param {Array} cart An array representing the user's shopping cart.
 */
function checkout(cart) {
  for(var i = 0; i < cart.length; i++) {
    var product = cart[i];
    ga('ec:addProduct', {
      'id': product.id,
      'name': product.name,
      'category': product.category,
      'brand': product.brand,
      'variant':  product.variant,
      'price': product.price,
      'quantity': product.qty
    });
  }
}

// In the case of checkout actions, an additional actionFieldObject can
// specify a checkout step and option.
ga('ec:setAction','checkout', {
    'step': 1,            // A value of 1 indicates this action is first checkout step.
    'option': 'Visa'      // Used to specify additional info about a checkout stage, e.g. payment method.
});
ga('send', 'pageview');   // Pageview for payment.html

ステップ 2 - 配送

2 番目の決済ステップを測定するには、次のようにショッピング カートの商品ごとに ec:addProduct を使用して ec:setAction で決済(checkout)であることを示します。最初のページビューが送られたときには配送オプションに関する追加情報がなかったため、この情報はそれとは別に、checkout_option であることを示す ec:setAction を使って処理します。

Measure checkout step 2:
ga('create', 'UA-XXXXX-Y');
ga('require', 'ec');

/**
 * Called when the user begins the checkout process.
 * @param {Array} cart An array representing the user's shopping cart.
 */
function checkout(cart) {
  for(var i = 0; i < cart.length; i++) {
    var product = cart[i];
    ga('ec:addProduct', {
      'id': product.id,
      'name': product.name,
      'category': product.category,
      'brand': product.brand,
      'variant':  product.variant,
      'price': product.price,
      'quantity': product.qty
    });
  }
}

ga('ec:setAction','checkout', {'step': 2});
ga('send', 'pageview');     // Pageview for shipping.html

// Called when user has completed shipping options.
function onShippingComplete(stepNumber, shippingOption) {
  ga('ec:setAction', 'checkout_option', {
    'step': stepNumber,
    'option': shippingOption
  });

  ga('send', 'event', 'Checkout', 'Option', {
     hitCallback: function() {
       // Advance to next page.
     }
  });
}

この場合、実装コードは次のようになります。

<a href="/next-page.html"
   onclick="onShippingComplete(2, 'FedEx'); return !ga.loaded;">Continue</a>

トランザクションの測定

最後に、ユーザーが決済プロセスを完了し、購入情報を送信しました。

商品の販売を測定するには、ec:addProduct を使って個々の商品を追加し、ec:setAction で購入(purchase)であることを示します。トランザクション単位の情報(合計収益額や税金など)は、actionFieldObject で指定できます。次に例を示します。

ga('create', 'UA-XXXXX-Y');
ga('require', 'ec');

ga('ec:addProduct', {
  'id': 'P12345',
  'name': 'Android Warhol T-Shirt',
  'category': 'Apparel',
  'brand': 'Google',
  'variant': 'black',
  'price': '29.20',
  'quantity': 1
});

// Transaction level information is provided via an actionFieldObject.
ga('ec:setAction', 'purchase', {
  'id': 'T12345',
  'affiliation': 'Google Store - Online',
  'revenue': '37.39',
  'tax': '2.85',
  'shipping': '5.34',
  'coupon': 'SUMMER2013'    // User added a coupon at checkout.
});

ga('send', 'pageview');     // Send transaction data with initial pageview.

ローカル通貨の指定

デフォルトでは、Google アナリティクスの管理画面から一般的なグローバル通貨を設定でき、設定したグローバル通貨はすべてのアイテムとトランザクションで使用されます。複数の通貨でトランザクションが発生するウェブサイトでは、e コマース プラグインを使用することでトランザクションのローカル通貨を指定できます。

ローカル通貨は ISO 4217 規格で指定する必要があります。サポートされている通貨の一覧については、通貨コードのリファレンスをご覧ください。

ローカル通貨は currencyCode トラッカー プロパティを使って指定します。次のサンプルコードでは、通貨の値としてユーロが送られます。

ga('create', 'UA-XXXXX-Y');
ga('require', 'ec');

ga('set', 'currencyCode', 'EUR'); // Set tracker currency to Euros.

ga('ec:addProduct', {
  'id': 'P12345',
  'name': 'Android Warhol T-Shirt',
  'category': 'Apparel',
  'brand': 'Google',
  'variant': 'black',
  'price': '21.89',
  'quantity': 1
});

ga('ec:setAction', 'purchase', {
  id: 'T12345',
  affiliation: 'Google Store - Online',
  revenue: '28.03',
  tax: '2.14',
  shipping: '4.00',
  coupon: 'SUMMER2013'
});

ga('send', 'pageview');