拡張 e コマース トラッキング

このドキュメントでは、Android 向け Google アナリティクス SDK v4 を使って、 アプリ内 e コマースに関連するアクションとインプレッションを測定する方法の概要を説明します。

概要

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

実装

拡張 e コマースの測定では HitBuilder クラスとその一連のメソッドを使用して、商品、インプレッション、およびプロモーションに関する e コマースデータを送る必要があります。一連の Google アナリティクス e コマースクラスは、e コマース関連情報を構築する 際にも使用できます。

拡張 e コマースでは次のことが可能です。

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

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

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

インプレッションの測定

商品のインプレッションを測定するには、Product オブジェクトを作成し、addImpression メソッドを使ってこのオブジェクトをヒットに付加して送信します。Product には 名前か ID いずれかの値を設定する必要があります。その他の値はすべてオプションで、 設定しなくてもかまいません。

Product product = new Product()
    .setId("P12345")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("Black")
    .setPosition(1)
    .setCustomDimension(1, "Member");
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addImpression(product, "Search Results");

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("searchResults");
t.send(builder.build());

getTracker メソッドの詳細については、高度な設定の説明をご覧ください。

アクションの測定

アクションを測定するには、Product オブジェクトを伴う addProduct メソッドで商品情報を追加し、ProductAction オブジェクトを伴う setProductAction メソッドで実施されているアクションを指定します。

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

Product product =  new Product()
    .setId("P12345")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("Black")
    .setPosition(1)
    .setCustomDimension(1, "Member");
ProductAction productAction = new ProductAction(ProductAction.ACTION_CLICK)
    .setProductActionList("Search Results");
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addProduct(product)
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("searchResults");
t.send(builder.build());

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

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

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

// The product from a related products section.
Product relatedProduct =  new Product()
    .setId("P12346")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("White")
    .setPosition(1);

// The product being viewed.
Product viewedProduct =  new Product()
    .setId("P12345")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("Black")
    .setPosition(1);

ProductAction productAction = new ProductAction(ProductAction.ACTION_DETAIL);
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addImpression(relatedProduct, "Related Products")
    .addProduct(viewedProduct)
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("product");
t.send(builder.build());

トランザクションの測定

トランザクションを測定するには、Product オブジェクトを伴う addProduct メソッドによって商品情報を追加し、ProductAction オブジェクトを伴う setProductAction メソッドによって購入アクションを指定します。合計収益額、税金、送料といったトランザクション単位の情報は ProductAction オブジェクトで提供します。

Product product =  new Product()
    .setId("P12345")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("black")
    .setPrice(29.20)
    .setCouponCode("APPARELSALE")
    .setQuantity(1);
ProductAction productAction = new ProductAction(ProductAction.ACTION_PURCHASE)
    .setTransactionId("T12345")
    .setTransactionAffiliation("Google Store - Online")
    .setTransactionRevenue(37.39)
    .setTransactionTax(2.85)
    .setTransactionShipping(5.34)
    .setTransactionCouponCode("SUMMER2013");
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addProduct(product)
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("transaction");
t.send(builder.build());

通貨の指定

デフォルトでは、Google アナリティクスの管理画面を介してすべてのトランザクションと商品で使用するグローバル通貨を設定できます。

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

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

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("transaction");
t.set("&cu", "EUR");  // Set tracker currency to Euros.
t.send(builder.build());

払い戻しの測定

1 件のトランザクションすべてを払い戻すには、次のように ProductAction オブジェクトを伴う setProductAction メソッドを使用して、払い戻しの対象となるトランザクション ID と払い戻しのアクション タイプを指定します。

// Refund an entire transaction.
ProductAction productAction = new ProductAction(ProductAction.ACTION_REFUND)
    .setTransactionId("T12345");  // Transaction ID is only required field for a full refund.
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("refund");
t.send(builder.build());

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

部分的な払い戻しを測定するには、次のように ProductAction オブジェクトを伴う setProductAction メソッドを使用して、払い戻しの対象となるトランザクション ID、商品 ID、商品数を指定します。

// Refund a single product.
Product product =  new Product()
    .setId("P12345")  // Product ID is required for partial refund.
    .setQuantity(1);  // Quanity is required for partial refund.
ProductAction productAction = new ProductAction(ProductAction.ACTION_REFUND)
    .setTransactionId("T12345");  // Transaction ID is required for partial refund.
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addProduct(product)
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("refundProduct");
t.send(builder.build());

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

払い戻しデータをイベントを使って送る必要があり、標準的に測定するユーザー行動にそのイベントが含まれない(ユーザーが行うイベントではない)場合は、非インタラクション イベントを使って送ることをおすすめします。これにより、指標にイベントの影響を与えずに済みます。例:

// Refund an entire transaction.
ProductAction productAction = new ProductAction(ProductAction.ACTION_REFUND)
    .setTransactionId("T12345");
HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder()
    .setProductAction(productAction)
    .setNonInteraction(true)
    .setCategory("Ecommerce")
    .setAction("Refund");

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.send(builder.build());

決済プロセスの測定

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

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

1. 決済ステップの測定

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

Step フィールド

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

Option フィールド

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

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

個々の決済ステップを測定するには、Product オブジェクトを伴う addProduct メソッドを使って商品情報を追加し、ProductAction オブジェクトを伴う setProductAction メソッドを使って決済アクションであることを示します。また、必要に応じてその決済に stepoption を設定することもできます。

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

Product product =  new Product()
    .setId("P12345")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("black")
    .setPrice(29.20)
    .setQuantity(1);
// Add the step number and additional info about the checkout to the action.
ProductAction productAction = new ProductAction(ProductAction.ACTION_CHECKOUT)
    .setCheckoutStep(1)
    .setCheckoutOptions("Visa");
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addProduct(product)
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("checkoutStep1");
t.send(builder.build());

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

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

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

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

// (On "Next" button click.)
ProductAction productAction = new ProductAction(ProductAction.ACTION_CHECKOUT_OPTIONS)
    .setCheckoutStep(1)
    .setCheckoutOptions("FedEx");
HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder()
    .setProductAction(productAction)
    .setCategory("Checkout")
    .setAction("Option");

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.send(builder.build());

// Advance to next page.

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

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

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

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

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

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

社内プロモーションのインプレッションは、一般的に最初のスクリーンビューで測定され、Promotion オブジェクトを伴う addPromotion メソッドを使ってプロモーションの詳細情報が指定されます。例:

Promotion promotion = new Promotion()
    .setId("PROMO_1234")
    .setName("Summer Sale")
    .setCreative("summer_banner2")
    .setPosition("banner_slot1");
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addPromotion(promotion);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("promotions");
t.send(builder.build());

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

社内プロモーションのクリックは、Promotion オブジェクトを伴う addPromotion メソッドと、ProductAction オブジェクトを伴う setProductAction メソッドを使って、プロモーション クリックであることを示すことで測定します。例:

Promotion promotion = new Promotion()
    .setId("PROMO_1234")
    .setName("Summer Sale")
    .setCreative("summer_banner2")
    .setPosition("banner_slot1");
ProductAction promoClickAction = new ProductAction(Promotion.ACTION_CLICK);
HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder()
    .addPromotion(promotion)
    .setProductAction(promoClickAction)
    .setCategory("Internal Promotions")
    .setAction("click")
    .setLabel("Summer Sale");

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.send(builder.build());