Расширенная электронная торговля Universal Analytics для Android

Google Аналитика поддерживает в ресурсах Universal Analytics расширенную электронную торговлю. Это функция, которая позволяет понять, как пользователи взаимодействуют с вашими товарами на разных этапах пути к покупке. Например, можно узнать число показов и кликов для определенного товара, как часто пользователи просматривали информацию о нем или добавляли его в корзину покупок и сколько заказов, транзакций и возвратов было оформлено.

Последние версии Google Менеджера тегов и Google Аналитики для мобильных приложений интегрированы с Firebase – платформой Google для мобильных приложений. Отслеживание с помощью Firebase SDK открывает доступ к огромному числу автоматизированных отчетов о мобильных приложениях, которые можно настраивать под свои задачи, в том числе путем добавления кода в приложение. В отчетах собирается статистика о покупках в приложении, проведенных через магазины App Store (в iTunes) и Google Play. Также вы можете создавать дополнительные отчеты по электронной торговле, реализуя в приложениях рекомендованные нами события. Детальные отчеты о поведении покупателей (то есть отчеты о расширенной электронной торговле) в настоящее время доступны только для ресурсов Universal Analytics.

В этом документе описывается, как с помощью Менеджера тегов для мобильных приложений и Firebase SDK отправлять данные расширенной электронной торговли в ресурсы Universal Analytics.

Первые шаги

Выполните предварительную настройку приложения:

  1. Установите и настройте код Firebase и Google Менеджера тегов в своем приложении. Убедитесь, что вы используете Firebase SDK для Android версии 11 или выше.
  2. Импортируйте эти два пакета:

    • import com.google.firebase.analytics.FirebaseAnalytics.Event;
    • import com.google.firebase.analytics.FirebaseAnalytics.Param;
  3. В контейнере Менеджера тегов создайте пользовательскую переменную под названием "promotions" со следующими настройками:

    • тип события: Custom Parameter;
    • ключ параметра события: promotions;
    • значение по умолчанию: undefined.

Реализация

В разделах ниже показывается, как регистрировать события с параметрами, необходимыми для отслеживания следующих действий расширенной электронной торговли:

Показ товара

Чтобы отслеживать показы товаров, нужно регистрировать событие с параметром ITEM_LIST для одного или нескольких товаров, определенных в соответствующих полях.

// 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 );

Конфигурация тега

  • Тип тега: Universal Analytics.
  • Тип отслеживания: Screen View.
  • Поля, которые нужно задать (пример): screenName (название поля), Search Results Screen (значение поля).
  • Включить функции расширенной электронной торговли: True.
  • Источник данных: Firebase Event.
  • Триггер (пример): Event Name равно 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 );

Конфигурация тега

  • Тип тега: Universal Analytics.
  • Тип отслеживания: Event.
  • Категория события (пример): Ecommerce.
  • Действие события (пример): Product Click.
  • Включить функции расширенной электронной торговли: True.
  • Источник данных: Firebase Event.
  • Триггер (пример): Event Name равно select_content И &lbrace;&lbrace;promotions&rbrace;&rbrace; равно undefined (см. Специальные > Некоторые события).

Просмотр сведений о товаре

Чтобы отслеживать просмотры сведений о товаре, нужно регистрировать событие 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 );

Конфигурация тега

  • Тип тега: Universal Analytics.
  • Тип отслеживания: Screen View.
  • Поля, которые нужно задать (пример): screenName (название поля), Product Details Screen (значение поля).
  • Включить функции расширенной электронной торговли: True.
  • Источник данных: Firebase Event.
  • Триггер (пример): Event Name равно view_item И
  • &lbrace;&lbrace;promotions&rbrace;&rbrace; равно undefined (см. Специальные > Некоторые события).

Добавление в корзину

Чтобы отслеживать добавление товара в корзину, нужно регистрировать событие 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 );

Конфигурация тега

  • Тип тега: Universal Analytics.
  • Тип отслеживания: Event.
  • Категория события (пример): Ecommerce.
  • Действие события (пример): Add to Cart.
  • Включить функции расширенной электронной торговли: True.
  • Источник данных: Firebase Event.
  • Триггер (пример): Event Name равно 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 );

Конфигурация тега

  • Тип тега: Universal Analytics.
  • Тип отслеживания: Event.
  • Категория события (пример): Ecommerce.
  • Действие события (пример): Remove from Cart.
  • Включить функции расширенной электронной торговли: True.
  • Источник данных: Firebase Event.
  • Триггер (пример): Event Name равно 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 );

Конфигурация тега

  • Тип тега: Universal Analytics.
  • Тип отслеживания: Event.
  • Категория события (пример): Internal Promotion.
  • Действие события (пример): Impression.
  • Не взаимодействие: True.
  • Включить функции расширенной электронной торговли: True.
  • Источник данных: Firebase Event.
  • Триггер (пример): Event Name равно view_item И
  • &lbrace;&lbrace;promotions&rbrace;&rbrace; не равно undefined (см. Специальные > Некоторые события).

Клик по промоакции или выбор промоакции

Чтобы отслеживать клики по промоакции, нужно регистрировать событие 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 );

Конфигурация тега

  • Тип тега: Universal Analytics.
  • Тип отслеживания: Event.
  • Категория события (пример): Internal Promotion.
  • Действие события (пример): Click.
  • Включить функции расширенной электронной торговли: True.
  • Источник данных: Firebase Event.
  • Триггер (пример): Event Name равно select_content И &lbrace;&lbrace;promotions&rbrace;&rbrace; не равно undefined (см. Специальные > Некоторые события).

Оформление покупки

Начало оформления покупки

Чтобы отслеживать выполнение первого шага в процессе оформления покупки, нужно регистрировать событие 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 );

Конфигурация тега

  • Тип тега: Universal Analytics.
  • Тип отслеживания: Screen View.
  • Поля, которые необходимо задать (пример): screenName (название поля), Cart Screen (значение поля).
  • Включить функции расширенной электронной торговли: True.
  • Источник данных: Firebase Event.
  • Триггер (пример): Event Name равно begin_checkout (см. Специальные > Некоторые события).

Дополнительные шаги

Чтобы отслеживать дополнительные шаги покупки, нужно регистрировать событие 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 );

Конфигурация тега

  • Тип тега: Universal Analytics.
  • Тип отслеживания: Screen View.
  • Поля, которые нужно задать (пример): screenName (название поля), Checkout Step­­­ 2 Screen (значение поля).
  • Включить функции расширенной электронной торговли: True.
  • Источник данных: Firebase Event.
  • Триггер (пример): Event Name равно checkout_progress (см. Специальные > Некоторые события).

Параметры покупки

Эти параметры позволяют получать дополнительную информацию о процессе оформления покупки. Их можно отслеживать в рамках этапа оформления покупки (как показано в примере выше) или после него, при выборе этих параметров пользователем.

Чтобы отслеживать параметры покупки, нужно регистрировать событие SET_CHECKOUT_OPTION с соответствующими параметрами CHECKOUT_STEP и 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 );

Конфигурация тега

  • Тип тега: Universal Analytics.
  • Тип отслеживания: Event.
  • Категория события (пример): Ecommerce.
  • Действие события (пример): Set Checkout Option.
  • Включить функции расширенной электронной торговли: True.
  • Источник данных: Firebase Event.
  • Триггер (пример): Event Name равно set_checkout_option (см. Специальные > Некоторые события).

Покупка

Чтобы отслеживать покупки, нужно регистрировать событие 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 );

Конфигурация тега

  • Тип тега: Universal Analytics.
  • Тип отслеживания: Screen View.
  • Поля, которые нужно задать (пример): screenName (название поля), Thank You Screen (значение поля).
  • Включить функции расширенной электронной торговли: True.
  • Источник данных: Firebase Event.
  • Триггер (пример): Event Name равно ecommerce_purchase (см. Специальные > Некоторые события).

Возврат средств

Чтобы отслеживать возвраты средств, нужно регистрировать событие PURCHASE_REFUND с соответствующим идентификатором транзакции. Также можно отслеживать частичные возвраты для одного или нескольких товаров, указывая их идентификаторы и количество.

// 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 );

Конфигурация тега

  • Тип тега: Universal Analytics.
  • Тип отслеживания: Event.
  • Категория события (пример): Ecommerce.
  • Действие события (пример): Refund.
  • Включить функции расширенной электронной торговли: True.
  • Источник данных: Firebase Event.
  • Триггер (пример): Event Name равно purchase_refund (см. Специальные > Некоторые события).