Neste guia, descrevemos como implementar os recursos de e-commerce avançado do Universal Analytics usando o SDK do Gerenciador de tags do Google para Android.
Informações gerais
O e-commerce avançado do Google Analytics permite que os dados de impressões, promoções e vendas de produtos sejam enviados com qualquer um dos seus eventos e exibições de tela do Analytics.
Antes de começar
Recomendamos que você leia a seção Ações e tipos de dados de e-commerce avançado do Guia para desenvolvedores sobre e-commerce avançado do Google Analytics (Web) se quiser planejar sua implementação. Neste guia, vamos ajudar você a entender quais campos são obrigatórios e opcionais para cada uma das interações de e-commerce que você quer avaliar.
Implementação
As seções abaixo mostram como usar a camada de dados para medir as seguintes atividades de e-commerce avançado:
- Impressões do produto
- Cliques/seleções do produto
- Impressões de detalhes do produto
- Adicionar / remover item do carrinho
- Impressões da promoção
- Cliques/seleções da promoção
- Finalização da compra
- Compras
- Reembolsos
Medir as impressões do produto
- Medição de comércio eletrônico:
impressions
- Aceita dados: matriz de
impressionFieldObjects
Meça as impressões do produto usando a ação impression
e um ou mais impressionFieldObjects
. O exemplo a seguir pressupõe
que os detalhes sobre os produtos mostrados são conhecidos no momento em que a tela é
mostrada:
// Product impressions are sent by pushing an impressions object // containing one or more impressionFieldObjects. dataLayer.push("ecommerce", DataLayer.mapOf( "currencyCode", "EUR", // Local currency is optional. "impressions", DataLayer.listOf( DataLayer.mapOf( "name", "Triblend Android T-Shirt", // Name or ID is required. "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray", "list", "Search Results", "position", 1), DataLayer.mapOf( "name", "Donut Friday Scented T-Shirt", "id", "67890", "price", "33.75", "brand", "Google", "category", "Apparel", "variant", "Black", "list", "Search Results", "position", 2))));
Medir os cliques/seleções no produto
- Medição de comércio eletrônico:
click
- Aceita dados:
list
, matriz deproductFieldObjects
Meça as seleções de produtos enviando uma ação click
à camada de dados, além de um productFieldObject
para representar o produto selecionado:
dataLayer.pushEvent("productClick", DataLayer.mapOf( "ecommerce", DataLayer.mapOf( "click", DataLayer.mapOf( "actionField", DataLayer.mapOf( "list", "Search Results"), // Optional list property. "products", DataLayer.listOf( DataLayer.mapOf( "name", "Triblend Android T-Shirt", // Name or ID is required. "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray"))))));
Medir as visualizações dos detalhes do produto
- Medição de comércio eletrônico:
detail
- Aceita dados:
list
, matriz deproductFieldObjects
Se quiser medir as visualizações dos detalhes do produto, envie uma ação detail
à camada de dados com um ou mais productFieldObjects
representando os produtos visualizados:
// Measure a view of product details. dataLayer.push("ecommerce", DataLayer.mapOf( "detail", DataLayer.mapOf( "actionField", DataLayer.mapOf( "list", "Apparel Gallery"), // detail actions have an optional list property. "products", DataLayer.listOf( DataLayer.mapOf( "name", "Triblend Android T-Shirt", // Name or ID is required. "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray")))));
Medir as adições ou remoções de itens de um carrinho de compras
- Medição de e-commerce:
add
,remove
- Aceita dados:
list
, matriz deproductFieldObjects
Meça as adições ou remoções de um carrinho de compras usando um actionFieldObject
add
ou remove
e uma lista de productFieldObjects
:
Adicionar um produto a um carrinho de compras
// Measure adding a product to a shopping cart by using an "add" // actionFieldObject and a list of productFieldObjects. dataLayer.pushEvent("addToCart", DataLayer.mapOf( "ecommerce", DataLayer.mapOf( "currencyCode", "EUR", "add", DataLayer.mapOf( // 'add' actionFieldObject measures. "products", DataLayer.listOf( DataLayer.mapOf( "name", "Triblend Android T-Shirt", "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray", "quantity", 1))))));
Remover um produto de um carrinho de compras
// Measure the removal of a product from a shopping cart. dataLayer.pushEvent("removeFromCart", DataLayer.mapOf( "ecommerce", DataLayer.mapOf( "remove", DataLayer.mapOf( // 'remove' actionFieldObject measures. "products", DataLayer.listOf( DataLayer.mapOf( "name", "Triblend Android T-Shirt", "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray", "quantity", 1))))));
Medir as promoções
Você pode medir as impressões e seleções em promoções internas de apps, como banners exibidos no app para anunciar uma promoção de um subconjunto específico de produtos ou uma oferta de frete grátis.
Medir as impressões da promoção
- Medição de comércio eletrônico:
promoView
- Aceita dados: matriz de
promoFieldObjects
Para medir a impressão de uma promoção, defina a chave promoView
na camada de dados de e-commerce como um promoFieldObject
que descreva as promoções exibidas aos usuários na tela:
// An example of measuring promotion views. This example assumes that // information about the promotions displayed is available when the screen is // displayed. dataLayer.push("ecommerce", DataLayer.mapOf( "promoView", DataLayer.mapOf( "promotions", DataLayer.listOf( // List of promoFieldObjects. DataLayer.mapOf( "id", "JUNE_PROMO13", // ID or Name is required. "name", "June Sale", "creative", "banner1", "position", "slot1"), DataLayer.mapOf( "id", "FREE_SHIP13", "name", "Free Shipping Promo", "creative", "skyscraper1", "position", "slot2")))));
Medir os cliques/seleções da promoção
Para medir uma seleção de promoção, envie a ação promoClick
para a camada de dados com uma matriz contendo um promoFieldObject
que descreva a promoção selecionada:
dataLayer.pushEvent("promotionClick", DataLayer.mapOf( "ecommerce", DataLayer.mapOf( "promoClick", DataLayer.mapOf( "promotions", DataLayer.listOf( DataLayer.mapOf( "id", "JUNE_PROMO13", // Name or ID is required. "name", "June Sale", "creative", "banner1", "position", "slot1"))))));
Medir uma finalização da compra
Para medir cada etapa de um processo de finalização da compra, faça o seguinte:
- Meça cada etapa desse processo usando a ação
checkout
. - Se aplicável, meça as opções de finalização da compra com a ação
checkout_option
. - Inclua nomes fáceis para as etapas no Relatório de funil de finalização da compra. Para isso, basta definir as Configurações de comércio eletrônico na seção Administrador da interface da Web.
1. Medir as etapas de finalização da compra
- Medição de comércio eletrônico:
checkout
- Aceita dados:
step
, matriz deproductFieldObjects
Se quiser medir o processo de finalização da compra, que pode incluir um botão para finalizar a compra e
uma ou mais telas em que os usuários inserem informações de envio e
pagamento, use a ação checkout
e o campo step
para indicar qual etapa está sendo medida.
Também é possível usar o campo option
para fornecer outros dados sobre o processo de finalização da compra, como o tipo de pagamento selecionado pelo usuário.
dataLayer.pushEvent("checkout", DataLayer.mapOf( "ecommerce", DataLayer.mapOf( "checkout", DataLayer.mapOf( "actionField", DataLayer.mapOf( "step", 1, "option", "Visa"), "products", DataLayer.listOf( DataLayer.mapOf( "name", "Triblend Android T-Shirt", "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray", "quantity", 1))))));
2. Medir as opções de finalização da compra
- Medição de comércio eletrônico:
checkout_option
- Aceita dados:
step
eoption
A opção de finalização da compra é útil nos casos em que você já mediu uma etapa do processo, mas quer coletar outras informações sobre a mesma etapa. Por exemplo, o método de envio selecionado por um usuário.
Para isso, use a ação checkout_option
com os campos step
e option
.
dataLayer.pushEvent("checkoutOption", DataLayer.mapOf( "ecommerce", DataLayer.mapOf( "checkout_option", DataLayer.mapOf( "products", DataLayer.listOf(), // checkout_option expects a list of products. The workaround is to provide an empty list. "actionField", DataLayer.mapOf( "step", 1, "option", "Express")))));
3. Configuração do funil de checkout
Cada etapa do seu processo de finalização da compra pode receber um nome descritivo que será usado nos relatórios. Para configurar esses nomes, clique na 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 para rotular cada etapa de finalização da compra que você pretende acompanhar.
Medir as compras
- Medição de comércio eletrônico:
purchase
- Aceita dados:
id
(ID da transação), matriz deproductFieldObjects
Envie os detalhes da transação para a camada de dados usando a ação purchase
e um event
, que vai disparar uma tag de e-commerce avançado. Neste exemplo, os detalhes da transação
são conhecidos no momento em que a tela é exibida:
// Send transaction data with a screenview if possible. // Otherwise, use an event when the transaction data becomes available. dataLayer.push("ecommerce", DataLayer.mapOf( "purchase", DataLayer.mapOf( "actionField", DataLayer.mapOf( "id", "T12345", // Transaction ID. Required for purchases and refunds. "affiliation", "Online Store", "revenue", "35.43", // Total transaction value (incl. tax and shipping) "tax", "4.90", "shipping", "5.99", "coupon", "SUMMER_SALE"), "products", DataLayer.listOf( // List of productFieldObjects. DataLayer.mapOf( "name", "Triblend Android T-Shirt", // Name or ID is required. "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray", "quantity", 1, "coupon", ""), // Optional fields may be omitted or set to empty string. DataLayer.mapOf( "name", "Donut Friday Scented T-Shirt", "id", "67890", "price", "33.75", "brand", "Google", "category", "Apparel", "variant", "Black", "quantity", 1)))));
Medição de reembolsos
- Medição de comércio eletrônico:
refund
- Aceita dados:
id
(ID da transação), matriz deproductFieldObjects
Para medir um reembolso total de uma transação, envie um refund
actionFieldObject
com o ID da transação que está sendo reembolsada:
// Refund an entire transaction by providing the transaction ID. This example // assumes the details of the completed refund are available when the screen // is displayed. dataLayer.push("ecommerce", DataLayer.mapOf( "refund", DataLayer.mapOf( "products", DataLayer.listOf(), // refund expects a list of products. The workaround is to provide an empty list. "actionField", DataLayer.mapOf( "id", "T12345")))); // Transaction ID. Required for refunds.
Para medir um reembolso parcial, adicione uma lista de
productFieldObjects
, incluindo os IDs dos produtos e os valores a serem
reembolsados:
// Measure a partial refund by providing an array of productFieldObjects and // specifying the ID and quantity of each product being returned. This example // assumes the partial refund details are known at the time the screen is // displayed: dataLayer.push("ecommerce", DataLayer.mapOf( "refund", DataLayer.mapOf( "products", DataLayer.listOf( DataLayer.mapOf( "id", "P4567", "quantity", 1), // Product ID & quantity. Required for partial refunds. DataLayer.mapOf( "id", "P8901", "quantity", 2)), "actionField", DataLayer.mapOf( "id", "T12345")))); // Transaction ID.
Combinação de impressões e ações
Quando você tem impressões de produtos e uma ação, é possível combinar e medir tudo em um único hit.
Veja no exemplo abaixo como medir a visualização de detalhes do produto com as impressões de uma seção de produtos relacionados:
dataLayer.push("ecommerce", DataLayer.mapOf( "impressions", DataLayer.listOf( DataLayer.mapOf( "name", "Triblend Android T-Shirt", // Name or ID is required. "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray", "list", "Related Products", "position", 1), DataLayer.mapOf( "name", "Donut Friday Scented T-Shirt", "id", "67890", "price", "33.75", "brand", "Google", "category", "Apparel", "variant", "Black", "list", "Related Products", "position", 2)), "detail", DataLayer.mapOf( "actionField", DataLayer.mapOf( "list", "Apparel Gallery"), // 'detail' actions have an optional list property. "products", DataLayer.listOf( DataLayer.mapOf( "name", "Triblend Android T-Shirt", // Name or ID is required. "id", "12345", "price", "15.25", "brand", "Google", "category", "Apparel", "variant", "Gray")))));