Guia de integração
Analytics no WordPress
Duas linhas no <head> do site, coladas por um plugin de cabeçalho ou pelo tema filho. Sem cookies — um passo a menos no banner da LGPD.
Antes de começar
- Acesso de administrador ao painel do WordPress.
- A
site_keye o domínio em Allowed origins (com e semwww, se o site responder nos dois).
Instalação
1Opção 1: cole o snippet com o WPCode
Instale o plugin gratuito WPCode (antigo "Insert Headers and Footers"). Vá em Code Snippets → Header & Footer, cole o snippet no campo Header e clique em Save Changes.
<script src="https://cdn.jsdelivr.net/npm/@racoelho/analytics@0.2/dist/index.global.js"></script> <script>window.analytics = new Analytics.Analytics({ siteKey: 'YOUR_SITE_KEY' })</script>2Opção 2: pelo
functions.phpdo tema filhoSe você prefere não instalar plugin, use o gancho
wp_head. Faça isso num tema filho — ofunctions.phpdo tema principal é sobrescrito nas atualizações.wp-content/themes/seu-tema-filho/functions.php <?php // carrega o SDK no <head> de todas as páginas do site add_action('wp_head', function () { echo '<script src="https://cdn.jsdelivr.net/npm/@racoelho/analytics@0.2/dist/index.global.js"></script>'; echo "<script>window.analytics = new Analytics.Analytics({ siteKey: 'YOUR_SITE_KEY' })</script>"; });3Limpe o cache
Se o site usa plugin de cache (WP Rocket, LiteSpeed Cache, W3 Total Cache…) ou CDN, limpe o cache para as páginas saírem com o script novo.
Eventos e metas
Qualquer script do site pode chamar window.analytics. Dois casos comuns: formulários do Contact Form 7 e compras do WooCommerce. O window.analytics && evita erro se o SDK estiver bloqueado.
<script>
// Contact Form 7: dispara quando a mensagem é enviada com sucesso
document.addEventListener('wpcf7mailsent', function (event) {
window.analytics && window.analytics.formSubmit(String(event.detail.contactFormId), 'contact')
})
</script><?php
// WooCommerce: página de pedido recebido
add_action('woocommerce_thankyou', function ($order_id) {
$order = wc_get_order($order_id);
if (!$order) return;
printf(
'<script>window.analytics && window.analytics.purchase(%s, %s, %s)</script>',
wp_json_encode((string) $order->get_order_number()),
wp_json_encode((float) $order->get_total()),
wp_json_encode($order->get_currency())
);
});No painel, crie metas do tipo evento form_submit e purchase. Para páginas fixas (como /obrigado), use uma meta do tipo caminho — sem código. A URL de pedido do WooCommerce muda a cada pedido, por isso o evento.
Navegação entre páginas
Sites WordPress recarregam a página a cada clique, e cada carga conta a própria pageview. Não há nada a configurar.
Confira se está funcionando
- Abra o site publicado numa janela comum, sem bloqueador de anúncios.
- Nas ferramentas do navegador, aba Network, filtre por
v1/i: deve aparecer umPOSTcom status200em até 3 segundos (ou quando você sai da página). - No painel, os eventos aparecem em cerca de 30 segundos.
- Abra o código-fonte da página (Ctrl+U) e procure por
index.global.js— se não aparecer, o cache ainda está servindo a versão antiga.
Problemas comuns
- Plugins de otimização quebraram o script
- Plugins que adiam ou juntam JavaScript podem mudar a ordem das duas linhas. Exclua
index.global.jse o script comnew Analytics.Analyticsda otimização ("delay/defer JS"). - A requisição volta 403 (
origin_not_allowed) - O domínio não está em Allowed origins nas configurações do site. Cadastre a origem exata — com
https://, com e semwww, e endereços de teste comohttp://localhost:3000se quiser medir em desenvolvimento. - Nenhuma requisição aparece na aba Network
- O SDK respeita o Do Not Track por padrão: se o seu navegador envia DNT, nada é enviado. Teste em outro navegador ou perfil. Bloqueadores de anúncio também podem barrar o script.
- As pageviews aparecem em dobro
- O SDK foi inicializado duas vezes (por exemplo, o script colado no tema e também por um plugin). Mantenha uma única instância por página.