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

拡張 e コマースは、ユニバーサル アナリティクスのプロパティで使用できる Google アナリティクスの機能のひとつです。この機能を使って、ショッピングの全過程を通したユーザー インタラクションを測定できます。これには、インプレッション、商品のクリック、商品の詳細の表示、ショッピング カートへの商品の追加、決済手続きの開始、購入、払い戻しなどが含まれます。

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

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

最初の手順

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

  1. アプリに Firebase と Google タグ マネージャーをインストールして設定します。iOS 向けの Firebase SDK は必ずバージョン 11 以上を使用してください。
  2. 「promotions」というタグ マネージャー コンテナにユーザー定義変数を次の設定で構成します。
    • イベントの種類: カスタム パラメータ
    • イベント パラメータキー: promotions
    • デフォルト値: 未定義

実装

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

商品のインプレッション

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

// Define product with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterIndex : @1          // Position of the item in the list.
};

NSDictionary *product2 = @{
   kFIRParameterItemID : @"sku5678", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Capri",
   kFIRParameterItemCategory : @"Apparel/Women/Pants",
   kFIRParameterItemVariant : @"Black",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @35.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterIndex : @2          // Position of the item in the list.
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1, product2];

NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterItemList : @"Search Results" // List name.
};

// Log select_content event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventViewSearchResults
                    parameters:ecommerce];

この例のタグ設定:

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

商品のクリックや選択

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

// Define product with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterIndex : @1          // Position of the item in the list.
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterItemList : @"Search Results" // List name.
};

// Log select_content event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventSelectContent
                    parameters:ecommerce];

この例のタグ設定:

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

商品詳細表示

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

// Define product with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterItemList : @"Search Results" // List name.
};

// Log view_item event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventViewItem
                    parameters:ecommerce];

この例のタグ設定:

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

カートへの商品の追加

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

/// Define product with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

NSDictionary *ecommerce = @{
   @"items" : items
};

// Log add_to_cart event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventAddToCart
                    parameters:ecommerce];

この例のタグ設定:

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

カートからの商品の削除

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

// Define product with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

NSDictionary *ecommerce = @{
   @"items" : items
};

// Log remove_from_cart event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventRemoveFromCart
                    parameters:ecommerce];

この例のタグ設定:

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

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

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

/// Define promotion with relevant parameters.
NSDictionary *promotion = @{
   kFIRParameterItemID : @"PROMO_1234", // promotion ID; either ITEM_ID or ITEM_NAME is.
   kFIRParameterItemName : @"Summer Sale", // promotion name.
   kFIRParameterCreativeName : @"summer_banner2",
   kFIRParameterCreativeSlot : @"banner_slot1"
};

// Prepare ecommerce dictionary.
NSArray *promotions = @[promotion];
NSDictionary *ecommerce = @{
   @"promotions" : promotions
};

// Log view_item, view_item_list, or view_search_results
// event with ecommerce bundle.
[FIRAnalytics logEventWithName:kFIREventViewItem
                    parameters:ecommerce];

この例のタグ設定:

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

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

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

// Define promotion with relevant parameters.
NSDictionary *promotion = @{
   kFIRParameterItemID : @"PROMO_1234", // promotion ID; either ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Summer Sale", // promotion name.
   kFIRParameterCreativeName : @"summer_banner2",
   kFIRParameterCreativeSlot : @"banner_slot1"
};

// Prepare ecommerce dictionary.
NSArray *promotions = @[promotion];

// Set properties for the event to be shown in the Google Analytics (Firebase) reports.
// These properties will not impact the Universal Analytics reporting.
NSDictionary *ecommerce = @{
   kFIRParameterItemID : @"PROMO_1234",
   kFIRParameterContentType : @"Internal Promotions",
   @"promotions" : promotions
};

// Log select_content, view_item_list, or view_search_results event with ecommerce bundle.
[FIRAnalytics logEventWithName:kFIREventSelectContent
                    parameters:ecommerce];

この例のタグ設定:

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

決済手続き

決済手続きの開始

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

// Define products with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

// Set checkout step and optional checkout option.
NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterCheckoutStep : @1, // Optional for first step.
   kFIRParameterCheckoutOption : @"Visa" // Optional.
};

// Log BEGIN_CHECKOUT event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventBeginCheckout
                    parameters:ecommerce];

この例のタグ設定:

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

決済オプション

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

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

// Define products with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1];

// Set checkout step and optional checkout option.
NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterCheckoutStep : @2, // Optional for first step.
   kFIRParameterCheckoutOption : @"Visa" // Optional.
};

// Log CHECKOUT_PROGRESS event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventCheckoutProgress
                   parameters:ecommerce];

この例のタグ設定:

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

購入

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

// Define products with relevant parameters.
NSDictionary *product1 = @{
   kFIRParameterItemID : @"sku1234", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Jogger Sweatpants",
   kFIRParameterItemCategory : @"Apparel/Men/Pants",
   kFIRParameterItemVariant : @"Blue",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @39.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

NSDictionary *product2 = @{
   kFIRParameterItemID : @"sku5678", // ITEM_ID or ITEM_NAME is required.
   kFIRParameterItemName : @"Android Capri",
   kFIRParameterItemCategory : @"Apparel/Women/Pants",
   kFIRParameterItemVariant : @"Black",
   kFIRParameterItemBrand : @"Google",
   kFIRParameterPrice : @35.99,
   kFIRParameterCurrency : @"USD",  // Item-level currency unused today.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce dictionary.
NSArray *items = @[product1, product2];

NSDictionary *ecommerce = @{
   @"items" : items,
   kFIRParameterItemList : @"Search Results", // List name.
   kFIRParameterTransactionID : @"T12345",
   kFIRParameterAffiliation : @"Google Store - Online",
   kFIRParameterValue : @75.98, // Revenue.
   kFIRParameterTax : @3.80,
   kFIRParameterShipping : @5.34,
   kFIRParameterCurrency : @"USD",
   kFIRParameterCoupon : @"SUMMER2017"
};

// Log ecommerce_purchase event with ecommerce dictionary.
[FIRAnalytics logEventWithName:kFIREventEcommercePurchase
                    parameters:ecommerce];

この例のタグ設定:

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

払い戻し

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

// (OPTIONAL) For partial refunds, define the item IDs and
// quantities of products being refunded.
NSDictionary *refundedProduct = @{
   kFIRParameterItemID : @"sku1234", // Required for partial refund.
   kFIRParameterQuantity : @1
};

// Prepare ecommerce bundle with transaction ID to be refunded.
NSDictionary *ecommerce = @{
   @"items" : @[ refundedProduct ],
   kFIRParameterTransactionID : @"T12345", // Required.
   kFIRParameterValue : @75.98 // Optional in Universal Analytics.
};

// Log purchase_refund event with ecommerce.
[FIRAnalytics logEventWithName:kFIREventPurchaseRefund
                    parameters:ecommerce];

この例のタグ設定:

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