Cookies — referência completa
Esta página lista todos os cookies que a plataforma escreve ou lê, com TTL, escopo, conteúdo e quem é responsável por cada um. É a página de referência mais consultada do time de marketing.
Categorias
Os cookies são agrupados em 4 categorias do banner LGPD (detalhes em Consent):
| Categoria | Pode desativar? | Cookies aqui |
|---|---|---|
| Necessários | Não (sempre granted) | jwt_token, cookies_consent, __cf_bm, _cfuvid |
| Performance | Sim | _ga, _gid, _gat, etc (Google Analytics) |
| Funcionalidade | Sim | preferências de idioma, layout |
| Outros / marketing | Sim | cookie_tracking, cookie_referrer, rmkvera, rmkvera_aud, lastclick, _fbp, _fbc, etc |
Cookies de tracking / atribuição
cookie_tracking
| Atributo | Valor |
|---|---|
| Tipo | JSON |
| TTL default | 7 dias (configurável por brand via trackingCookieTtlHours) |
Path | / |
SameSite | None em HTTPS, Lax em HTTP dev |
Secure | sim em HTTPS |
HttpOnly | não (client precisa ler pra montar payload) |
| Categoria LGPD | Outros / marketing |
| Quem escreve | Server (root loader) + client (TrackingCapture) |
Conteúdo:
{
"utm_source": "facebook",
"utm_campaign": "black-friday",
"utm_content": "banner-v3",
"utm_medium": "cpc",
"utm_oferta": "first-deposit-100pct",
"src": "fb_ads",
"app_source": "web",
"affiliation_code": "AFIL1",
"subid": "rt_subid_42",
"gclid": "Cj0KCQjw...",
"fbclid": "IwAR3...",
"media_source": "google",
"media_clid": "Cj0KCQjw..."
}
Cap de 20 chaves (proteção contra URL stuffing). Todos os clicked-IDs presentes são preservados; UTMs custom (utm_oferta, etc) são descartados primeiro quando atinge cap.
Cookies legacy paralelos: o front também escreve src, utm_source, utm_campaign, utm_content, utm_medium, app_source como cookies individuais (não JSON) pra compatibilidade com validadores de afiliados antigos e scripts legados. Mesmo TTL e SameSite.
Detalhes em UTMs.
cookie_referrer
| Atributo | Valor |
|---|---|
| Tipo | JSON |
| TTL | 30 dias |
Path | / |
SameSite | Lax |
HttpOnly | não |
| Categoria LGPD | Outros / marketing |
| Quem escreve | Client (TrackingCapture, primeira navegação) |
Conteúdo:
{
"referrer": "https://google.com/search?q=cassino+online",
"hostname": "google.com",
"cinfoId": "abc123",
"cinfoIdRef": "def456"
}
referrer/hostname: capturados dedocument.referrerna primeira navegação do tab. Não atualiza em SPA navs (não faria sentido — referrer interno).cinfoId/cinfoIdRef: ecoados dos response headersX-INFOS-ID/X-INFOS-REFque o BFF envia após login/register.
Lido pelo @cactus-agents/api-client em toda request pra preencher headers X-ORIGIN-REFERRER, X-ORIGIN-HOSTNAME, X-ORIGIN-CINFO-ID, X-ORIGIN-CINFO-ID-REF. Detalhes em Headers.
_ga (Google Analytics)
| Atributo | Valor |
|---|---|
| Tipo | string (formato GA4) |
| TTL | 2 anos (escrito pelo Google) |
Path | / |
SameSite | (definido pelo Google) |
| Categoria LGPD | Performance |
| Quem escreve | GA4 SDK (carregado via GTM) |
Conteúdo: GA1.1.1234567890.0987654321 (formato GA<version>.<part>.<client_id>.<creation_ts>).
O front lê o valor raw (sem split) e envia como ga_client_id nos payloads de signup e deposit. Importante: paridade legado é raw — split em client_id.timestamp (como uma iteração antiga fez) produz payload que o BFF não valida.
rmkvera (e similares por brand)
| Atributo | Valor |
|---|---|
| Tipo | JSON |
| TTL | 365 dias (sliding — renova a cada visita) |
Path | / |
Domain | .vera.bet.br (cross-subdomain) |
SameSite | None em HTTPS |
Secure | sim |
HttpOnly | não (CAPI / pixel client-side leem) |
| Categoria LGPD | Outros / marketing |
| Quem escreve | Server (root loader, primeira visita) + client (sliding refresh) |
| Brands ativas | vera-bet-br (cookie name rmkvera). Outras brands ativam via override declarando seu próprio cookieName. |
Conteúdo:
{
"id": "8f2c1a4b-3d3e-4b6c-9c1f-2d6c1f2d6c1f",
"ts": 1731000000000,
"src": "google"
}
id: UUID v4 first-party. Estável por 365 dias, renovado a cada visita.ts: timestamp de criação (epoch ms). Útil pra cohort analysis.src: snapshot doutm_sourceou referrer no momento da criação. Nunca sobrescrito.
Usado como external_id em CAPI / Enhanced Conversions / TikTok Events API. Detalhes em Remarketing.
Naming convention por brand:
| Brand | Cookie name | Cookie domain |
|---|---|---|
| Vera | rmkvera | .vera.bet.br |
| (futuras) | rmk7k, rmkst77, etc | .7k.bet.br, .state77.com, etc |
:::warning Brand-neutral
Nunca usar cactus ou bluetec no cookie name (vaza plataforma white-label). Brand-specific names estão OK porque o cliente final vê a brand mesmo. O front rejeita em runtime nomes que contenham esses termos.
:::
rmkvera_aud (audience tags)
| Atributo | Valor |
|---|---|
| Tipo | JSON |
| TTL | 90 dias (sliding) |
| Demais atributos | iguais ao rmkvera |
Conteúdo:
{
"tags": {
"viewed_casino": 1731000200000,
"viewed_sports": 1731000400000,
"clicked_register": 1731000600000,
"ftd_completed": 1731002000000
},
"updated": 1731002000000
}
Tags de funil são set-once (re-tagging não atualiza timestamp, evita churn). Cap de 40 tags totais; quando estoura, canonical priority preserva funnel tags e descarta tags viewed_game_* primeiro.
Detalhes completos em Remarketing.
lastclick (Clever Advertising)
| Atributo | Valor |
|---|---|
| Tipo | string (raw) |
| TTL | 30 dias |
Path | / |
SameSite | None (obrigatório — Clever cross-site) |
Secure | sim |
HttpOnly | não |
| Categoria LGPD | Outros / marketing |
| Quem escreve | Server (rota /clever) |
| Brands ativas | affiliateClever: true (vera, 7k, cassino) |
Conteúdo: affiliate-id-clever-raw — string opaca (sem sanitização — Clever pode usar formato qualquer).
Detalhes em Affiliate.
Cookies de pixels (escritos por scripts third-party)
Esses cookies são escritos pelos próprios scripts de pixels (não pelo front). Listados aqui pra referência:
Meta (Facebook Pixel)
| Cookie | Conteúdo | TTL |
|---|---|---|
_fbp | Browser ID gerado pelo Pixel | 90 dias |
_fbc | Click ID (vem de fbclid na URL) | 7 dias após primeiro clique |
Categoria: outros / marketing. Lidos pelo Pixel pra reconciliar conversões.
TikTok
| Cookie | Conteúdo | TTL |
|---|---|---|
_ttp | TikTok Pixel ID | 13 meses |
Kwai
Similar ao TikTok — escreve _kwaiq_* (formato interno do SDK).
Google Analytics auxiliares
_gid (1 dia), _gat (1 minuto), _gcl_au (90 dias) — todos categoria performance.
Cookies de auth + segurança
jwt_token
| Atributo | Valor |
|---|---|
| Tipo | JWT (string opaca) |
| TTL | sessão (sliding) |
Path | / |
SameSite | Lax |
Secure | sim |
HttpOnly | sim |
| Categoria LGPD | Necessários |
| Quem escreve | BFF (após login bem-sucedido) |
HttpOnly = client não consegue ler — só o server lê via Cookie header. Nunca disponível no document.cookie.
cookies_consent
| Atributo | Valor |
|---|---|
| Tipo | JSON |
| TTL | 12 meses |
Path | / |
SameSite | Lax |
HttpOnly | não (banner client-side lê pra decidir se renderiza) |
| Categoria LGPD | Necessários (irônico — o cookie de consent é um cookie necessário) |
| Quem escreve | Banner (CookieConsentBanner) |
Conteúdo:
{
"necessary": true,
"performance": true,
"functionality": false,
"others": true,
"timestamp": 1731000000000
}
Detalhes em Consent LGPD.
__cf_bm, _cfuvid (Cloudflare)
Cookies escritos pela Cloudflare (proteção bot + visitor identifier). Necessários pra plataforma rodar. TTL ~30 minutos. Categoria: necessários.
Cookies de PWA / app
cookie_appsflyer_id
sessionStorage (não cookie tradicional) — guarda o AppsFlyer ID quando o user está em modo TWA. Detalhes em App Mode.
cookie_advertising_id
sessionStorage — Advertising ID do device (Google AAID), passado pelo TWA bridge. Modo app only.
cookie_app_version
sessionStorage — versão do APK ativo. Permite gating de features por versão de app.
Tabela-resumo
| Cookie | TTL | Categoria | HttpOnly | Pra que serve |
|---|---|---|---|---|
cookie_tracking | 7d (config) | Marketing | Não | UTMs + clicked-IDs + affiliate |
cookie_referrer | 30d | Marketing | Não | Referrer first-touch + cinfo IDs |
_ga | 2 anos | Performance | Não | GA client ID |
rmkvera | 365d sliding | Marketing | Não | Remarketing UUID first-party |
rmkvera_aud | 90d sliding | Marketing | Não | Audience tags do funil |
lastclick | 30d | Marketing | Não | Clever Advertising affiliate |
_fbp | 90d | Marketing | Não | Facebook Pixel browser ID |
_fbc | 7d | Marketing | Não | Facebook Pixel click ID |
jwt_token | sessão | Necessários | Sim | Auth |
cookies_consent | 12m | Necessários | Não | Preferências LGPD |
__cf_bm | 30min | Necessários | Sim | Cloudflare bot mgmt |
_cfuvid | sessão | Necessários | Sim | Cloudflare visitor |
Como inspecionar
DevTools → Application → Cookies → selecione o domínio.
Filtrar por nome no campo de search da tabela. Pra inspecionar o JSON do cookie_tracking ou rmkvera, clica na linha e o painel inferior mostra "Cookie Value" com botão "Show URL-decoded" pra ver o JSON formatado.
Anti-patterns
- Tornar
cookie_trackingHttpOnly. Quebra o submit de signup/deposit (client precisa ler). - Mudar
SameSitedolastclickpraLax. Quebra Clever cross-site. - Setar TTL absurdamente alto (
trackingCookieTtlHours: 99999). Marketing perde controle de janela de atribuição. - Renomear cookie em produção sem migration. Existing users perdem state. Se precisar renomear, adiciona migration one-shot (lê legado, grava novo, deleta legado). Ver
app/utils/consent.ts:LEGACY_CONSENT_COOKIE_NAMESpro padrão. - Usar
cactusoubluetecem cookie name. Vaza plataforma white-label. Front rejeita em runtime, mas evite na config.