Ulepszony e-commerce Universal Analytics na iOS

Ulepszony e-commerce to funkcja Google Analytics dostępna w usługach Universal Analytics, która umożliwia pomiar interakcji użytkowników z produktami w ramach różnych zakupów. Może to obejmować wyświetlenia produktów, kliknięcia produktów, wyświetlenia szczegółów produktu, dodawanie produktów do koszyka, inicjowanie płatności, transakcje, a także zwroty środków.

Najnowsze wersje Menedżera tagów Google i Google Analytics do aplikacji mobilnych współpracują z Firebase, platformą Google do aplikacji mobilnych. Podczas pomiaru aplikacji za pomocą pakietu SDK Firebase uzyskasz dostęp do wielu generowanych automatycznie raportów o aplikacjach mobilnych, które możesz dodatkowo dostosowywać i uzupełniać kodem aplikacji. Te raporty będą automatycznie zawierać dane o zakupach w aplikacji przetwarzanych przez App Store w iTunes i Google Play. Dodatkowe raporty e-commerce można generować, implementując sugerowane zdarzenia w aplikacjach e-commerce. Szczegółowe raporty na temat zakupów (tj. Ulepszony e-commerce) są obecnie dostępne tylko w usługach Universal Analytics.

Ten artykuł opisuje, jak używać Menedżera tagów dla aplikacji na iOS w połączeniu z pakietem SDK Firebase, aby wysyłać ulepszone dane e-commerce do usług Universal Analytics. Użyj tej samej składni zdarzeń i parametrów, aby w przyszłości przygotować kolejne raporty e-commerce.

Pierwsze kroki

Zanim zaczniesz, skonfiguruj te wymagania wstępne:

  1. Zainstaluj i skonfiguruj w swojej aplikacji Firebase i Menedżera tagów Google. Upewnij się, że używasz pakietu SDK Firebase w wersji 11 lub nowszej.
  2. Skonfiguruj w kontenerze Menedżera tagów zmienną definiowaną przez użytkownika o nazwie „promocje” z tymi ustawieniami:
    • Typ zdarzenia: parametr niestandardowy
    • Klucz parametru zdarzenia: promocje
    • Wartość domyślna: niezdefiniowana

Wdrażanie

W tych sekcjach znajdziesz informacje o tym, jak rejestrować zdarzenia z parametrami niezbędnymi do pomiaru działań Ulepszonego e-commerce, takich jak:

Wyświetlenia produktu

Mierz liczbę wyświetleń produktu, rejestrując zdarzenie z parametrem kFIRParameterItemID i co najmniej jednym elementem (np. produktami) zdefiniowanym w odpowiednich polach.

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

Zobacz konfigurację tagu w tym przykładzie:

  • Typ tagu: Universal Analytics
  • Typ śledzenia: Wyświetlenie ekranu
  • Pola do ustawienia: (nazwa pola) nazwa ekranu (wartość, np.) Ekran wyników wyszukiwania
  • Włączanie funkcji Ulepszonego e-commerce: Prawda
  • Odczyt danych z: zdarzenia Firebase
  • Wyzwalacz, np.: (Niestandardowe > Niektóre zdarzenia) Nazwa zdarzenia równa się view_search_results

Kliknięcia i zaznaczenia produktu

Mierz kliknięcia produktu, zapisując zdarzenie kFIREventSelectContent z elementem (np. produktem) zdefiniowanym w odpowiednich polach:

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

Zobacz konfigurację tagu w tym przykładzie:

  • Typ tagu: Universal Analytics
  • Typ śledzenia: Zdarzenie
  • Kategoria zdarzenia, np.: E-commerce
  • Akcja zdarzenia, np. kliknięcie produktu
  • Włączanie funkcji Ulepszonego e-commerce: Prawda
  • Odczyt danych z: zdarzenia Firebase
  • Wyzwalacz, np.: (Niestandardowe > Niektóre zdarzenia) Nazwa zdarzenia równa się select_content AND {{promotions}} równa się nieokreślone

Widoki szczegółów produktu

Mierz wyświetlenia szczegółów produktu, rejestrując zdarzenie kFIREventViewItem z elementem (np. produktem) zdefiniowanym w odpowiednich polach:

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

Zobacz konfigurację tagu w tym przykładzie:

  • Typ tagu: Universal Analytics
  • Typ śledzenia: Wyświetlenie ekranu
  • Pola do ustawienia: (nazwa pola) nazwa ekranu (wartość, np.) Ekran ze szczegółami usługi
  • Włączanie funkcji Ulepszonego e-commerce: Prawda
  • Odczyt danych z: zdarzenia Firebase
  • Wyzwalacz, np.: (Niestandardowe > Niektóre zdarzenia) Nazwa zdarzenia równa się view_item ORAZ
  • {{promocje}} równa się nieokreślone

Dodatki do koszyka

Mierz możliwość dodawania produktów do koszyka, rejestrując zdarzenie kFIREventAddToCart z elementem (takim jak produkt) zdefiniowanym w odpowiednich polach:

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

Zobacz konfigurację tagu w tym przykładzie:

  • Typ tagu: Universal Analytics
  • Typ śledzenia: Zdarzenie
  • Kategoria zdarzenia, np.: E-commerce
  • Akcja zdarzenia, np. : dodanie do koszyka
  • Włączanie funkcji Ulepszonego e-commerce: Prawda
  • Odczyt danych z: zdarzenia Firebase
  • Wyzwalacz, np.: (Niestandardowe > Niektóre zdarzenia) Nazwa zdarzenia równa się add_to_cart

Usunięcie z koszyka

Mierz możliwość usunięcia produktu z koszyka, rejestrując zdarzenie kFIREventRemoveFromCart zawierające element (tj. produkt) zdefiniowany za pomocą odpowiednich pól:

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

Zobacz konfigurację tagu w tym przykładzie:

  • Typ tagu: Universal Analytics
  • Typ śledzenia: Zdarzenie
  • Kategoria zdarzenia, np.: E-commerce
  • Akcja zdarzenia, np. : usunięcie z koszyka
  • Włączanie funkcji Ulepszonego e-commerce: Prawda
  • Odczyt danych z: zdarzenia Firebase
  • Wyzwalacz, np.: (Niestandardowe > Niektóre zdarzenia) Nazwa zdarzenia równa się delete_from_cart

Wyświetlenia promocji

Mierz liczbę wyświetleń promocji, rejestrując zdarzenie kFIREventViewItem z elementem promocji zdefiniowanym w odpowiednich polach:

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

Zobacz konfigurację tagu w tym przykładzie:

  • Typ tagu: Universal Analytics
  • Typ śledzenia: Zdarzenie
  • Kategoria zdarzenia, np.: Promocja wewnętrzna
  • Akcja zdarzenia, np.: Wyświetlenie
  • Działanie niezwiązane z interakcją: prawda
  • Włączanie funkcji Ulepszonego e-commerce: Prawda
  • Odczyt danych z: zdarzenia Firebase
  • Wyzwalacz, np.: (Niestandardowe > Niektóre zdarzenia) Nazwa zdarzenia równa się view_item ORAZ
  • {{promocje}} nie równa się niezdefiniowane

Kliknięcia/wybrane materiały promocyjne

Mierz liczbę kliknięć promocji, rejestrując zdarzenie kFIREventSelectContent z promocją zdefiniowaną za pomocą odpowiednich pól:

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

Zobacz konfigurację tagu w tym przykładzie:

  • Typ tagu: Universal Analytics
  • Typ śledzenia: Zdarzenie
  • Kategoria zdarzenia, np.: Promocja wewnętrzna
  • Akcja zdarzenia, np. : kliknięcie
  • Włączanie funkcji Ulepszonego e-commerce: Prawda
  • Odczyt danych z: zdarzenia Firebase
  • Wyzwalacz, np.: (Niestandardowe > Niektóre zdarzenia) Nazwa zdarzenia równa się select_content AND {{promotions}} nie równa się niezdefiniowane

Proces płatności

Rozpoczęcie realizacji płatności

Mierz pierwszy etap procesu płatności, zapisując zdarzenie kFIREventBeginCheckout z co najmniej jednym elementem (tj. produktami) zdefiniowanym za pomocą odpowiednich pól:

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

Zobacz konfigurację tagu w tym przykładzie:

  • Typ tagu: Universal Analytics
  • Typ śledzenia: Wyświetlenie ekranu
  • Pola do ustawienia: (nazwa pola) nazwa ekranu (wartość, np.) Ekran koszyka
  • Włączanie funkcji Ulepszonego e-commerce: Prawda
  • Odczyt danych z: zdarzenia Firebase
  • Wyzwalacz, np.: (Niestandardowe > Niektóre zdarzenia) Nazwa zdarzenia równa się start_checkout

Opcje płatności i wysyłki

Opcje płatności umożliwiają pomiar dodatkowych informacji o stanie procesu realizacji transakcji. Opcje płatności możesz mierzyć w ramach zdarzenia kroku płatności (jak pokazano powyżej) lub po wybraniu opcji przez użytkownika po zarejestrowaniu zdarzenia dla danego kroku płatności, które już zostało zarejestrowane.

Mierz opcje płatności po wykonaniu transakcji, rejestrując zdarzenie kFIREventCheckoutProgress z odpowiednimi parametrami kFIRParameterCheckoutStep i kFIRParameterCheckoutOption:

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

Zobacz konfigurację tagu w tym przykładzie:

  • Typ g: Universal Analytics
  • Typ potwierdzenia: Zdarzenie
  • Kategoria „ent”, np.: E-commerce
  • Działanie, np. : Ustaw opcję płatności.
  • możliwe funkcje Ulepszonego e-commerce: Prawda
  • dane reklamy z: zdarzenie Firebase
  • Wyzwalacz, np.: (Niestandardowe > Niektóre zdarzenia) Nazwa zdarzenia równa się set_checkout_option

Zakupy

Mierz zakupy, rejestrując zdarzenie kFIREventEcommercePurchase z co najmniej jednym elementem (tj. produktem) zdefiniowanym w odpowiednich polach:

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

Zobacz konfigurację tagu w tym przykładzie:

  • Typ tagu: Universal Analytics
  • Typ śledzenia: Wyświetlenie ekranu
  • Pola do ustawienia: (nazwa pola) nazwa ekranu (wartość, np.) Ekran z podziękowaniem
  • Włączanie funkcji Ulepszonego e-commerce: Prawda
  • Odczyt danych z: zdarzenia Firebase
  • Wyzwalacz, np.: (Niestandardowe > Niektóre zdarzenia) Nazwa zdarzenia równa się ecommerce_purchase

Zwroty środków

Mierz zwrot środków, rejestrując zdarzenie kFIREventPurchaseRefund z odpowiednim identyfikatorem transakcji i opcjonalnie (w przypadku częściowych zwrotów) co najmniej 1 produkt (np. produkty) zdefiniowany za pomocą identyfikatorów i ilości:

// (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];

Zobacz konfigurację tagu w tym przykładzie:

  • Typ tagu: Universal Analytics
  • Typ śledzenia: Zdarzenie
  • Kategoria zdarzenia, np.: E-commerce
  • Akcja zdarzenia, np. Zwrot środków
  • Włączanie funkcji Ulepszonego e-commerce: Prawda
  • Odczyt danych z: zdarzenia Firebase
  • Wyzwalacz, np.: (Niestandardowe > Niektóre zdarzenia) Nazwa zdarzenia równa się purchase_refund