Pular para o conteúdo principal

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

:::info A divulgação ao usuário é o array COOKIE_TABLE A tabela que o usuário vê no painel "Personalizar" é gerada de COOKIE_TABLE em app/utils/consent.ts18 entradas hoje. É essa a divulgação LGPD/GDPR de fato. A tabela abaixo reproduz o array; se divergirem, o array vence e a divergência é problema de divulgação, não de doc. :::

CategoriaPode desligar?Cookies divulgados no painel
NecessáriosNãocookies_consent, jwt_token, __cf_bm, _cfuvid
PerformanceSim_ga, _ga_*, _gid, _clck, _clsk
FuncionalidadeSimcookie_app_mode, current_lang, topbar_closed
Outros / marketingSimcookie_tracking, cookie_referrer, _fbp, ns-kwai-click-id, AMP_*, __smartico_ls_*

:::warning Cookies que a plataforma escreve e o painel não divulga <rmkCookie> / <rmkCookie>_aud (remarketing, ex: rmk7k/rmk7k_aud) e lastclick (Clever) são escritos pela plataforma mas não constam no COOKIE_TABLE. No sentido inverso, AMP_* (Amplitude) é divulgado sem que se tenha localizado integração Amplitude no front-web-base.

Os dois casos exigem decisão do responsável por LGPD e correção em código (o array), não aqui. :::

Cookies de tracking / atribuição

AtributoValor
TipoJSON
TTL default30 dias (TRACKING_COOKIE_DEFAULT_MAX_AGE = 30 * 24 * 60 * 60) — configurável por brand via trackingCookieTtlHours
Path/
SameSiteNone em HTTPS, Lax em HTTP dev
Securesim em HTTPS
HttpOnlynão (client precisa ler pra montar payload)
Categoria LGPDOutros / marketing
Quem escreveServer (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.

AtributoValor
TipoJSON
TTL30 dias
Path/
SameSiteLax
HttpOnlynão
Categoria LGPDOutros / marketing
Quem escreveClient (TrackingCapture, primeira navegação)

Conteúdo:

{
"referrer": "https://google.com/search?q=cassino+online",
"hostname": "google.com",
"cinfoId": "abc123",
"cinfoIdRef": "def456"
}
  • referrer / hostname: capturados de document.referrer na primeira navegação do tab. Não atualiza em SPA navs (não faria sentido — referrer interno).
  • cinfoId / cinfoIdRef: ecoados dos response headers X-INFOS-ID / X-INFOS-REF que 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)

AtributoValor
Tipostring (formato GA4)
TTL2 anos (escrito pelo Google)
Path/
SameSite(definido pelo Google)
Categoria LGPDPerformance
Quem escreveGA4 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.

<rmkCookie> — remarketing (nome varia por brand)

O nome não é fixo: cada brand declara o seu em overrides/<brand>/app/config/features/remarketing.ts. Nos exemplos abaixo usamos o do 7k-bet-br (rmk7k, domínio .7k.bet.br).

AtributoValor
TipoJSON
TTL365 dias (sliding — renova a cada visita)
Path/
DomaincookieDomain da brand, ex. .7k.bet.br (cross-subdomain)
SameSiteNone em HTTPS
Securesim
HttpOnlynão (CAPI / pixel client-side leem)
Categoria LGPDOutros / marketing (não consta no COOKIE_TABLE — ver aviso no topo)
Quem escreveServer (root loader, primeira visita) + client (sliding refresh)
Brands ativastodas as 13 do base, cada uma com cookieName próprio

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 do utm_source ou referrer no momento da criação. Nunca sobrescrito.

Usado como external_id em CAPI / Enhanced Conversions / TikTok Events API. Detalhes em Remarketing.

Nome e domínio por brand:

BrandCookie nameCookie domain
7k-bet-brrmk7k.7k.bet.br
betpontobet-bet-brrmkbpb.betpontobet.bet.br
casateste-comrmkcasateste.casateste.com
cl-bet7k-comrmkcl7k.cl.bet7k.com
donald-bet-brrmkdnb.donald.bet.br
fi-7k-betrmkfi7k.fi.7k.bet
ng-7k-betrmkng7k.ng.7k.bet
pb-betrmkpb.pb.bet
ph-state77-comrmkphst77.ph.state77.com
pt-state77-comrmkptst77.pt.state77.com
rj-betrmkrj.rj.bet
state77-comrmkst77.state77.com
x2b-betrmkx2b.x2b.bet

Fonte viva: grep -rn "cookieName\|cookieDomain" overrides/*/app/config/features/remarketing.ts.

:::warning Brand-neutral Nunca usar cactus ou bluetec no cookie name (vaza plataforma white-label). Nomes com a marca do cliente estão OK — o usuário final vê a brand mesmo. A regra é executada em runtime: FORBIDDEN_PLATFORM_NAMES = /cactus|bluetec/i (app/utils/remarketing-id.ts) rejeita o nome e desativa o flag. :::

<rmkCookie>_aud — audience tags

Cookie irmão, sufixo _aud (ex: rmk7krmk7k_aud).

AtributoValor
TipoJSON
TTL90 dias (sliding)
Demais atributosiguais ao <rmkCookie>

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 o timestamp, evita churn do cookie). Cap de MAX_AUDIENCE_TAGS = 40; quando estoura, a eviction é puramente por idade — as tags de timestamp mais antigo saem primeiro. Não existe prioridade canônica protegendo tags de funil (é justamente por isso que persistir tag por jogo individual é anti-pattern: o volume expulsaria ftd_completed).

Detalhes completos em Remarketing.

lastclick (Clever Advertising)

AtributoValor
Tipostring (raw)
TTL30 dias
Path/
SameSiteNone (obrigatório — Clever cross-site)
Securesim
HttpOnlynão
Categoria LGPDOutros / marketing (não consta no COOKIE_TABLE — ver aviso no topo)
Quem escreveServer (rota /clever)
Brands ativasaffiliateClever: true7k-bet-br, cl-bet7k-com, fi-7k-bet, ng-7k-bet

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)

CookieConteúdoTTL
_fbpBrowser ID gerado pelo Pixel90 dias
_fbcClick ID (vem de fbclid na URL)7 dias após primeiro clique

Categoria: outros / marketing. Lidos pelo Pixel pra reconciliar conversões.

TikTok

CookieConteúdoTTL
_ttpTikTok Pixel ID13 meses

Kwai

O cookie que aparece na divulgação LGPD é ns-kwai-click-id — é esse o nome que o COOKIE_TABLE declara, não _kwaiq_*. Guarda o click ID do Kwai. Categoria: outros / marketing.

Microsoft Clarity

CookieConteúdoCategoria
_clckClarity user IDPerformance
_clskClarity session IDPerformance

Ambos divulgados no painel, mesmo com nenhuma brand tendo clarityId configurado hoje.

Smartico

__smartico_ls_* — chaves backed em localStorage, divulgadas como categoria outros / marketing. (Note o duplo underscore no prefixo; _smartico_* não é o nome divulgado.)

Google Analytics auxiliares

_gid (1 dia), _gat (1 minuto), _gcl_au (90 dias) — escritos pelo Google, categoria performance. Desses, só _gid está no COOKIE_TABLE; _ga_* (por container GA4) também está.

Cookies de auth + segurança

jwt_token

AtributoValor
TipoJWT (string opaca)
TTLsessão (sliding)
Path/
SameSiteLax
Securesim
HttpOnlysim
Categoria LGPDNecessários
Quem escreveBFF (após login bem-sucedido)

HttpOnly = client não consegue ler — só o server lê via Cookie header. Nunca disponível no document.cookie.

AtributoValor
TipoJSON
TTL365 dias (CONSENT_COOKIE_MAX_AGE = 365 * 24 * 60 * 60)
Path/
SameSiteLax
HttpOnlynão (banner client-side lê pra decidir se renderiza)
Nome legado migradocactusCookiesConsent — lido e deletado numa passada, nunca escrito (ver padrão de rename)
Categoria LGPDNecessários (irônico — o cookie de consent é um cookie necessário)
Quem escreveBanner (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 funcionalidade

Os três que o painel LGPD divulga na categoria Funcionalidade:

NomeOnde vivePra que serve
cookie_app_modesessionStoragePersiste o app mode detectado por ?app=true / ?is_twa=true através das navegações SPA. Ver App Mode
current_langcookieIdioma escolhido
topbar_closedcookieSe o usuário fechou a topbar promocional

Storage de PWA / app

Estes não são cookies tradicionais — vivem em sessionStorage, apesar do prefixo cookie_ herdado do legado:

AppsFlyer ID do device quando o user está em modo TWA. Ver App Mode.

Advertising ID do device (Google AAID), passado pelo bridge TWA. Modo app only.

Versão do APK ativo. É a fonte do gating por versão (postMessageMinVersion do AppsFlyer).

c_documentReferrer / c_documentReferrerLocal

Referrer da sessão atual (sessionStorage) e referrer first-touch histórico (localStorage).

Tabela-resumo

CookieTTLCategoriaHttpOnlyPra que serve
cookie_tracking30d (default; config por brand)MarketingNãoUTMs + clicked-IDs + affiliate
cookie_referrer30dMarketingNãoReferrer first-touch + cinfo IDs
_ga2 anosPerformanceNãoGA client ID
<rmkCookie> (ex: rmk7k)365d slidingMarketingNãoRemarketing UUID first-party
<rmkCookie>_aud90d slidingMarketingNãoAudience tags do funil
lastclick30dMarketingNãoClever Advertising affiliate
_fbp90dMarketingNãoFacebook Pixel browser ID
_fbc7dMarketingNãoFacebook Pixel click ID
ns-kwai-click-id(Kwai)MarketingNãoClick ID do Kwai
_clck / _clsk(Clarity)PerformanceNãoUser / session ID do Clarity
jwt_tokensessãoNecessáriosSimAuth
cookies_consent365dNecessáriosNãoPreferências LGPD
current_langFuncionalidadeNãoIdioma
topbar_closedFuncionalidadeNãoTopbar dispensada
__cf_bm30minNecessáriosSimCloudflare bot mgmt
_cfuvidsessãoNecessáriosSimCloudflare visitor

Como inspecionar

DevTools → ApplicationCookies → selecione o domínio.

Filtrar por nome no campo de search da tabela. Pra inspecionar o JSON do cookie_tracking ou do cookie de remarketing, clica na linha e o painel inferior mostra "Cookie Value" com botão "Show URL-decoded" pra ver o JSON formatado.

Renomear um cookie que já existe no browser de usuários reais exige migração one-shot na leitura. O único exemplo implementado na plataforma é o do consent, e vale como referência:

// app/utils/consent.ts
const LEGACY_CONSENT_COOKIE_NAMES = ["cactusCookiesConsent"] as const;

// dentro de getConsentPreferences():
if (!raw) {
for (const legacyName of LEGACY_CONSENT_COOKIE_NAMES) {
const legacy = getClientCookie(legacyName);
if (legacy) {
raw = legacy; // adota o valor
setClientCookie(legacyName, "", 0); // deleta o legado (best-effort)
break;
}
}
}

O detalhe que faz o padrão funcionar: o nome legado é lido e deletado, nunca escrito. Não existe caminho no código que volte a criar cactusCookiesConsent. É o que permite satisfazer simultaneamente duas coisas que parecem conflitantes:

  • neutralidade de marca — o termo da plataforma não pode existir em cookie observável pelo cliente final; e
  • continuidade — quem já decidiu sobre cookies não é perguntado de novo.

Ao renomear qualquer outro cookie, replique exatamente essa forma: constante com a lista de nomes legados, leitura com adoção, delete imediato, nenhuma escrita no nome antigo.

Anti-patterns

  1. Tornar cookie_tracking HttpOnly. Quebra o submit de signup/deposit (client precisa ler).
  2. Mudar SameSite do lastclick pra Lax. Quebra Clever cross-site.
  3. Setar TTL absurdamente alto (trackingCookieTtlHours: 99999). Marketing perde controle da janela de atribuição.
  4. Renomear cookie em produção sem migração one-shot. Usuários existentes perdem o state e o cookie antigo fica órfão no browser. Use o padrão da seção acima.
  5. Escrever o cookie legado "só pra garantir". Anula a migração — o nome antigo volta a existir no browser. Ler-e-deletar, nunca escrever.
  6. Usar cactus ou bluetec em cookie name. Vaza plataforma white-label. O front rejeita em runtime (nomes de remarketing), mas não conte com isso — evite na config.
  7. Assumir que o COOKIE_TABLE cobre tudo que a plataforma escreve. Não cobre — ver o aviso no topo desta página.