Mudança no formato do cookie de sessão do Google Analytics 4: O que você precisa saber
O que você irá aprender?
O Google implementou recentemente (sem avisar ngm) uma mudança significativa no formato dos cookies de sessão do Google Analytics 4. Esta atualização afeta como os dados de sessão são armazenados e processados, o que pode potencialmente impactar suas implementações de conversão offline.
O que mudou no cookie de sessão do Google Analytics 4
- Novo Tipo de Caractere: O session_id agora inclui um prefixo de caractere "s"
- Mudança de Delimitador: Os delimitadores anteriores de ponto (".") foram substituídos por cifrões ("$")
- Exemplo do Novo Formato:
GS2.1.s1746549903$o1$g0$t1746549917$j60$l0$h841189436
Esta mudança pode afetar sua implementação se você: Tiver scripts personalizados que analisam ou manipulam cookies de sessão do GA4 Usar rastreamento server-side que lê ou modifica valores de cookie do GA4 Implementar rastreamento entre domínios baseado em formatos de cookie de sessão Utilizar sistemas de gerenciamento de tags que interagem com dados de sessão do GA4
Acessar diretamente os cookies pode resultar em diversos problemas técnicos e de conformidade, incluindo quebras de funcionalidade quando o Google fizer futuras atualizações (como é o caso agora), inconsistências graves nos dados de analytics que comprometem relatórios e atribuições, possíveis violações de privacidade do usuário em um cenário regulatório cada vez mais rigoroso, além de potencialmente violar os próprios termos de serviço do Google Analytics, que recomenda explicitamente o uso de suas APIs oficiais para acesso aos dados.
Use SEMPRE a API gtag: A única forma recomendada e segura para obter o SessionID e o ClientID:
gtag('get', 'G-XXXXXXXXXX', 'session_id', (sessionId) => {
// Armazene este valor para uso posterior em conversões offline
saveForOfflineConversion('session_id', sessionId);
});
// Para o client_id faça o mesmo
gtag('get', 'G-XXXXXXXXXX', 'client_id', (clientId) => {
// Armazene este valor para uso posterior em conversões offline
saveForOfflineConversion('client_id', clientId);
});
Quando implementar o envio de dados offline via Measurement Protocol, sempre inclua os parâmetros client_id e session_id obtidos através da API gtag nas solicitações para garantir a atribuição adequada.
É fundamental ressaltar que o método
é assíncrono, o que significa que o código não bloqueia a execução enquanto espera a resposta, exigindo que você aguarde o callback ser executado antes de tentar usar os valores obtidos, sem possibilidade de simplesmente atribuir o resultado a uma variável de forma síncrona como ocorreria em operações convencionais.gtag('get', ...)
Para implementações que precisam garantir que ambos os valores (client_id e session_id) estejam disponíveis para envio ao Measurement Protocol, utilize uma abordagem de promessas:
function getGAValues() {
return new Promise((resolve) => {
const values = {};
// Função para verificar se já temos todos os valores necessários
const checkComplete = () => {
if (values.clientId && values.sessionId) {
resolve(values);
}
};
// Obter client_id
gtag('get', 'G-XXXXXXXXXX', 'client_id', (clientId) => {
values.clientId = clientId;
checkComplete();
});
// Obter session_id
gtag('get', 'G-XXXXXXXXXX', 'session_id', (sessionId) => {
values.sessionId = sessionId;
checkComplete();
});
});
}
// Uso:
getGAValues().then(values => {
console.log("Client ID:", values.clientId);
console.log("Session ID:", values.sessionId);
// Agora é seguro enviar estes valores para seu backend
// para uso posterior em conversões offline via Measurement Protocol
saveForOfflineConversion(values);
});
Este padrão assegura que os valores vão estar disponíveis antes de serem utilizados em implementações de conversões offline.
Impacto em Conversões Offline e Measurement Protocol
A mudança no formato do cookie de sessão do Google Analytics 4 tem um impacto direto em aplicações que utilizam o Measurement Protocol para enviar conversões offline para o Google Analytics 4. Muitas empresas armazenam os valores dos cookies de sessão
para posteriormente associar conversões offline à sessão original do usuário.(_ga e _ga_MEASUREMENT-ID)
Estou dizendo isso por que eu sei que tem muita aplicação legado que está usando os cookies, eu mesmo vou ter que atualizar alguns códigos legados, com a mudança no formato do cookie, qualquer sistema que extraia diretamente o Session ID do cookie _ga_MEASUREMENT-ID e não esteja preparado para o novo formato com delimitador "$" e prefixo "s" falhará em associar corretamente as conversões offline às sessões originais.
Exemplos de cenários afetados
- CRMs que armazenam dados de sessão: Sistemas que salvam o ID de sessão quando um usuário preenche um formulário para posteriormente atribuir uma venda offline à campanha original.
- Sistemas de Ponto de Venda (PDV): Lojas físicas que associam visitas ao site com compras feitas na loja por meio do rastreamento do ID de sessão.
- Fluxos de conversão multi-etapa: Quando um usuário inicia um processo em um site, mas completa a conversão em outro canal (telefone, aplicativo, loja física).
A falha em atualizar esses sistemas pode resultar em dados de atribuição incorretos, onde as conversões aparecem como "(not set)" ou "Direto" em vez de serem atribuídas corretamente à fonte original do tráfego.
"Ah Lucian, mas eu copiei esse código no meu Google Tag Manager e deu 'gtag is not defined'!"
Este é um problema comum! Quando você utiliza o Google Tag Manager (GTM), a função
não fica disponível diretamente no escopo global do navegador como acontece com a implementação direta da tag do GA4.gtag()
Isso ocorre porque o GTM encapsula a funcionalidade do GA4 em sua própria estrutura, mantendo o código isolado. Felizmente, existe uma solução para isso:
Solução: Use a Custom Template Tag no Google Tag Manager fizemos ela possibilita acessar os valores de
e client_id
mesmo em implementações com Google Tag Manager. Vale inclusive deixar o agradecimento ao Arthur Mangabeira que deu uma luz para gente desenvolver essa tag de template.session_id
Para implementar esta solução:
- Importe a tag de template personalizada para seu container GTM
- Configure a tag para capturar os valores desejados
- Use os valores capturados para suas implementações de conversão offline
Isso vai gerar um evento de
que ira trazer as informações para você diretamente na sua camada de dados.
identity
Esta abordagem permite que você obtenha os dados necessários para o Measurement Protocol sem manipular cookies diretamente, mesmo quando estiver usando o GTM como camada de gerenciamento de tags.