Diagnóstico rápido
Cole este snippet no DevTools Console da página onde o SDK roda:Problemas comuns
window.iGamingSDK é undefined
Causa provável: o bundle não carregou (404, bloqueio CSP, async race).
Solução:
- Network → procure
sdk.min.js→ status deve ser 200 - Confirme polling do snippet de init:
- Se CSP bloqueia, libere domínios:
POSTs falham com CORS error
Causa provável: preflight OPTIONS bloqueado ou origin não permitida. Solução: o endpoint Atlas respondeAccess-Control-Allow-Origin: * em
/v1/sdk-events. Confirme no Network → request OPTIONS retorna 204 com
headers corretos.
Se seu app usa CSP, libere:
POST retorna 429 Too Many Requests
Causa provável: rate limit per org+brand+ip estourou (default 100 req/s
por pod).
Solução:
- Em dev: aguarde 1 minuto e tente novamente
- Em produção: contate suporte para aumentar o limite via env
HTTP_SDK_RATE_LIMIT_PER_SECOND
Eventos somem após capture() — flush() não envia nada
Causa provável: SDK em estado opt-out persistido em localStorage.
Como confirmar:
optedIn: false e/ou storage: '0' → SDK silenciado.
Solução:
Eventos chegam mas user_ext_id está vazio
Causa provável: identify() nunca foi chamado.
Solução: chame identify(userId, traits) no callback de login do seu app.
Veja Identificar usuário.
Eventos não aparecem no Kafka mesmo após flush()
Causa 1: Mixed content — page HTTPS chamando endpoint HTTP.
flush() → request bloqueado pela
extensão. Teste em janela anônima.
Causa 3: Endpoint errado.
Heatmap não dispara
Causa provável: sessão não foi amostrada (default 10%). Solução em dev:Buffer não envia antes de 30s
Comportamento esperado. O SDK acumula eventos e flusha em:- 50 eventos no buffer
- 30 segundos desde último flush
visibilitychange:hidden/beforeunloadiGamingSDK.flush()manual
Vários session.ended em pouco tempo
Causa provável: usuário alternando entre tabs frequentemente
(visibilitychange:hidden dispara em cada switch).
Solução: comportamento esperado e correto. O dashboard agrega corretamente —
não trata cada session.ended como sessão nova, apenas o último wins.
Erro “respect_dnt is true and navigator.doNotTrack is ‘1’”
Não é um erro — é o SDK respeitando o sinal DNT do browser do usuário e silenciando captura. Configurações relacionadas:Cookies não persistem entre subdomínios
Causa provável: auto-detect docookie_domain falhou (TLD composto).
Solução: force o domínio raiz:
Bundle muito grande para meu CSP / quote bundle
O bundle core é ~8 KB gzipped. Se ainda precisa reduzir:- Desligue
capture_performance: falsese não usa Web Vitals (economiza ~2KB peer dep) - Use a build core sem polyfills (assume ES2020+)
Coletar logs para suporte
Antes de abrir ticket de suporte, capture:Suporte
- 📧 Email: suporte@atlas.io
- 💬 Discord: discord.gg/atlas
- 🐛 GitHub Issues: twinfo-io/atlas-webanalytics