拡張 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 コマースデータの種類と操作

送信できる e コマースデータの種類は複数あります。

インプレッション データ

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

キー 値の型 必須 説明
id テキスト 必須*

商品 ID や SKU(例: P67890)。

* id または name のいずれかを設定する必要があります。

name テキスト 必須*

商品の名前(例: Android の T シャツ)。

* id または name のいずれかを設定する必要があります。

list テキスト 省略可 商品が属するリストやコレクション(例: 検索結果)。
list_name テキスト 省略可 商品が属するリストやコレクション(例: 検索結果)。
brand テキスト 省略可 商品に関連するブランド(例: Google)。
category テキスト 省略可 商品が属するカテゴリ(例: アパレル)。区切り文字として「/」を使って最大 5 レベルの階層を指定できます(例: アパレル/男性用/T シャツ)。
variant テキスト 省略可 商品のバリエーション(例: 黒)。
position 整数 省略可 リストやコレクションにおける商品の掲載順位(例: 2)。
list_position 整数 省略可 リストやコレクションにおける商品の掲載順位(例: 2)。
price 数値 省略可 商品の価格(例: 2,920)。

商品データ

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

キー 値の型 必須 説明
id テキスト 必須*

商品 ID や SKU(例: P67890)。

* ID または name のいずれかを設定する必要があります。

name テキスト 必須*

商品の名前(例: Android の T シャツ)。

* ID または name のいずれかを設定する必要があります。

brand テキスト 省略可 商品に関連するブランド(例: Google)。
category テキスト 省略可 商品が属するカテゴリ(例: アパレル)。区切り文字として「/」を使って最大 5 レベルの階層を指定できます(例: アパレル/男性用/T シャツ)。
variant テキスト 省略可 商品のバリエーション(例: 黒)。
price 数値 省略可 商品の価格(例: 2,920)。
quantity 整数 省略可 商品の数(例: 2)。
coupon テキスト 省略可 商品に設定されているクーポンコード(例: SUMMER_SALE13)。
position 整数 省略可 リストやコレクションにおける商品の掲載順位(例: 2)。
list_position 整数 省略可 リストやコレクションにおける商品の掲載順位(例: 2)。

プロモーション データ

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

キー 値の型 必須 説明
id テキスト 必須*

プロモーション ID(例: PROMO_1234)。

* id または name のいずれかを設定する必要があります。

name テキスト 必須*

プロモーションの名前(例: サマーセール)。

* id または name のいずれかを設定する必要があります。

creative テキスト 省略可 そのプロモーションが使われてる広告(例: summer_banner2)。
creative_name テキスト 省略可 クリエイティブの名前(例: summer_banner2)。
position テキスト 省略可 そのクリエイティブの掲載位置(例: banner_slot_1)。
creative_slot テキスト 省略可 クリエイティブ スロットの名前(例: banner_slot_1)。

アクション データ

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

キー 値の型 必須 説明
id テキスト 必須*

トランザクション ID(例: T1234)。

* アクション タイプが purchase または refund の場合は必須です。

affiliation テキスト 省略可 このトランザクションが発生したショップやアフィリエイト(例: Google Store)。
revenue 数値 省略可

トランザクションで発生した合計収益額または合計販売額(例: 1,199)。この値には、収益に合算する調整額(送料や税金など)を含めることができます。

value 数値 省略可 イベントに関連する値(収益)
tax 数値 省略可 トランザクションで発生した合計税額。
shipping 数値 省略可 トランザクションで発生した送料。
coupon テキスト 省略可 そのトランザクションで使われたクーポン。
list テキスト 省略可 対象商品が属するリスト省略可。
items 配列 省略可 関連する商品を含む配列。
step 整数 省略可 決済プロセスのステップを表す番号。checkout アクションのオプションです。
checkout_step 整数 省略可 決済プロセスのステップを表す番号。
option テキスト 省略可 checkout アクションと checkout_option アクションのオプション フィールド。決済ページのオプション情報(お支払い方法など)の説明に使用します。
checkout_option テキスト 省略可 決済オプション(選択された支払い方法)

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

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

アクション イベントの 説明
click 商品や商品リンク(1 つまたは複数の商品を表示するリンク)のクリック。
detail 商品情報の表示。
add ショッピング カートへの 1 個以上の商品の追加。
remove ショッピング カートからの 1 個以上の商品の削除。
checkout 1 個以上の商品を対象とした決済プロセスの開始。
checkout_option 任意の決済ステップに対するオプション値の送付。
purchase 1 つまたは複数の商品の販売。
refund 1 つまたは複数の商品の払い戻し。
promo_click 内部プロモーションのクリック。
add_to_cart ユーザーが 1 個以上の商品をショッピング カートに追加。
begin_checkout ユーザーが 1 個以上の商品を対象として決済プロセスを開始。
checkout_progress ユーザーが最初の決済手続きの後に決済手続きを完了。
purchase ユーザーが購入を完了。
refund ユーザーに対して 1 個以上の商品の払い戻しを完了。
remove_from_cart ユーザーがショッピング カートから 1 個以上の商品を削除。
select_content ユーザーが商品または商品のリンクをクリック。
set_checkout_option ユーザーが完了しようとしている決済手続き。
view_item ユーザーが商品の詳細を表示。
view_item_list ユーザーが 1 個以上の商品のリストを表示。
view_promotion ユーザーが内部プロモーションをクリック。
view_refund ユーザーが 1 個以上の商品の払い戻しを表示。

実装

次のセクションでは、拡張 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 には name または id の値を設定する必要があります。その他の値はすべてオプションで、設定しなくてもかまいません。

アクションの測定

アクションを測定するには、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 には name または id の値を設定する必要があります。その他の値はすべてオプションで、設定しなくてもかまいません。

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

商品のインプレッションとアクションの両方が発生する場面では、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 (number).
  '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 (number).
  'tax': '2.85',                          // Tax (number).
  'shipping': '5.34',                     // Shipping (number).
  'coupon': 'SUMMER2013'                  // Transaction coupon (string).
});

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

払い戻しの測定

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

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

該当するトランザクションがない場合、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});

決済プロセスの測定

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

  • 決済プロセスの各ステップを測定するコードを追加します。
  • 必要に応じて、決済オプションを測定するコードを追加します。
  • オプションとして、管理画面の [アナリティクス設定] の [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 (number).
      '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 には name または id の値を設定する必要があります。その他の値はすべてオプションで、 設定しなくてもかまいません。

完全なサンプルコード

以下のコードは、拡張 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 つのステップがあり、ステップはそれぞれ別のページに表示されます。

  • お支払い情報を追加する(payment.html)。
  • 配送情報を追加する(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_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 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');