Pular para o conteúdo principal

Debug

Como inspecionar cada surface de marketing pra investigar problema de tracking.

DevTools — onde olhar cada coisa

Cookies

ApplicationCookies → seleciona o domínio.

CookiePra que olhar
cookie_trackingUTMs, clicked-IDs, affiliate code
cookie_referrerReferrer first-touch + cinfo IDs
_gaGA client ID
<rmkCookie>rmk7k, rmkbpb, rmkcl7k, …UUID de remarketing (nome varia por brand — ver Config map)
<rmkCookie>_audAudience tags do funil
lastclickClever Advertising ID
cookies_consentPreferências LGPD do user
_fbp, _fbcMeta Pixel cookies

Filtrar pelo nome no campo de search da tabela. Click numa linha → painel inferior mostra "Cookie Value" + opção "Show URL-decoded" pra JSON formatado.

Network

Filtra por:

  • auth/register → payload de signup
  • payments/deposit → payload de deposit
  • googletagmanager.com → GTM container + tags
  • connect.facebook.net → Meta Pixel
  • analytics.google.com → Google Analytics
  • kwai.net → Kwai
  • taboola.com → Taboola

Cada request tem 3 abas valiosas:

  • HeadersX-ORIGIN-*, X-LOG-INFO, Authorization
  • Payload → body do POST (UTMs, clicked-IDs, etc)
  • Response → o que o BFF retornou (incluindo X-INFOS-ID / X-INFOS-REF)

Console

// dataLayer primário
window.dataLayer
window.dataLayer.filter(e => e.event === "first_deposit")
window.dataLayer.length

// anaLayer — dataLayer do container SECUNDÁRIO (brands com anaLayer habilitado)
window.anaLayer
window.anaLayer?.filter(e => e.event === "first_deposit")

// Consent Mode v2 — wrapper gtag do módulo de consent (nome neutro de propósito)
window.__gtagConsent
window.dataLayer.filter(e => e[0] === "consent")

// Remarketing
window.__rmk
window.__rmk?.id
window.__rmk?.tags

// Meta Pixel
window.fbq
window._fbq

// Smartico
window._smartico
window._smartico_user_id

// GTM
window.google_tag_manager // (objeto interno do GTM)

// AppsFlyer (em modo app)
window.twa // bridge TWA

:::caution window.dataLayer vazio não significa "tagging quebrado" Seis brands rodam com disableGtm: true em produção, e o 7k-bet-br migrou o tagging pro container secundário — nele o dataLayer primário fica realmente vazio e tudo passa pelo window.anaLayer. Confirme em qual container a brand está antes de concluir que há bug: ver Config map por brand. :::

Application → Local Storage / Session Storage

KeyConteúdo
cookie_appsflyer_id (sessionStorage)AppsFlyer ID do device (TWA)
cookie_advertising_id (sessionStorage)Advertising ID Android (TWA)
cookie_app_version (sessionStorage)Versão do APK
c_documentReferrer (sessionStorage)Referrer da sessão atual
c_documentReferrerLocal (localStorage)Referrer first-touch ever

Rota /debug/analytics (só em dev)

Dispatcher manual de eventos: um select com cada variante de evento, uma matriz de campos por tipo, e um tail ao vivo de tudo que entra no dataLayer (a rota intercepta os dataLayer.push). Serve pra disparar um evento específico sem ter que percorrer o fluxo que normalmente o dispara — útil pra validar trigger de GTM em minutos em vez de fazer signup + depósito de teste.

http://localhost:<DEV_PORT>/debug/analytics

:::info Não existe em produção — e não é uma decisão de runtime A rota é gateada na geração das rotas (app/router/routes.ts, dentro de isDevBuild ? [...]), junto do /debug. Em build de produção ela simplesmente não é registrada — não é 404 por guard, é rota inexistente. Consistente com a regra do projeto de que código de debug é gateado por import.meta.env.DEV e não chega ao bundle de prod. Não peça pra "ligar em prod": não há flag. :::

Pra debugar tagging em produção o caminho é o oposto — inspecionar o dataLayer/anaLayer do usuário real pelo console e correlacionar com wrangler tail via X-LOG-INFO.

Extensões Chrome úteis

ExtensãoPra que serve
Meta Pixel HelperLista todos eventos Meta disparados em tempo real
TikTok Pixel HelperIdem TikTok
Google Tag AssistantTags Google em geral (GTM, Analytics, Ads)
Adswerve dataLayer InspectorVisualiza dataLayer events bonitinho
Cookie-EditorEdita/remove cookies sem precisar abrir Application tab

Debug em produção

?EnableDebug=1 foi REMOVIDO do bundle de produção em maio/2026. Razão: vazamento de cookies sensíveis em response. Não há toggle visual de debug em prod.

Pra debuggar prod

1. Cloudflare Dashboard → Workers & Pages → <worker> → Logs

Caminho recomendado. Tem filtro e histórico, e não exige descobrir nome de worker na mão.

2. wrangler tail (server logs em real-time)

:::danger --env production não funciona O wrangler.toml do front-web-base não declara nenhum environment — não existe [env.production] nem qualquer [env.*]. wrangler tail --env production falha com erro de environment desconhecido. Também não há script tail no package.json. :::

Cada brand/ambiente deploya como um worker separado, então o tail é por nome de worker:

cd repos/front-web-base
pnpm wrangler tail <worker-name> --format pretty

O nome do worker vem do pipeline de deploy, não deste repo — está em front-ops/config/brands/web-base/environments/<environment>/deploy.yml, campo worker_name:

# lista todos os workers e seus ambientes
grep -rn "worker_name" repos/front-ops/config/brands/web-base/environments/*/deploy.yml

O padrão é front-web-<environment>, mas não confie no padrão — há exceções (o ambiente prod-7k-bet-br, por exemplo, deploya no worker front-web-7k-bet-br). Sempre leia o deploy.yml.

O tail traz os logs server-side em tempo real, incluindo o X-LOG-INFO que casa com a request do usuário.

3. Cloudflare Observability → Logs (RUM)

Logs estruturados de browser side (page views, performance, etc).

4. Network tab no browser do user

Pede pro user reportando bug abrir DevTools → Network → reproduzir → exportar HAR file. Manda pro time de dev.

Reportando bug

Quando reportar bug de tracking, inclua:

  • URL exata acessada
  • Brand
  • X-LOG-INFO da request afetada (do Network tab)
  • cookie_tracking content (JSON do cookie)
  • window.__rmk?.id (UUID de remarketing — facilita correlação)
  • Steps to reproduce
  • Screenshot do Network tab da request afetada

Cenários comuns

Possíveis causas:

  1. HTTP em prodSameSite=None exige Secure. HTTP local OK (cookie escreve com Lax).
  2. Browser bloqueando 3rd-party cookies — verifique Settings → Privacy → "Block third-party cookies". Em modo "block all", SameSite=None cookies não escrevem em iframes.
  3. Brand com remarketing desligadoremarketingFeaturesConfig.enabled: false → o cookie nunca escreve. (Hoje todas as 13 brands estão ligadas, então essa causa é improvável.)
  4. Cookie name inválido — contém cactus/bluetec → front rejeita em runtime e loga warning no console.

Possíveis causas:

  1. Form submit antes do hidrate completar — TrackingCapture ainda não rodou. Caso raro, mas acontece em form submitado por click muito rápido.
  2. Modal não usa o hook useTrackingParams — verificar imports do RegisterModal.tsx/DepositModal.tsx.

"Pixel não dispara"

Possíveis causas, em ordem de frequência:

  1. disableGtm: true na brand — vale pra 6 brands em prod. Verifica o config map.
  2. Container errado — a brand roda no anaLayer, não no dataLayer primário.
  3. enabledSpecificEvents — a brand tem whitelist de eventos GTM e o seu evento não está nela (betpontobet-bet-br, donald-bet-br). O dispatcher no-opa em silêncio.
  4. Canal inerte na brandfloodlight sem analyticsConfig.floodlight, pendo sem pendoConfig.enabled, taboola sem taboolaId. A matriz declara o slot, a brand não tem o canal.
  5. ?app=true / ?is_twa=true — modo app não carrega os pixels de marketing.
  6. thirdPartyScriptsDisabled: true — kill switch global ativo.
  7. GCM v2 denied — brand não-cosmética + recusa registrada em visita anterior. O pixel carrega mas opera em modo limitado (sem cookies de identificação).
  8. GTM container vazio — o pixel não foi configurado no GTM. O operador do container precisa adicionar a tag.
  9. Estratégia engagement — em 7k-bet-br o download dos scripts espera a primeira interação real ou o deadline de 5s. Antes disso os eventos ficam enfileirados (não perdidos) — se você só carregou a página e olhou o Network, ainda não baixou.

"Atribuição inflada/errada num canal"

Possíveis causas:

  1. UTM em link interno — header com ?utm_source=header sobrescreve atribuição real. Auditar links internos.
  2. Janela de atribuição errada — o default do cookie_tracking é 30 dias, não 7. Uma campanha curta pode estar recebendo crédito de clique de até um mês atrás. Ver UTMs.
  3. Cap de cookie hitutm_* custom sendo dropped. Olha tamanho do cookie vs cap de 20 chaves.

Possíveis causas:

  1. cookies_consent cookie sendo limpo — pode ser extension de privacidade (DuckDuckGo, Privacy Badger) limpando.
  2. TTL expirou — 365 dias passaram.
  3. brand.features.cookieConsentPopup mudou no backoffice. Validar.

Anti-patterns

  1. Tentar usar ?EnableDebug=1 em prod. Foi removido em maio/2026. Use o Dashboard ou wrangler tail <worker-name>.
  2. Rodar wrangler tail --env production. Não existe environment no wrangler.toml — o comando erra. O tail é por nome de worker.
  3. Pedir pra "ligar o /debug/analytics em prod". A rota não é registrada em build de produção — não existe flag que a ligue.
  4. Confiar em DevTools de dev local pra validar prod. Configs de analytics diferem (gtmId via API, containerId do anaLayer é null em dev, Stape só resolve em prod, disableGtm: true em dev nas 8 brands com override).
  5. Limpar cookies a cada teste. Atrapalha investigação de "bug que só acontece em user com X cookie pré-existente".
  6. Pedir log "verbose" pra dev. Logs de prod são server-side — peça o X-LOG-INFO da request afetada.
  7. Concluir "tagging quebrado" olhando só window.dataLayer. Confira o anaLayer também.