ユニバーサル アナリティクスの Android 向け拡張 e コマース

Google アナリティクスは、ユニバーサル アナリティクスのプロパティで拡張 e コマースをサポートしています。拡張 e コマースを使用すると、ユーザーのショッピング行動の全体を通して商品との接点を測定できます。たとえば、プロモーションのインプレッション、プロモーションのクリック、商品のインプレッション、商品のクリック、商品の詳細の表示、ショッピング カートへの商品の追加、カートからの商品の削除、購入手続きの開始、決済、払い戻しなどを測定できます。

モバイルアプリ向けの Google タグ マネージャーと Google アナリティクスの最新バージョンは、Google のモバイルアプリ プラットフォームである Firebase と連携して動作します。Firebase SDK を使用してアプリの測定を行うと、多くのモバイルアプリ レポートが自動的に生成されます。このレポートはアプリ内コードでカスタマイズし、機能を強化することもできます。これらのレポートには、iTunes の App Store や Google Play で処理されたアプリ内購入に関するデータが自動的に表示されます。e コマース関連のその他のレポートは、e コマースアプリの推奨イベントを実装することで生成できます。ショッピング行動に関する詳細なレポート(拡張 e コマースなど)は、現時点ではユニバーサル アナリティクスのプロパティでのみ利用可能です。

このドキュメントでは、モバイルアプリ向けのタグ マネージャーと Firebase SDK を使用して、拡張 e コマースのデータをユニバーサル アナリティクスのプロパティに送信する方法について説明します。

最初の手順

まずは、アプリに関する次の必須要件を整えます。

  1. アプリに Firebase と Google タグ マネージャーをインストールして設定します。Android 向けの Firebase SDK は必ずバージョン 11 以上を使用してください。
  2. 次の 2 つのパッケージをインポートします。

    • import com.google.firebase.analytics.FirebaseAnalytics.Event;
    • import com.google.firebase.analytics.FirebaseAnalytics.Param;
  3. タグ マネージャーのコンテナで、次の設定を使用して「promotions」というユーザー定義変数を作成します。

    • イベントの種類: カスタム パラメータ
    • イベント パラメータキー: promotions
    • デフォルト値: 未定義

実装

次以降のセクションでは、次のような拡張 e コマースのアクティビティを測定するために必要なパラメータを使用してイベントを記録する方法を説明します。

商品のインプレッション

商品のインプレッションを測定するには、ITEM_LIST パラメータと、関連するフィールドで定義された 1 つ以上のアイテム(商品)を使用してイベントを記録します。

// Define products with relevant parameters

Bundle product1 = new Bundle();
product1.putString( Param.ITEM_ID, "sku1234");  // ITEM_ID or ITEM_NAME is required
product1.putString( Param.ITEM_NAME, "Donut Friday Scented T-Shirt");
product1.putString( Param.ITEM_CATEGORY, "Apparel/Men/Shirts");
product1.putString( Param.ITEM_VARIANT, "Blue");
product1.putString( Param.ITEM_BRAND, "Google");
product1.putDouble( Param.PRICE, 29.99 );
product1.putString( Param.CURRENCY, "USD" );
product1.putLong( Param.INDEX, 1 );     // Position of the item in the list

Bundle product2 = new Bundle();
product2.putString( Param.ITEM_ID, "sku5678");
product2.putString( Param.ITEM_NAME, "Android Workout Capris");
product2.putString( Param.ITEM_CATEGORY, "Apparel/Women/Pants");
product2.putString( Param.ITEM_VARIANT, "Black");
product2.putString( Param.ITEM_BRAND, "Google");
product2.putDouble( Param.PRICE, 39.99 );
product2.putString( Param.CURRENCY, "USD" );
product2.putLong( Param.INDEX, 2 );

// Prepare ecommerce bundle

ArrayList <bundle>items = new ArrayList<bundle>();
items.add(product1);
items.add(product2);

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putParcelableArrayList( "items", items );

// Set relevant bundle-level parameters

ecommerceBundle.putString( Param.ITEM_LIST, "Search Results" ); // List name

// Log view_search_results or view_item_list event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.VIEW_SEARCH_RESULTS, ecommerceBundle );

この例のタグ設定:

  • タグタイプ: ユニバーサル アナリティクス
  • トラッキング タイプ: スクリーン ビュー
  • 設定するフィールド: (フィールド名)screenName(値の例)検索結果の画面
  • 拡張 e コマース機能を有効にする: true
  • データの参照先: Firebase イベント
  • トリガーの例:([カスタム] > [一部のイベント])「イベント名」が view_search_results に等しい

商品のクリック / 選択

商品のクリックを測定するには、関連するフィールドでアイテム(商品)を定義して SELECT_CONTENT イベントを記録します。

// Define product with relevant parameters

Bundle product1 = new Bundle();
product1.putString( Param.ITEM_ID, "sku1234"); // ITEM_ID or ITEM_NAME is required
product1.putString( Param.ITEM_NAME, "Donut Friday Scented T-Shirt");
product1.putString( Param.ITEM_CATEGORY, "Apparel/Men/Shirts");
product1.putString( Param.ITEM_VARIANT, "Blue");
product1.putString( Param.ITEM_BRAND, "Google");
product1.putDouble( Param.PRICE, 29.99 );
product1.putString( Param.CURRENCY, "USD" ); // Item-level currency unused today
product1.putLong( Param.INDEX, 1 ); // Position of the item in the list

// Prepare ecommerce bundle

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putBundle( "items", product1 );

// Set relevant action-level parameters

ecommerceBundle.putString( Param.ITEM_LIST, "Search Results" ); // Optional list name

// Log select_content event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.SELECT_CONTENT, ecommerceBundle );

この例のタグ設定:

  • タグタイプ: ユニバーサル アナリティクス
  • トラッキング タイプ: イベント
  • イベント カテゴリの例: e コマース
  • イベント アクションの例: 商品のクリック
  • 拡張 e コマース機能を有効にする: true
  • データの参照先: Firebase イベント
  • トリガーの例: ([カスタム] > [一部のイベント])「イベント名」が select_content に等しく、&lbrace;&lbrace;promotions&rbrace;&rbrace; が未定義に等しい

商品詳細表示

商品の詳細の表示を測定するには、関連するフィールドでアイテム(商品)を定義して VIEW_ITEM イベントを記録します。

// Define product with relevant parameters

Bundle product1 = new Bundle();
product1.putString( Param.ITEM_ID, "sku1234"); // ITEM_ID or ITEM_NAME is required
product1.putString( Param.ITEM_NAME, "Donut Friday Scented T-Shirt");
product1.putString( Param.ITEM_CATEGORY, "Apparel/Men/Shirts");
product1.putString( Param.ITEM_VARIANT, "Blue");
product1.putString( Param.ITEM_BRAND, "Google");
product1.putDouble( Param.PRICE, 29.99 );
product1.putString( Param.CURRENCY, "USD" ); // Item-level currency unused today

// Prepare ecommerce bundle

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putBundle( "items", product1 );

// Log view_item event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.VIEW_ITEM, ecommerceBundle );

この例のタグ設定:

  • タグタイプ: ユニバーサル アナリティクス
  • トラッキング タイプ: スクリーン ビュー
  • 設定するフィールド: (フィールド名)screenName(値の例)商品の詳細画面
  • 拡張 e コマース機能を有効にする: true
  • データの参照先: Firebase イベント
  • トリガーの例: ([カスタム] > [一部のイベント])「イベント名」が select_content に等しく、
  • &lbrace;&lbrace;promotions&rbrace;&rbrace; が未定義に等しい

カートへの商品の追加

ショッピング カートへの商品の追加を測定するには、関連するフィールドでアイテム(商品)を定義して ADD_TO_CART イベントを記録します。

// Define product with relevant parameters

Bundle product1 = new Bundle();
product1.putString( Param.ITEM_ID, "sku1234"); // ITEM_ID or ITEM_NAME is required
product1.putString( Param.ITEM_NAME, "Donut Friday Scented T-Shirt");
product1.putString( Param.ITEM_CATEGORY, "Apparel/Men/Shirts");
product1.putString( Param.ITEM_VARIANT, "Blue");
product1.putString( Param.ITEM_BRAND, "Google");
product1.putDouble( Param.PRICE, 29.99 );
product1.putString( Param.CURRENCY, "USD" ); // Item-level currency unused today
product1.putLong( Param.QUANTITY, 1 );

// Prepare ecommerce bundle

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putBundle( "items", product1 );

// Log add_to_cart event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.ADD_TO_CART, ecommerceBundle );

この例のタグ設定:

  • タグタイプ: ユニバーサル アナリティクス
  • トラッキング タイプ: イベント
  • イベント カテゴリの例: e コマース
  • イベント アクションの例: カートへの商品の追加
  • 拡張 e コマース機能を有効にする: true
  • データの参照先: Firebase イベント
  • トリガーの例:([カスタム] > [一部のイベント])「イベント名」が add_to_cart に等しい

カートからの商品の削除

ショッピング カートからの商品の削除を測定するには、関連するフィールドでアイテム(商品)を定義して REMOVE_FROM_CART イベントを記録します。

// Define product with relevant parameters

Bundle product1 = new Bundle();
product1.putString( Param.ITEM_ID, "sku1234"); // ITEM_ID or ITEM_NAME is required
product1.putString( Param.ITEM_NAME, "Donut Friday Scented T-Shirt");
product1.putString( Param.ITEM_CATEGORY, "Apparel/Men/Shirts");
product1.putString( Param.ITEM_VARIANT, "Blue");
product1.putString( Param.ITEM_BRAND, "Google");
product1.putDouble( Param.PRICE, 29.99 );
product1.putString( Param.CURRENCY, "USD" ); // Item-level currency unused today
product1.putLong( Param.QUANTITY, 1 );

// Prepare ecommerce bundle

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putBundle( "items", product1 );

// Log remove_from_cart event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.REMOVE_FROM_CART, ecommerceBundle );

この例のタグ設定:

  • タグタイプ: ユニバーサル アナリティクス
  • トラッキング タイプ: イベント
  • イベント カテゴリの例: e コマース
  • イベント アクションの例: カートからの商品の削除
  • 拡張 e コマース機能を有効にする: true
  • データの参照先: Firebase イベント
  • トリガーの例:([カスタム] > [一部のイベント])「イベント名」が remove_from_cart に等しい

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

プロモーションのインプレッションを測定するには、関連するフィールドでプロモーション アイテムを定義して VIEW_ITEMVIEW_ITEM_LIST、または VIEW_SEARCH_RESULTS イベントを記録します。

// Define promotion with relevant parameters

Bundle promotion = new Bundle();
promotion.putString( Param.ITEM_ID, "PROMO_1234" ); // promotion ID; either ITEM_ID or ITEM_NAME is required
promotion.putString( Param.ITEM_NAME, "Summer Sale" ); // promotion name
promotion.putString( Param.CREATIVE_NAME, "summer_banner2" );
promotion.putString( Param.CREATIVE_SLOT, "banner_slot1" );

// Prepare ecommerce bundle

ArrayList <bundle>promotions = new ArrayList<bundle>();
promotions.add(promotion);

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putParcelableArrayList("promotions", promotions );

// Log view_item, view_item_list, or view_search_results event with ecommerce bundle

mFirebaseAnalytics.logEvent(Event.VIEW_ITEM, ecommerceBundle );

この例のタグ設定:

  • タグタイプ: ユニバーサル アナリティクス
  • トラッキング タイプ: イベント
  • イベント カテゴリの例: 内部プロモーション
  • イベント アクションの例: インプレッション
  • 非インタラクション ヒット: true
  • 拡張 e コマース機能を有効にする: true
  • データの参照先: Firebase イベント
  • トリガーの例: ([カスタム] > [一部のイベント])「イベント名」が select_content に等しく、
  • &lbrace;&lbrace;promotions&rbrace;&rbrace; が未定義に等しい

プロモーションのクリック / 選択

プロモーションのクリックを測定するには、関連するフィールドでプロモーションを定義して SELECT_CONTENT イベントを記録します。

// Define promotion with relevant parameters

Bundle promotion = new Bundle();
promotion.putString( Param.ITEM_ID, "PROMO_1234"); // promotion ID; either ITEM_ID or ITEM_NAME is required
promotion.putString( Param.ITEM_NAME, "Summer Sale"); // promotion name
promotion.putString( Param.CREATIVE_NAME, "summer_banner2");
promotion.putString( Param.CREATIVE_SLOT, "banner_slot1");

// Prepare ecommerce bundle

ArrayList <bundle>promotions = new ArrayList<bundle>();
promotions.add(promotion);

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putParcelableArrayList("promotions", promotions );

// Set properties for the event to be shown in the Google Analytics (Firebase) reports.
// These properties will not impact the Universal Analytics reporting.

ecommerceBundle.putString( Param.CONTENT_TYPE, “Internal Promotions” );
ecommerceBundle.putString( Param.ITEM_ID, "PROMO_1234" );

// Log select_content, view_item_list, or view_search_results event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.SELECT_CONTENT, ecommerceBundle );

この例のタグ設定:

  • タグタイプ: ユニバーサル アナリティクス
  • トラッキング タイプ: イベント
  • イベント カテゴリの例: 内部プロモーション
  • イベント アクションの例: クリック
  • 拡張 e コマース機能を有効にする: true
  • データの参照先: Firebase イベント
  • トリガーの例: ([カスタム] > [一部のイベント])「イベント名」が select_content に等しく、&lbrace;&lbrace;promotions&rbrace;&rbrace; が未定義に等しい

決済手続き

決済手続きの開始

決済手続きの最初のステップを測定するには、関連するフィールドで 1 つ以上のアイテム(商品)を定義して BEGIN_CHECKOUT イベントを記録します。

// Define products with relevant parameters

Bundle product1 = new Bundle();
product1.putString( Param.ITEM_ID, "sku1234"); // ITEM_ID or ITEM_NAME is required
product1.putString( Param.ITEM_NAME, "Donut Friday Scented T-Shirt");
product1.putString( Param.ITEM_CATEGORY, "Apparel/Men/Shirts");
product1.putString( Param.ITEM_VARIANT, "Blue");
product1.putString( Param.ITEM_BRAND, "Google");
product1.putDouble( Param.PRICE, 29.99 );
product1.putString( Param.CURRENCY, "USD" ); // Item-level currency unused today
product1.putLong( Param.QUANTITY, 1 );

// Prepare ecommerce bundle

ArrayList <bundle>items = new ArrayList<bundle>();
items.add(product1);

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putParcelableArrayList( "items", items );

// Set checkout step and optional checkout option

ecommerceBundle.putLong( Param.CHECKOUT_STEP, 1 ); // Optional for first step
ecommerceBundle.putString( Param.CHECKOUT_OPTION, "Visa" ); // Optional

// Log BEGIN_CHECKOUT event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.BEGIN_CHECKOUT, ecommerceBundle );

この例のタグ設定:

  • タグタイプ: ユニバーサル アナリティクス
  • トラッキング タイプ: スクリーン ビュー
  • 設定するフィールド: (フィールド名)screenName(値の例)カートの画面
  • 拡張 e コマース機能を有効にする: true
  • データの参照先: Firebase イベント
  • トリガーの例: ([カスタム] > [一部のイベント])「イベント名」が begin_checkout に等しい

決済手続きの進捗状況

決済手続きの進捗状況を測定するには、関連するフィールドで 1 つ以上のアイテム(商品)を定義して CHECKOUT_PROGRESS イベントを記録します。

// Define products with relevant parameters

Bundle product1 = new Bundle();
product1.putString( Param.ITEM_ID, "sku1234"); // ITEM_ID or ITEM_NAME is required
product1.putString( Param.ITEM_NAME, "Donut Friday Scented T-Shirt");
product1.putString( Param.ITEM_CATEGORY, "Apparel/Men/Shirts");
product1.putString( Param.ITEM_VARIANT, "Blue");
product1.putString( Param.ITEM_BRAND, "Google");
product1.putDouble( Param.PRICE, 29.99 );
product1.putString( Param.CURRENCY, "USD" ); // Item-level currency unused today
product1.putLong( Param.QUANTITY, 1 );

// Prepare ecommerce bundle

ArrayList <bundle>items = new ArrayList<bundle>();
items.add(product1);

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putParcelableArrayList( "items", items );

// Set checkout step and optional checkout option

ecommerceBundle.putLong( Param.CHECKOUT_STEP, 2 );
ecommerceBundle.putString( Param.CHECKOUT_OPTION, "Visa" ); // Optional

// Log CHECKOUT_PROGRESS event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.CHECKOUT_PROGRESS, ecommerceBundle );

この例のタグ設定:

  • タグタイプ: ユニバーサル アナリティクス
  • トラッキング タイプ: スクリーン ビュー
  • 設定するフィールド: (フィールド名)screenName(値の例) 決済の手順 2 の画面
  • 拡張 e コマース機能を有効にする: true
  • データの参照先: Firebase イベント
  • トリガーの例: ([カスタム] > [一部のイベント])「イベント名」が checkout_progress に等しい

決済オプション

決済オプションを使用すると、決済手続きの状況に関する追加情報を測定できます。決済オプションは、上記のように決済手続きのイベントの一部として測定するか、決済手続きの特定のステップのイベントが記録された後、ユーザーがオプションを選択したときに測定することができます。

特定のステップの後に決済オプションを測定するには、対応する CHECKOUT_STEP および CHECKOUT_OPTION パラメータを使用して SET_CHECKOUT_OPTION イベントを記録します。

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putLong( Param.CHECKOUT_STEP, 2 );
ecommerceBundle.putString( Param.CHECKOUT_OPTION, "Mastercard" );
mFirebaseAnalytics.logEvent( Event.SET_CHECKOUT_OPTION, ecommerceBundle );

この例のタグ設定:

  • タグタイプ: ユニバーサル アナリティクス
  • トラッキング タイプ: イベント
  • イベント カテゴリの例: e コマース
  • イベント アクションの例: 決済オプションの設定
  • 拡張 e コマース機能を有効にする: true
  • データの参照先: Firebase イベント
  • トリガーの例:([カスタム] > [一部のイベント])「イベント名」が set_checkout_option に等しい

購入

購入を測定するには、関連するフィールドで 1 つ以上のアイテム(商品)を定義して ECOMMERCE_PURCHASE イベントを記録します。

// Define product with relevant parameters

Bundle product1 = new Bundle();
product1.putString( Param.ITEM_ID, "sku1234"); // ITEM_ID or ITEM_NAME is required
product1.putString( Param.ITEM_NAME, "Donut Friday Scented T-Shirt");
product1.putString( Param.ITEM_CATEGORY, "Apparel/Men/Shirts");
product1.putString( Param.ITEM_VARIANT, "Blue");
product1.putString( Param.ITEM_BRAND, "Google");
product1.putDouble( Param.PRICE, 29.99 );
product1.putString( Param.CURRENCY, "USD" ); // Item-level currency unused today
product1.putLong( Param.QUANTITY, 1 );

Bundle product2 = new Bundle();
product2.putString( Param.ITEM_ID, "sku5678");
product2.putString( Param.ITEM_NAME, "Android Workout Capris");
product2.putString( Param.ITEM_CATEGORY, "Apparel/Women/Pants");
product2.putString( Param.ITEM_VARIANT, "Black");
product2.putString( Param.ITEM_BRAND, "Google");
product2.putDouble( Param.PRICE, 39.99 );
product2.putString( Param.CURRENCY, "USD" ); // Item-level currency unused today
product2.putLong( Param.QUANTITY, 1 );

// Prepare ecommerce bundle

ArrayList <bundle>items = new ArrayList<bundle>();
items.add(product1);
items.add(product2);

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putParcelableArrayList( "items", items );

// Set relevant transaction-level parameters

ecommerceBundle.putString( Param.TRANSACTION_ID, "T12345" );
ecommerceBundle.putString( Param.AFFILIATION, "Google Store - Online" );
ecommerceBundle.putDouble( Param.VALUE, 37.39 );    // Revenue
ecommerceBundle.putDouble( Param.TAX, 2.85 );
ecommerceBundle.putDouble( Param.SHIPPING, 5.34 );
ecommerceBundle.putString( Param.CURRENCY, "USD" );
ecommerceBundle.putString( Param.COUPON, "SUMMER2017" );

// Log ecommerce_purchase event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.ECOMMERCE_PURCHASE, ecommerceBundle );

この例のタグ設定:

  • タグタイプ: ユニバーサル アナリティクス
  • トラッキング タイプ: スクリーン ビュー
  • 設定するフィールド: (フィールド名)screenName(値の例)「ありがとうございます」画面
  • 拡張 e コマース機能を有効にする: true
  • データの参照先: Firebase イベント
  • トリガーの例: ([カスタム] > [一部のイベント])「イベント名」が ecommerce_purchase に等しい

払い戻し

払い戻しを測定するには、関連する取引 ID を指定して PURCHASE_REFUND イベントを記録します。(一部払い戻しの場合など)必要な場合はアイテム ID と数量で 1 つ以上のアイテム(商品)を定義します。

// Prepare ecommerce bundle with transaction ID to be refunded

Bundle ecommerceBundle = new Bundle();
ecommerceBundle.putString( Param.TRANSACTION_ID, "T12345" ); // Required
ecommerceBundle.putDouble( Param.VALUE, 37.39 ); // Optional in Universal Analytics

// (OPTIONAL) For partial refunds, define the item IDs and quantities of products being refunded

Bundle refundedProduct = new Bundle();
refundedProduct.putString( Param.ITEM_ID, "sku1234" ); // Required for partial refund
refundedProduct.putLong( Param.QUANTITY, 1 ); // Required for partial refund

ArrayList <bundle>items = new ArrayList<bundle>();
items.add(refundedProduct);
ecommerceBundle.putParcelableArrayList( "items", items );

// Log purchase_refund event with ecommerce bundle

mFirebaseAnalytics.logEvent( Event.PURCHASE_REFUND, ecommerceBundle );

この例のタグ設定:

  • タグタイプ: ユニバーサル アナリティクス
  • トラッキング タイプ: イベント
  • イベント カテゴリの例: e コマース
  • イベント アクションの例: 払い戻し
  • 拡張 e コマース機能を有効にする: true
  • データの参照先: Firebase イベント
  • トリガーの例: ([カスタム] > [一部のイベント])「イベント名」が purchase_refund に等しい