Como fazer a integração com o Google Analytics

O Google Analytics Platform permite mensurar as interações dos usuários com seus negócios em vários dispositivos e ambientes. O Google Analytics fornece os recursos necessários para coletar, armazenar, processar e gerar relatórios dessas interações do usuário.

É possível coletar dados de análises tanto do lado do cliente quanto do servidor.

Coleta de dados de análise do lado do cliente

Use as APIs e os SDKs do Google Analytics para mensurar como os usuários interagem com seu conteúdo e iniciativas de marketing. É possível ver os dados das interações de usuários na interface do Google Analytics ou usar APIs de relatórios para buscar esses dados. Para mais detalhes sobre a coleta de dados de análise do lado do cliente, selecione um link abaixo, de acordo com o tipo de cliente:

  • Web Tracking (analytics.js) - Meça a interação do usuário com sites ou aplicativos da Web.
  • Android - meça a interação do usuário com aplicativos para Android.
  • iOS - meça a interação do usuário com aplicativos para iOS.
  • Protocolo de avaliação - Meça a interação do usuário em qualquer ambiente com este protocolo de nível inferior.

Coleta de dados de análise do lado do servidor

O App Engine fornece um mecanismo para gerar registros de eventos no aplicativo. No entanto, é possível usar o Google Analytics para acompanhar eventos específicos do lado do servidor para diversos fins:

  • Analisar dados históricos: o App Engine permite configurar o tamanho ou número máximo de dias dos arquivos de registros. Depois que esse limite for ultrapassado, você perderá o acesso a esses arquivos de registros. Acompanhar eventos no Google Analytics permite visualizar eventos passados por muito mais tempo.
  • Acompanhar eventos importantes: os arquivos de registros podem ser muito complexos, incluindo e registrando dados de vários componentes de um aplicativo. Ao usar o acompanhamento de eventos, é possível identificar eventos importantes e acompanhá-los, além de alguns metadados.
  • Trabalhar na interface do usuário - Aproveite a sofisticada interface do usuário oferecida pelo Google Analytics para ver, gerar relatórios e exportar eventos do lado do servidor.

Para ativar a coleta de dados de análise do lado do servidor, use um cliente HTTP e faça solicitações desse tipo com o Protocolo de avaliação do Google Analytics. Para saber mais, consulte o tópico Acompanhamento de eventos no guia do desenvolvedor do Google Analytics.

Aplicativo de amostra

Veja como rastrear eventos no aplicativo do App Engine consultando o aplicativo de amostra abaixo. Uma solicitação HTTP é feita e os dados sobre o evento são postados no Google Analytics.

Antes de usar o Measurement Protocol do Google Analytics no App Engine, siga estas etapas:

  1. Crie uma propriedade do Universal Analytics e receba o ID de acompanhamento.

  2. Inclua as variáveis de ambiente no arquivo app.yaml com o ID de acompanhamento. Por exemplo, no aplicativo de amostra abaixo:

    env_variables:
      GA_TRACKING_ID: UA-XXXXX-Y
  3. Antes de executar o aplicativo de amostra localmente, defina as variáveis de ambiente obrigatórias:

    export GA_TRACKING_ID=YOUR_TRACKING_ID
    
  4. Execute o exemplo de código localmente usando a linha de comando. Exemplo:

    go run analytics.go
    

  5. Integre o código a seguir ao aplicativo do App Engine para postar os dados de acompanhamento de eventos no Google Analytics:

    
    // Sample analytics demonstrates Google Analytics calls from App Engine flexible environment.
    package main
    
    import (
    	"errors"
    	"fmt"
    	"log"
    	"net"
    	"net/http"
    	"net/url"
    	"os"
    
    	uuid "github.com/gofrs/uuid"
    
    	"google.golang.org/appengine"
    )
    
    var gaPropertyID = mustGetenv("GA_TRACKING_ID")
    
    func mustGetenv(k string) string {
    	v := os.Getenv(k)
    	if v == "" {
    		log.Fatalf("%s environment variable not set.", k)
    	}
    	return v
    }
    
    func main() {
    	http.HandleFunc("/", handle)
    
    	appengine.Main()
    }
    
    func handle(w http.ResponseWriter, r *http.Request) {
    	if r.URL.Path != "/" {
    		http.NotFound(w, r)
    		return
    	}
    
    	if err := trackEvent(r, "Example", "Test action", "label", nil); err != nil {
    		fmt.Fprintf(w, "Event did not track: %v", err)
    		return
    	}
    	fmt.Fprint(w, "Event tracked.")
    }
    
    func trackEvent(r *http.Request, category, action, label string, value *uint) error {
    	if gaPropertyID == "" {
    		return errors.New("analytics: GA_TRACKING_ID environment variable is missing")
    	}
    	if category == "" || action == "" {
    		return errors.New("analytics: category and action are required")
    	}
    
    	v := url.Values{
    		"v":   {"1"},
    		"tid": {gaPropertyID},
    		// Anonymously identifies a particular user. See the parameter guide for
    		// details:
    		// https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#cid
    		//
    		// Depending on your application, this might want to be associated with the
    		// user in a cookie.
    		"cid": {uuid.Must(uuid.NewV4()).String()},
    		"t":   {"event"},
    		"ec":  {category},
    		"ea":  {action},
    		"ua":  {r.UserAgent()},
    	}
    
    	if label != "" {
    		v.Set("el", label)
    	}
    
    	if value != nil {
    		v.Set("ev", fmt.Sprintf("%d", *value))
    	}
    
    	if remoteIP, _, err := net.SplitHostPort(r.RemoteAddr); err != nil {
    		v.Set("uip", remoteIP)
    	}
    
    	// NOTE: Google Analytics returns a 200, even if the request is malformed.
    	_, err := http.PostForm("https://www.google-analytics.com/collect", v)
    	return err
    }
    

Se você tiver ativado a configuração no Admin Console do Google Analytics para excluir o tráfego de indexadores e bots ou se estiver usando o Google Analytics 4 (que filtra esse tráfego automaticamente), talvez o Analytics não exiba resultados de clientes do App Engine. Esses cenários filtram o user agent padrão do App Engine. Para ver os resultados do App Engine, inclua o parâmetro ua nos dados de acompanhamento e defina-o com um valor personalizado.