Google アナリティクスは、ユニバーサル アナリティクスのプロパティで拡張 e コマースをサポートしています。拡張 e コマースを使用すると、ユーザーのショッピング行動の全体を通して商品との接点を測定できます。たとえば、プロモーションのインプレッション、プロモーションのクリック、商品のインプレッション、商品のクリック、商品の詳細の表示、ショッピング カートへの商品の追加、カートからの商品の削除、購入手続きの開始、決済、払い戻しなどを測定できます。
モバイルアプリ向けの Google タグ マネージャーと Google アナリティクスの最新バージョンは、Google のモバイルアプリ プラットフォームである Firebase と連携して動作します。Firebase SDK を使用してアプリの測定を行うと、多くのモバイルアプリ レポートが自動的に生成されます。このレポートはアプリ内コードでカスタマイズし、機能を強化することもできます。これらのレポートには、iTunes の App Store や Google Play で処理されたアプリ内購入に関するデータが自動的に表示されます。e コマース関連のその他のレポートは、e コマースアプリの推奨イベントを実装することで生成できます。ショッピング行動に関する詳細なレポート(拡張 e コマースなど)は、現時点ではユニバーサル アナリティクスのプロパティでのみ利用可能です。
このドキュメントでは、モバイルアプリ向けのタグ マネージャーと Firebase SDK を使用して、拡張 e コマースのデータをユニバーサル アナリティクスのプロパティに送信する方法について説明します。
最初の手順
まずは、アプリに関する次の必須要件を整えます。
- アプリに Firebase と Google タグ マネージャーをインストールして設定します。Android 向けの Firebase SDK は必ずバージョン 11 以上を使用してください。
次の 2 つのパッケージをインポートします。
import com.google.firebase.analytics.FirebaseAnalytics.Event;
import com.google.firebase.analytics.FirebaseAnalytics.Param;
タグ マネージャーのコンテナで、次の設定を使用して「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 に等しく、{{promotions}} が未定義に等しい
商品詳細表示
商品の詳細の表示を測定するには、関連するフィールドでアイテム(商品)を定義して 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 に等しく、
- {{promotions}} が未定義に等しい
カートへの商品の追加
ショッピング カートへの商品の追加を測定するには、関連するフィールドでアイテム(商品)を定義して 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_ITEM
、VIEW_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 に等しく、
- {{promotions}} が未定義に等しい
プロモーションのクリック / 選択
プロモーションのクリックを測定するには、関連するフィールドでプロモーションを定義して 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 に等しく、{{promotions}} が未定義に等しい
決済手続き
決済手続きの開始
決済手続きの最初のステップを測定するには、関連するフィールドで 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 に等しい