NEWWorld's first AI visibility audit tool for Web3 is live.Run free audit →
How to · 9 min read · Published 2026-05-14

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.

Chapter 01
// Setup rationale

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.

Chapter 02
// Tracking plan

Os 6 eventos que todo protocolo DeFi deveria trackear

Trackeie esses seis eventos. Tudo o resto é ruído.

1. wallet_connect_attempted. User clicked the Connect Wallet button. Fires before the wallet dialog opens. This event captures intent.

2. wallet_connect_succeeded. User completed the wallet connection. Wallet provider name is fine to capture (MetaMask, Phantom, etc). Wallet address is NOT.

3. wallet_connect_failed. User cancelled or the wallet rejected. Capture the rejection reason if exposed by the wallet SDK.

4. transaction_submitted. User signed and submitted a transaction. Capture the transaction type (swap, stake, mint, etc) and the protocol contract involved (not the user's wallet).

5. transaction_confirmed. Transaction confirmed on-chain. Don't poll for this; listen to the wallet SDK's confirmation event.

6. transaction_failed. Transaction reverted on-chain. Capture the revert reason if available. This is the most diagnostic event for fixing UX problems.

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.

Chapter 03
// Implementation

Setup do evento wallet connect

Pushe para a data layer a partir do seu handler wallet-connect:

// 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.

Chapter 04
// Implementation

Tracking de evento 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.

Chapter 05
// Hard rules

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. Correlatable to real identities through on-chain analysis services.

2. Transaction hashes. Public on-chain but combining them with user-agent and timestamp in your analytics database creates a re-identification vector.

3. Exact transaction USD values. Bucket instead.

4. ENS names. Some users use their real names as ENS. Treat as PII.

5. User-set referral codes. Often contain identifiable usernames.

6. Email addresses from optional newsletter signups. Send those directly to your email tool, not through GTM where ad-network tags can scrape them.

Chapter 06
// GDPR

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 frequentes
// Perguntas frequentes

Perguntas comuns

Do I need GTM if I have GA4 hardcoded?

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.

Can wallet addresses be sent to GA4 if I hash them?

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.

What if my DeFi site has 0 EU users?

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.

Should I use server-side GTM?

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.

How do I verify GTM isn't leaking wallet addresses?

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.