Acompanhamento de comércio eletrônico avançado

Este documento contém uma visão geral de como avaliar ações e impressões relacionadas ao comércio eletrônico no aplicativo com o SDK V4 do Google Analytics para Android.

Visão geral

O comércio eletrônico avançado permite a avaliação de interações dos usuários com produtos durante a experiência de compra do usuário, incluindo: impressões de produtos, cliques em produtos, exibição de detalhes de produtos, adição de um produto ao carrinho de compras, início do processo de checkout, transações e reembolsos.

Implementação

A avaliação do comércio eletrônico avançado exige que você use a classe HitBuilder e o conjunto de métodos dela para enviar dados de comércio eletrônico para produtos, impressões e promoções. Um conjunto de classes de comércio eletrônico do Google Analytics também é fornecido para construir informações relacionadas ao comércio eletrônico.

Com o comércio eletrônico avançado você pode:

Avaliação de atividades de comércio eletrônico

Uma implementação de comércio eletrônico avançado típica avalia as impressões de produtos e qualquer uma das ações a seguir:

  • Seleção de um produto.
  • Visualização de detalhes de produtos.
  • Impressões e seleção de promoções internas.
  • Adição / remoção de um produto de um carrinho de compras.
  • Início do processo de checkout para um produto.
  • Compras e reembolsos.

Avaliação de impressões

Para avaliar a impressão de um produto, crie um objeto Product e envie-o com um hit por meio do método addImpression. Um Product precisa ter um valor "name" ou "id". Todos os outros valores são opcionais e não precisam ser definidos.

Product product = new Product()
    .setId("P12345")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("Black")
    .setPosition(1)
    .setCustomDimension(1, "Member");
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addImpression(product, "Search Results");

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("searchResults");
t.send(builder.build());

Consulte Configuração avançada para detalhes sobre o método getTracker.

Avaliação de ações

As ações são avaliadas por meio do método addProduct com um objeto Product para adicionar detalhes do produto, e o método setProductAction com um objeto ProductAction para especificar a ação realizada.

Por exemplo, o código a seguir avalia a seleção de um produto exibido em uma lista de resultados de pesquisa:

Product product =  new Product()
    .setId("P12345")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("Black")
    .setPosition(1)
    .setCustomDimension(1, "Member");
ProductAction productAction = new ProductAction(ProductAction.ACTION_CLICK)
    .setProductActionList("Search Results");
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addProduct(product)
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("searchResults");
t.send(builder.build());

Combinação de impressões e ações

Nos casos em que você tem impressões de produtos e uma ação, é possível combinar e avaliar tudo em um único hit.

O exemplo abaixo mostra como avaliar uma vista de detalhes do produto com uma seção de produtos relacionados:

// The product from a related products section.
Product relatedProduct =  new Product()
    .setId("P12346")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("White")
    .setPosition(1);

// The product being viewed.
Product viewedProduct =  new Product()
    .setId("P12345")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("Black")
    .setPosition(1);

ProductAction productAction = new ProductAction(ProductAction.ACTION_DETAIL);
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addImpression(relatedProduct, "Related Products")
    .addProduct(viewedProduct)
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("product");
t.send(builder.build());

Avaliação de transações

Avalie uma transação usando o método addProduct com um objeto Product para adicionar detalhes de produtos, e o método setProductAction com um objeto ProductAction para especificar uma ação de compra. Os detalhes no nível da transação, como receita total, imposto e envio são fornecidos no objeto ProductAction.

Product product =  new Product()
    .setId("P12345")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("black")
    .setPrice(29.20)
    .setCouponCode("APPARELSALE")
    .setQuantity(1);
ProductAction productAction = new ProductAction(ProductAction.ACTION_PURCHASE)
    .setTransactionId("T12345")
    .setTransactionAffiliation("Google Store - Online")
    .setTransactionRevenue(37.39)
    .setTransactionTax(2.85)
    .setTransactionShipping(5.34)
    .setTransactionCouponCode("SUMMER2013");
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addProduct(product)
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("transaction");
t.send(builder.build());

Especificação de moedas

Por padrão, você pode configurar uma moeda global comum para todas as transações e itens por meio da interface da Web de gerenciamento do Google Analytics.

É necessário especificar a moeda local de acordo com o padrão ISO 4217. Leia o documento Referência de códigos de moedas para uma lista completa de moedas de conversão suportadas.

Moedas locais são especificadas usando a propriedade do rastreador "currencyCode". Por exemplo, este rastreador enviará valores de moeda em euros:

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("transaction");
t.set("&cu", "EUR");  // Set tracker currency to Euros.
t.send(builder.build());

Avaliação de reembolsos

Para reembolsar uma transação por inteiro, use o método setProductAction com um objeto ProductAction para especificar o ID da transação e um tipo de ação de reembolso:

// Refund an entire transaction.
ProductAction productAction = new ProductAction(ProductAction.ACTION_REFUND)
    .setTransactionId("T12345");  // Transaction ID is only required field for a full refund.
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("refund");
t.send(builder.build());

Se uma transação correspondente não for encontrada, o reembolso não será processado.

Para avaliar um reembolso parcial, use o método setProductAction com um objeto ProductAction para especificar o código da transação, os IDs dos produtos e as quantidades de produtos do reembolso:

// Refund a single product.
Product product =  new Product()
    .setId("P12345")  // Product ID is required for partial refund.
    .setQuantity(1);  // Quanity is required for partial refund.
ProductAction productAction = new ProductAction(ProductAction.ACTION_REFUND)
    .setTransactionId("T12345");  // Transaction ID is required for partial refund.
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addProduct(product)
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("refundProduct");
t.send(builder.build());

Uso de eventos sem interação para reembolsos

Se você precisar enviar dados de reembolso por meio de um evento e ele não fizer parte de um comportamento do usuário avaliado normalmente (por exemplo, não iniciado pelo usuário), é recomendável enviar um evento sem interação. Isso impedirá que determinadas métricas sejam afetadas pelo evento. Por exemplo:

// Refund an entire transaction.
ProductAction productAction = new ProductAction(ProductAction.ACTION_REFUND)
    .setTransactionId("T12345");
HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder()
    .setProductAction(productAction)
    .setNonInteraction(true)
    .setCategory("Ecommerce")
    .setAction("Refund");

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.send(builder.build());

Avaliação do processo de checkout

Para avaliar cada etapa em um processo de checkout:

  1. Adicione o código de acompanhamento para avaliar cada etapa do processo de checkout.
  2. Se aplicável, adicione o código de acompanhamento para avaliar as opções de checkout.
  3. Opcionalmente, atribua nomes fáceis de entender para as etapas no Relatório de funis de checkout. Para isso, defina Configurações de comércio eletrônico na seção "Administrador" da interface da Web.

1. Avaliação das etapas de checkout

Para cada etapa no processo de checkout, você precisa implementar o código de acompanhamento correspondente para enviar dados ao Google Analytics.

Campo Step

Para cada etapa do checkout que você avalia, é necessário incluir um valor step. Esse valor é usado para mapear as ações de checkout para os rótulos que você configurou em cada etapa nas Configurações de comércio eletrônico.

Campo Option

Se você tiver informações adicionais sobre a etapa de checkout no momento em que ela for avaliada, defina o campo option com uma ação de checkout para capturar essas informações. Por exemplo, o tipo de pagamento padrão do usuário (como "Visa").

Avaliação de uma etapa do checkout

Para avaliar uma etapa de checkout, use o método addProduct com um objeto Product para adicionar detalhes do produto, e o método setProductAction com um objeto ProductAction para indicar uma ação de checkout. Se aplicável, você também pode definir step e option com o checkout.

O exemplo a seguir mostra como avaliar a primeira etapa de um processo de checkout com um único produto, além de algumas informações adicionais sobre o tipo de pagamento:

Product product =  new Product()
    .setId("P12345")
    .setName("Android Warhol T-Shirt")
    .setCategory("Apparel/T-Shirts")
    .setBrand("Google")
    .setVariant("black")
    .setPrice(29.20)
    .setQuantity(1);
// Add the step number and additional info about the checkout to the action.
ProductAction productAction = new ProductAction(ProductAction.ACTION_CHECKOUT)
    .setCheckoutStep(1)
    .setCheckoutOptions("Visa");
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addProduct(product)
    .setProductAction(productAction);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("checkoutStep1");
t.send(builder.build());

2. Avaliação das opções de checkout

Com as opções de checkout, você pode avaliar informações adicionais sobre o estado do checkout. Isso é útil nos casos em que você avaliou uma etapa do checkout, mas informações adicionais sobre a mesma etapa de checkout estão disponíveis depois da definição de uma opção selecionada pelo usuário. Por exemplo, o usuário seleciona um método de envio.

Para avaliar uma opção de checkout, use setAction para indicar uma opção de checkout e incluir o número da etapa e a descrição da opção.

Provavelmente, convém avaliar essa ação depois que o usuário realizar uma ação para prosseguir até a próxima etapa no processo de checkout. Por exemplo:

// (On "Next" button click.)
ProductAction productAction = new ProductAction(ProductAction.ACTION_CHECKOUT_OPTIONS)
    .setCheckoutStep(1)
    .setCheckoutOptions("FedEx");
HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder()
    .setProductAction(productAction)
    .setCategory("Checkout")
    .setAction("Option");

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.send(builder.build());

// Advance to next page.

3. Configuração do funil de checkout

Cada etapa do seu processo de checkout pode receber um nome descritivo que será usado nos relatórios. Para configurar esses nomes, acesse a seção Administrador da interface da Web do Google Analytics, selecione a Vista (perfil) e clique em Configurações de comércio eletrônico. Siga as instruções de configuração de comércio eletrônico para rotular cada etapa de checkout que você pretende acompanhar.

Configurações do comércio eletrônico na seção "Administrador" da interface da Web do Google Analytics.O comércio eletrônico está ativado, e quatro rótulos de etapas do funil de checkout foram adicionados: 1.Revisar carrinho de compras, 2.Coletar informações de pagamento, 3.Confirmar detalhes de compra, 4.Recibo
Figura 1: Configuração do comércio eletrônico - funil de checkout

Avaliação das promoções internas

O comércio eletrônico avançado inclui suporte para avaliar impressões e cliques de promoções internas, como banners exibidos para promover uma venda.

Impressões de promoções

Impressões de promoções internas geralmente são avaliadas com a exibição de tela inicial por meio do método addPromotion com um objeto Promotion para especificar os detalhes da promoção. Por exemplo:

Promotion promotion = new Promotion()
    .setId("PROMO_1234")
    .setName("Summer Sale")
    .setCreative("summer_banner2")
    .setPosition("banner_slot1");
HitBuilders.ScreenViewBuilder builder = new HitBuilders.ScreenViewBuilder()
    .addPromotion(promotion);

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.setScreenName("promotions");
t.send(builder.build());

Cliques em promoções

Cliques em promoções internas podem ser avaliados por meio do método addPromotion com um objeto Promotion e pelo método setProductAction com um objeto ProductAction para indicar um clique de promoção. Por exemplo:

Promotion promotion = new Promotion()
    .setId("PROMO_1234")
    .setName("Summer Sale")
    .setCreative("summer_banner2")
    .setPosition("banner_slot1");
ProductAction promoClickAction = new ProductAction(Promotion.ACTION_CLICK);
HitBuilders.EventBuilder builder = new HitBuilders.EventBuilder()
    .addPromotion(promotion)
    .setProductAction(promoClickAction)
    .setCategory("Internal Promotions")
    .setAction("click")
    .setLabel("Summer Sale");

Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);
t.send(builder.build());