O que é uma Single-Page Application (SPA)?
Uma Single-Page Application (SPA) é um tipo de aplicação web que carrega uma única página HTML e atualiza o conteúdo dinamicamente sem recarregar a página inteira. Isso resulta em uma experiência mais fluida, similar a um app nativo.
Exemplos populares: Gmail, Google Maps, Facebook, Trello, aplicações React/Vue/Angular. A vantagem de performance é significativa — mas cria desafios únicos para rastreamento.
Por que SPAs são difíceis de rastrear?
Em sites tradicionais, cada navegação para uma nova página dispara um novo pageview — o GTM naturalmente captura cada mudança. Em SPAs, isso não acontece: o URL pode mudar, mas a página não é recarregada.
- Triggers padrão de pageview não funcionam da mesma forma
- Eventos de clique e formulário podem não ser detectados por auto-listeners
- É necessário configurar rastreamento específico para capturar mudanças de 'página' virtual
- Risco de não capturar pageviews ou capturá-los em duplicata se mal configurado
Método 1: GA4 Enhanced Measurement
- No GA4, acesse Admin > Data Streams e selecione o stream desejado
- Clique no ícone de configurações em Enhanced Measurement
- Clique em Show Advanced Settings
- Ative 'Page changes based on browser history events'
- Desative ou configure outros eventos de Enhanced Measurement via GTM para evitar duplicatas
- Salve e entre no Preview Mode do GTM para verificar
Esse método é o mais simples, mas pode precisar de ajustes dependendo da arquitetura do SPA. Algumas implementações React/Vue não alteram o history da mesma forma.
Método 2: History Change trigger no GTM
- No GTM, vá em Triggers > Nova > selecione 'History Change' como tipo
- Configure para disparar em 'All History Changes'
- Salve e crie uma tag GA4 para disparar com esse trigger
- Monitore duplicatas no Preview Mode — algumas SPAs disparam múltiplos eventos de history por navegação
Se o SPA usa hash-based routing (#/pagina em vez de /pagina), o History Change pode não capturar corretamente. Verifique a implementação de routing da aplicação.
Método 3: Data Layer Push (método recomendado)
O método mais confiável para SPAs é ter o desenvolvedor empurrando eventos customizados ao dataLayer quando ocorre uma navegação virtual. Isso dá controle total sobre quando e quais dados são rastreados.
- O desenvolvedor configura um push ao dataLayer em cada navegação: `dataLayer.push({event: 'virtualPageview', pageUrl: window.location.href, pageTitle: document.title})`
- No GTM, crie duas variáveis Data Layer (para pageUrl e pageTitle)
- Crie um trigger Custom Event com nome 'virtualPageview'
- Crie uma tag GA4 Event com event_name: page_view, parâmetros page_location e page_title usando as variáveis
- Importante: não adicione page_location e page_title à tag GA4 Configuration — use uma tag Event separada
- Desative 'Send a page view event when this configuration loads' na tag GA4 Configuration para evitar duplicatas
Desafios comuns e como resolver
- JavaScript desabilitado: sem JS, nenhum método de rastreamento funciona em SPAs. Server-side GTM captura apenas o pageload inicial, não as navegações subsequentes.
- URL com parâmetros e fragmentos: use `window.location.href` (não `document.location`) para capturar a URL completa incluindo query strings e hashes.
- Múltiplos eventos de history: investigue quais eventos estão sendo disparados e adicione filtros ao trigger para eliminar duplicatas.
- Rogue referral (falso referrer): o GA4 pode registrar o próprio site como referenciador. Configure exclusões de referral no GA4 para o seu próprio domínio.
Perguntas frequentes
Qual dos 3 métodos devo usar?
Depende do controle que você tem sobre o código. Se você tem acesso ao código da SPA, use o Método 3 (Data Layer Push) — é o mais confiável. Se não tem acesso ao código, comece pelo Método 1 (Enhanced Measurement) e ajuste conforme necessário.
O server-side GTM resolve os problemas de tracking em SPAs?
O sGTM ajuda na transmissão de dados após captura — mas a captura inicial ainda depende da configuração client-side. O sGTM garante que os dados cheguem às plataformas com mais confiabilidade.
Como testar se o rastreamento está correto em uma SPA?
Use o GTM Preview Mode e navegue pela SPA simulando o comportamento do usuário. Verifique se os pageviews aparecem em sequência correta sem duplicatas. Depois confirme no GA4 DebugView.
Este artigo é uma adaptação em português de conteúdo originalmente publicado em inglês pela equipe da Stape. Ver artigo original.