Analytics avançado com eventos customizados para o site do seu servidor de MU Online
Configure eventos customizados no GA4 (ou PostHog) para medir o funil completo do site do seu servidor de MU Online, do primeiro acesso ao download do cliente e à primeira doação, com exemplos de código e estrutura de funil pronta para replicar.
O painel padrão do Google Analytics mostra quantas pessoas visitaram seu site e por quanto tempo, mas não responde à pergunta que realmente importa para um servidor de MU Online: quantas dessas visitas viraram jogadores ativos, e em qual etapa do caminho (home → cadastro → download do cliente → prim
O painel padrão do Google Analytics mostra quantas pessoas visitaram seu site e por quanto tempo, mas não responde à pergunta que realmente importa para um servidor de MU Online: quantas dessas visitas viraram jogadores ativos, e em qual etapa do caminho (home → cadastro → download do cliente → primeiro login → primeira doação) a maioria desiste. Eventos customizados resolvem exatamente essa lacuna, permitindo instrumentar cada ação relevante do funil e visualizar exatamente onde otimizar. Este tutorial detalha como planejar, implementar e analisar um conjunto completo de eventos customizados no GA4, com exemplos de código prontos para adaptar ao seu portal.
O funil completo de um servidor de MU Online
Antes de implementar qualquer evento, mapeie o funil que você quer medir. Um funil típico e completo para um portal de servidor privado tem estas etapas:
| Etapa | Ação do jogador | Evento sugerido |
|---|---|---|
| 1. Descoberta | Chega no site (orgânico, anúncio, indicação) | page_view (padrão do GA4) |
| 2. Interesse | Lê página de recursos/features do servidor | view_features_section |
| 3. Intenção | Clica em "baixar cliente" | download_client_click |
| 4. Conversão de conta | Cria conta no site/painel | sign_up |
| 5. Ativação | Copia o IP do servidor ou clica em "como conectar" | copy_server_ip |
| 6. Retenção | Faz login no jogo (via API do servidor, se disponível) | game_login (server-side) |
| 7. Monetização | Conclui uma doação | purchase |
Sem instrumentar todas as etapas, é impossível saber se o problema do seu servidor é atrair visitantes (etapa 1-2), converter em jogadores (3-5) ou reter e monetizar (6-7) — e cada problema exige uma solução completamente diferente.
Configurando o GA4 com Google Tag Manager
Embora seja possível disparar eventos direto via gtag(), usar o Google Tag Manager (GTM) facilita adicionar e ajustar eventos sem precisar alterar código do site a cada mudança. Instale o container do GTM no <head> de todas as páginas e configure as tags de evento pelo painel do GTM, usando gatilhos de clique em elementos com atributos data-event.
<!-- Exemplo de botão instrumentado com atributo de dado -->
<a href="/download/cliente.zip" data-event="download_client_click" data-category="conversao">
Baixar Cliente
</a>
No GTM, crie um gatilho de "Clique em todos os elementos" filtrado por data-event igual a download_client_click, disparando uma tag de evento GA4 correspondente.
Disparando eventos diretamente via gtag (sem GTM)
Se o seu site é mais simples (sem GTM), dispare os eventos diretamente em JavaScript:
document.querySelectorAll('[data-event]').forEach(function (el) {
el.addEventListener('click', function () {
const eventName = el.getAttribute('data-event');
const category = el.getAttribute('data-category') || 'geral';
gtag('event', eventName, {
event_category: category,
page_location: window.location.href
});
});
});
Esse trecho pode ser incluído uma única vez no arquivo JS global do site e passa a instrumentar automaticamente qualquer elemento que receba o atributo data-event, sem precisar duplicar código de rastreamento em cada botão.
Rastreando a cópia do IP do servidor
Um evento simples, mas revelador: quantos visitantes copiam o IP do servidor (geralmente exibido na home) é um forte indicador de intenção de jogar, mesmo antes da criação de conta.
const ipButton = document.getElementById('copy-server-ip');
if (ipButton) {
ipButton.addEventListener('click', function () {
navigator.clipboard.writeText('play.viciadosmu.com.br');
gtag('event', 'copy_server_ip', {
event_category: 'ativacao'
});
});
}
Compare o número de cópias de IP com o número de contas criadas na mesma semana — uma proporção baixa (muitas cópias, poucas contas) sugere que o processo de cadastro está sendo abandonado, apontando para um problema na etapa seguinte do funil, não na etapa de interesse.
Rastreando eventos de servidor no lado do backend
Ações que acontecem dentro do jogo (login, criação de personagem, primeira entrada em Devil Square) não passam pelo navegador, então não podem ser capturadas via JavaScript no site. Para esses casos, envie o evento server-side usando a Measurement Protocol do GA4:
<?php
// enviar_evento_servidor.php - chamado pelo painel/API quando o jogador faz login
$measurement_id = "G-XXXXXXXXXX";
$api_secret = "sua_api_secret_do_ga4";
$client_id = md5($account_id); // identificador consistente, não precisa ser real
$payload = [
"client_id" => $client_id,
"events" => [[
"name" => "game_login",
"params" => [
"account_id_hash" => $client_id,
"server" => "season-atual"
]
]]
];
$url = "https://www.google-analytics.com/mp/collect?measurement_id={$measurement_id}&api_secret={$api_secret}";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_exec($ch);
curl_close($ch);
Esse padrão permite cruzar dados de site e de jogo em um único relatório, fechando o funil completo do "primeiro clique" até a "retenção in-game", algo que a maioria dos portais de MU nunca consegue medir por tratar site e servidor como sistemas separados.
Nomenclatura consistente de eventos
Um erro comum ao crescer a instrumentação é criar eventos com nomes inconsistentes (downloadClient, download-client, btn_download), o que impede a análise cruzada depois. Adote uma convenção única desde o início:
| Regra | Exemplo correto | Exemplo incorreto |
|---|---|---|
| snake_case sempre | download_client_click | downloadClientClick |
| Verbo + objeto | copy_server_ip | ip_copied_event |
| Prefixo de categoria em parâmetro, não no nome | event_category: "conversao" | conversao_download_client |
| Nomes reutilizados entre site e doação | purchase (padrão GA4 de e-commerce) | donation_complete isolado |
Construindo o funil no GA4
Com os eventos configurados, use a ferramenta de Exploração > Funil do GA4 para montar o funil completo: page_view → download_client_click → sign_up → copy_server_ip → game_login → purchase. O GA4 mostra a taxa de queda entre cada etapa, revelando exatamente onde investir esforço de otimização — se 80% desiste entre sign_up e copy_server_ip, o problema está no fluxo pós-cadastro, não na home.
Segmentando por origem de tráfego
Combine os eventos com a dimensão de origem/mídia (orgânico, Discord, anúncio pago, indicação) para descobrir quais canais trazem jogadores que de fato completam o funil até a doação, não apenas visitas. É comum um canal gerar muito volume de page_view mas baixa conversão até purchase, enquanto um canal menor (indicação de jogador, por exemplo) converte proporcionalmente muito mais — informação essencial para decidir onde investir tempo e orçamento de divulgação.
Erros comuns e soluções
| Sintoma | Causa provável | Solução |
|---|---|---|
| Eventos não aparecem no GA4 | Tag/gtag não disparando ou ID de measurement errado | Teste no relatório "Tempo real" e confira o Measurement ID |
| Funil mostra queda de 100% em uma etapa | Nome do evento inconsistente entre etapas | Padronize a nomenclatura (snake_case, mesmos nomes em todo o site) |
| Eventos de servidor (game_login) não chegam | API secret ou endpoint da Measurement Protocol incorretos | Revise credenciais e teste a chamada isoladamente com curl |
| Dados duplicados entre GTM e gtag direto | Dois métodos de disparo ativos ao mesmo tempo | Escolha um único método (GTM ou gtag direto) por evento |
| Relatório de funil vazio por dias | Latência de processamento do GA4 (24-48h) | Aguarde o processamento antes de considerar o evento com falha |
Checklist de analytics avançado
- Funil completo mapeado, do primeiro acesso à doação.
- Eventos customizados nomeados de forma consistente (snake_case).
- Eventos de frontend (download, copiar IP) instrumentados via GTM ou gtag.
- Eventos server-side (login, ações in-game) enviados via Measurement Protocol.
- Funil montado na ferramenta de Exploração do GA4.
- Segmentação por origem de tráfego configurada.
- Teste em tempo real validado antes de considerar a instrumentação completa.
Com o funil de analytics completo em produção, o próximo passo natural é usar esses mesmos dados para alimentar testes controlados na página de doação, conectando aquisição e conversão em um único ciclo de otimização a partir do tutorial de como criar um servidor de MU Online.
Perguntas frequentes
Por que os relatórios padrão do Google Analytics não são suficientes para um servidor de MU?
Os relatórios padrão medem pageview e sessão, mas não capturam ações específicas do seu negócio, como 'clicou em baixar cliente', 'copiou o IP do servidor' ou 'concluiu uma doação'. Sem eventos customizados, você não sabe em qual etapa do funil os jogadores estão desistindo antes de criar conta ou jogar de fato.
GA4 é a melhor opção ou existe alternativa melhor para servidores de MU?
GA4 é gratuito e amplamente documentado, o que o torna o padrão de mercado. PostHog é uma alternativa open source com session replay e funis nativos mais visuais, boa opção se você quer rodar self-hosted e ter mais controle sobre os dados dos jogadores.
É seguro rastrear ações de jogadores sem violar privacidade?
Sim, desde que você rastreie ações no site (cliques, downloads, conversões) sem coletar dados sensíveis ou pessoais além do necessário, e tenha uma política de privacidade acessível informando o uso de analytics. Evite rastrear informações de conta ou senha em qualquer evento.
Quanto tempo leva para eventos customizados aparecerem nos relatórios do GA4?
Eventos em tempo real aparecem em segundos no relatório 'Tempo real', mas para os relatórios padrão (Exploração, funis) o GA4 costuma levar de 24 a 48 horas para processar e disponibilizar os dados completos.
Posso usar os mesmos eventos customizados na página de doação e no restante do site?
Sim, e é recomendado — mantenha uma nomenclatura consistente de eventos (ex.: sempre snake_case, sempre com prefixo de categoria) em todo o site, incluindo a página de doação, para poder cruzar dados de todo o funil em uma única exploração no GA4.