Como configurar o Google Tag Manager em um site DeFi (sem quebrar a privacidade)
As equipes DeFi deixam analytics para o final. Quando alguém percebe que tem visibilidade zero sobre onde os usuários abandonam o fluxo de wallet-connect, o protocolo já está no ar há 6 meses. Aqui está o setup de GTM que captura os 6 eventos que realmente importam, se mantém privacy-safe e não vaza endereços de wallet para redes de ads.
Por que GTM especificamente para DeFi
Você poderia hardcodear chamadas de analytics no seu frontend. Muitas equipes DeFi fazem isso. O problema: mudar o que você trackeia exige um deploy de frontend. Com o GTM, a data layer passa por um event bus e as tags são configuradas server-side no contêiner GTM. As equipes de marketing e analytics podem ajustar o tracking sem deploys de engenharia.
Para DeFi especificamente, o maior valor é o tracking de wallet-event. Wallet connect, transação assinada, transação confirmada, transação falhada. Esses eventos disparam a partir do SDK da wallet, não da página. Rotear esses eventos através do GTM significa que você pode fazer fan out para múltiplos destinos de analytics (GA4, Mixpanel, warehouse custom) sem 4 chamadas separadas de SDK.
O detalhe: o DeFi tem requisitos sérios de privacidade que o e-commerce mainstream não tem. Os endereços de wallet são pseudo-PII. Os hashes de transação podem ser correlacionados com dados on-chain. O comportamento default do GTM costuma vazar os dois. Configurado corretamente ou nada.
Os 6 eventos que todo protocolo DeFi deveria trackear
Trackeie esses seis eventos. Tudo o resto é ruído.
1. wallet_connect_attempted. O usuário clicou no botão Connect Wallet. Dispara antes de o diálogo da carteira abrir. Este evento captura a intenção.
2. wallet_connect_succeeded. O usuário concluiu a conexão da carteira. Tudo bem capturar o nome do provedor da carteira (MetaMask, Phantom etc.). O endereço da carteira NÃO.
3. wallet_connect_failed. O usuário cancelou ou a carteira recusou. Capture o motivo da recusa se o SDK da carteira o expuser.
4. transaction_submitted. O usuário assinou e enviou uma transação. Capture o tipo de transação (swap, stake, mint etc.) e o contrato do protocolo envolvido (não a carteira do usuário).
5. transaction_confirmed. Transação confirmada on-chain. Não faça polling para isso; escute o evento de confirmação do SDK da carteira.
6. transaction_failed. A transação foi revertida on-chain. Capture o motivo do revert, se disponível. Este é o evento mais útil para diagnosticar e corrigir problemas de UX.
Esse é o plano completo de tracking. Resista ao impulso de adicionar page_view, click, scroll. O GA4 já captura esses por padrão. Adicionar mais eventos custom dilui o sinal dos 6 eventos que realmente importam para decisões de produto.
Configuração do evento de conexão de carteira
Envie para o dataLayer a partir do seu manipulador de conexão de carteira:
// On user clicks Connect Wallet
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'wallet_connect_attempted',
wallet_provider: 'metamask', // detected from wallet SDK
});
// On wallet connection success
window.dataLayer.push({
event: 'wallet_connect_succeeded',
wallet_provider: 'metamask',
chain_id: 1, // human-readable chain, not wallet address
// DO NOT push wallet_address here
});No GTM, crie três triggers (um por evento) e três tags (uma por destino). Cada tag dispara quando seu trigger vê o evento dataLayer correspondente.
Para o GA4, o nome do evento mapeia 1:1. Para o Mixpanel, envie o mesmo nome de evento mais o wallet_provider e o chain_id como propriedades. Evite enviar o mesmo evento 4 vezes para 4 destinos diretamente pela página; em vez disso, faça fan out através do GTM.
Rastreamento de eventos de transação
Os eventos de transação disparam depois que o usuário assina. O push da data layer precisa capturar contexto protocol-side, não user-side.
// On transaction submission (after wallet signs)
window.dataLayer.push({
event: 'transaction_submitted',
transaction_type: 'swap', // swap, stake, claim, mint, etc.
protocol_contract: '0xA0b8...', // your contract
amount_usd_bucket: '100-1000', // bucket, not exact amount
chain_id: 1,
// NEVER push: from_address, transaction_hash, exact USD amount
});O padrão amount_usd_bucket é crítico. Os valores exatos de transação são pseudo-PII quando combinados com timestamp; podem identificar usuários. Faça bucket do valor: under-100, 100-1000, 1000-10000, over-10000. Essa é resolução suficiente para decisões de produto e remove a preocupação de privacidade.
Mesma abordagem para transaction_confirmed e transaction_failed. Trackeie o que aconteceu, qual tipo, qual bucket e em qual cadeia. Pule o resto.
Regras de privacidade: nunca envie isso ao GTM
Seis coisas que você nunca deve pushear para a data layer ou enviar através do GTM. Se você está enviando qualquer uma delas, seu analytics DeFi é uma liability de privacidade.
1. Wallet addresses. Pseudo-PII. Podem ser correlacionados com identidades reais por meio de serviços de análise on-chain.
2. Hashes de transação. São públicos on-chain, mas combiná-los com o user-agent e o timestamp no seu banco de dados de analytics cria um vetor de reidentificação.
3. Valores exatos de transação em USD. Use faixas em vez disso.
4. ENS names. Alguns usuários usam o nome real como ENS. Trate como PII.
5. Códigos de indicação definidos pelo usuário. Costumam conter nomes de usuário identificáveis.
6. Endereços de e-mail de inscrições opcionais na newsletter. Envie-os diretamente para sua ferramenta de e-mail, não pelo GTM, onde tags de redes de anúncios podem capturá-los.
Integração do Consent Mode
O Google Consent Mode v2 é obrigatório para sites que atendem usuários da UE. O GTM tem suporte nativo. Você configura cada tag com requisitos de consent e a tag espera para disparar até que o usuário conceda o tipo de consent exigido.
Para os 6 eventos DeFi: consent analytics_storage para o destino GA4, consent ad_storage se você estiver enviando para plataformas de advertising (a maioria dos protocolos DeFi não faz isso) e personalization_storage para qualquer tagging de user-segmentation.
O banner de consent se integra ao GTM enviando o estado de consent para a data layer quando o usuário faz uma escolha. Use um CMP que suporte Consent Mode v2 nativamente (Cookiebot, OneTrust, Iubenda). Não crie seu próprio banner do zero; fazer o Consent Mode correto na mão é mais difícil do que escolher um vendor.
O GTM server-side é o próximo upgrade para sites DeFi privacy-serious. Ele move a execução das tags para um contêiner Google Cloud que você controla, o que significa que os dados brutos vão para o seu servidor primeiro e você decide o que encaminhar. Vale o tempo de setup se você lida com usuários da UE em escala ou tem uma função de CISO de verdade.
Perguntas comuns
Preciso de GTM se tenho o GA4 fixo no código?
Não estritamente. O GTM adiciona flexibilidade para equipes non-engineering ajustarem o tracking. Se sua equipe é pequena e o tracking raramente muda, GA4 hardcoded mais o wallet event bus já é suficiente.
Posso enviar endereços de carteira ao GA4 se eu aplicar hash neles?
O hashing ajuda, porém não resolve completamente. Hashing adequado (salt próprio, server-side) está OK. SHA-256 client-side de um endereço de wallet ainda é efetivamente pseudo-PII porque o espaço de input é enumerável.
E se meu site DeFi tiver 0 usuários na UE?
O compliance ainda importa. Alguns estados dos EUA (Califórnia, Virgínia, Colorado) têm leis de privacidade que refletem as regras de consent de analytics do GDPR. Consent Mode é boa prática em todo lugar agora.
Devo usar GTM server-side?
Vale a pena se você tem mais de 100 mil usuários mensais ou qualquer tráfego regulado UE/Reino Unido. Abaixo disso, GTM client-side com Consent Mode já é suficiente.
Como verifico se o GTM não está vazando endereços de carteira?
A aba de network das dev tools do navegador. Filtre por requests para googletagmanager.com ou google-analytics.com. Inspecione o payload de cada request. Se você ver qualquer coisa que pareça um endereço de wallet ou hash de transação, algo está malconfigurado.
Audite seu site crypto em 60 segundos
Scan profundo de 8 módulos. Visibilidade de IA, schema, SEO técnico, backlinks. Um domínio grátis para sempre.
