Glossário
Termos que aparecem nesta doc (e em conversas com dev/BI) — definidos com a interpretação que o front-end Cactus usa, não a definição genérica de mercado quando elas divergem.
Atribuição
Last-touch — política em que cada UTM nova sobrescreve as anteriores. O canal final que trouxe o user antes da conversão leva o crédito. É o que a Cactus usa em todas as brands desde o legado Vue.
First-touch — política oposta: o primeiro canal capturado é preservado e nunca sobrescrito. Mais comum em campanhas de awareness. Não é a política da Cactus — mudar exige alinhamento com BI (relatórios calibrados em last-touch).
Attribution window — janela de tempo entre o clique e a conversão durante a qual a atribuição ainda vale. No front, é definida pelo TTL do cookie_tracking: default 30 dias (720 horas), configurável por brand via trackingCookieTtlHours. Brands que sobrescrevem hoje: 7k-bet-br 720h, betpontobet-bet-br 240h, donald-bet-br 240h.
FTD (First-Time Deposit) — primeiro depósito do usuário. Detectado por user.ftd_value === 0 ANTES do depósito, e por response do BFF DEPOIS. Dispara eventos especiais (first_deposit, pix_confirmado_ftd, AppsFlyer dep) distintos de rebill.
Rebill — qualquer depósito que não seja o primeiro. Dispara second_deposit no GTM (nome herdado do legado 7k — significa "qualquer não-FTD"), pix_confirmado no GTM, AppsFlyer rebill.
Identificadores
external_id — UUID first-party gerado pelo front, persistido no cookie de remarketing da brand (rmk7k, rmkbpb, rmkst77, etc), enviado como identificador estável pra Meta CAPI / Google Enhanced Conversions / TikTok Events API. Funciona mesmo sem cookie de terceiro (iOS 14+, ITP, Brave).
ga_client_id — Google Analytics client ID, formato GA1.1.XXXXXX.YYYYYY. Lido raw do cookie _ga e enviado nos payloads de signup/deposit pro BFF.
affiliation_code — código de afiliado capturado da URL (aliases: aff, ref, referenceCode, btag, b_tag, btagid). Persistido no cookie_tracking e enviado no payload de signup. Não vai no deposit (paridade legado).
subid — sub-ID de afiliado (RedTrack, Tonic). Aliases: subid, sub_id. Capturado e enviado no payload de signup.
cinfoId / cinfoIdRef — IDs de tracking gerados pelo BFF e ecoados em headers de response (X-INFOS-ID/X-INFOS-REF) após login/register. Persistidos no cookie_referrer e enviados de volta como X-ORIGIN-CINFO-ID/X-ORIGIN-CINFO-ID-REF em todas as requests subsequentes.
appsflyer_id / advertising_id — IDs nativos do mobile (TWA), persistidos em sessionStorage. Usados só em modo app (?app=true).
Plataformas
CAPI (Conversions API) — protocolo da Meta pra enviar eventos server-side, paralelo ao Pixel client-side. Permite atribuição mesmo com Pixel bloqueado (ad blockers, ITP). Identidade primária é o external_id. Cactus tem CAPI no roadmap (server-side via BFF) — hoje só Pixel client-side.
Enhanced Conversions — equivalente do CAPI no Google Ads. Mesma ideia: server-side com identidade enriquecida (e-mail, telefone, external_id). Roadmap.
Events API (TikTok) — equivalente da CAPI da Meta no TikTok. Roadmap.
S2S (Server-to-Server) — envio de evento direto do servidor pra plataforma de ads, sem passar pelo browser. Mais resistente a ad blockers. AppsFlyer é o único integrado em S2S hoje; o encaminhamento passa por uma rota interna do próprio front (/api/tracking/appsflyer) e vale pra UA mobile em geral, não só TWA. Ver AppsFlyer.
Pixel — script client-side da plataforma de ads que dispara eventos do browser. Carregado pelo GTM ou direto pelo useAnalytics.
Tracker — termo genérico pra qualquer ferramenta de tracking (Pixel, GTM, Hotjar, Clarity, etc).
Floodlight / DV360 — sistema de conversões do Google Marketing Platform. Diferente do Google Ads (que vive todo no GTM), o Floodlight é carregado pelo próprio front via gtag.js com o tag id DC-<advertiserId>, e dispara gtag('event','conversion',{ send_to }). Ativo em 2 brands. Ver Floodlight.
Pendo — product analytics + in-app guides / tours / NPS. Recebe 3 eventos manuais do hook (app_loaded, login, logout) e 3 de conversão pela matriz (sign_up, deposit_confirmed, withdraw). Carrega numa lane só de interação — não existe antes do primeiro clique. Ver Pendo.
Mixpanel — não existe mais. A integração foi removida de todas as brands em 2026-05: não há hook, config, package nem canal na matriz. Tracking spec ou dashboard que ainda citem Mixpanel estão desatualizados.
Privacidade
GCM v2 (Google Consent Mode v2) — protocolo do Google pra propagar consent do usuário pros tags GTM. 7 sinais: analytics_storage, ad_storage, ad_user_data, ad_personalization, functionality_storage, personalization_storage, security_storage. Cada um pode ser granted ou denied. Os defaults são injetados no dataLayer antes do container carregar — e, nas brands com anaLayer, também no dataLayer customizado, antes do container secundário. O wrapper gtag usado pra isso fica em window.__gtagConsent.
LGPD — Lei Geral de Proteção de Dados (Brasil). O banner de cookies do front trabalha com 4 categorias (necessary, performance, functionality, others) e persiste a escolha em cookies_consent por 12 meses. A tabela de divulgação que o usuário vê no painel é a COOKIE_TABLE de app/utils/consent.ts. Qual é o estado default de consent e o que a recusa do usuário efetivamente faz está descrito em Consent LGPD — o comportamento shipado difere da descrição antiga e precisa da confirmação do responsável por LGPD.
Modo cosmético — flag cookieConsentCosmeticOnly. Controla se a recusa do usuário no banner tem efeito. Estado default e brands afetadas em Modo Cosmético (página em revisão do owner de LGPD).
Eventos
Funnel signal — sinal binário e durável (registered, ftd_completed). Persiste no cookie de remarketing como audience tag.
Streaming event — sinal volumétrico (cada view_game_page, cada deposit_initiated). Vai pro dataLayer, é processado pelo GTM e disparado pros pixels. Não persiste no cookie.
view_item_list — evento GA4 ecommerce-standard que o front dispara quando uma seção da home/cassino entra no viewport pela primeira vez (após scroll). Vai pra GTM com array de itens.
view_promotion / select_promotion — eventos GA4 ecommerce de banner. Disparados quando user vê / clica em banner ou card de promoção.
Infraestrutura
TWA (Trusted Web Activity) — APK Android que renderiza o site num WebView Chrome controlado. Comporta-se como app nativo (push, install, full screen). Injeta ?app=true (ou ?is_twa=true) na URL inicial. Detalhes em App Mode.
?app=true / ?is_twa=true — query strings equivalentes que identificam o site rodando dentro de um TWA. is_twa existe porque os APKs publicados antes do rename ainda o injetam — ignorá-lo já matou silenciosamente o S2S de AppsFlyer pra esses usuários. O flag persiste em sessionStorage["cookie_app_mode"].
Efeito: desativa os trackers web client-side — a fórmula do gate é shouldLoadTrackers = !isAppMode. AppsFlyer permanece ativo (e é chamado antes do gate). Nas brands com anaLayer, os eventos do anaLayer são redirecionados pro AppsFlyer em vez do GTM.
:::note A cláusula de bot foi removida
A fórmula documentada antes era !isAppMode && !isBot. O && !isBot saiu junto com o branch de auditoria sintética na revisão de scheduler de 2026-06 — bots e Lighthouse carregam os mesmos scripts que usuário real, deliberadamente ("sem inflar score").
:::
BFF (Backend-for-Frontend) — camada de API que serve o front. Endpoints em /bff/*. Recebe os payloads de signup/deposit com UTMs.
GTM (Google Tag Manager) — container que orquestra pixels client-side (Meta, Google, TikTok, Kwai, Taboola, etc) sem precisar deploy de front.
anaLayer — segundo container GTM por brand, que lê de um dataLayer customizado (window.anaLayer) em vez do window.dataLayer. Catálogo de eventos próprio (33 hoje), isolado do stack antigo. Ativo em 4 brands — e na 7k-bet-br o GTM primário está desligado em prod, então lá o anaLayer é o único container. Ver anaLayer.
Stape (GTM Server-Side) — proxy GTM rodando em domínio próprio (ex: https://stape.brand.com). Configurável via gtmProxyUrl ou gtmScriptUrl na analyticsConfig; os dois setups vivos (betpontobet-bet-br, donald-bet-br) usam gtmScriptUrl — path ofuscado com o container ID em base64. gtmProxyUrl não é usado por nenhuma brand hoje.
dataLayer — array global do GTM (window.dataLayer). Front faz dataLayer.push({ event: "X", ... }) e GTM dispara as tags configuradas.
marketingScriptsStrategy — "eager" (default) ou "engagement". Controla quando o script de marketing baixa, não o que é medido: no modo engagement as filas nascem no mount e o download vai pra primeira interação real ou pro deadline marketingScriptsMaxDelayMs (default 5000ms). Nenhum evento é descartado. Hoje ligado em 7k-bet-br. Ver GTM.
enabledSpecificEvents — whitelist de eventos por brand no dispatcher GTM. Evento fora da lista no-opa silenciosamente. Ligado em betpontobet-bet-br e donald-bet-br (11 chaves cada). É a primeira coisa a checar quando "o evento X não dispara nessa brand".
Prerender guard — o dispatcher de analytics e o scheduler de terceiros seguram tudo enquanto document.prerendering === true e dão flush no prerenderingchange. Evita pageview/conversão fantasma de página pré-renderizada que o usuário nunca visitou. É correção de atribuição, não bug.
brand override — arquivo em overrides/<brand>/app/config/... que substitui (file-replacement, sem deep-merge) o config default do base. É como cada brand customiza pixel IDs, GTM ID, feature flags etc.
Misc
X-ORIGIN-* — família de headers HTTP injetados em toda chamada API pelo @cactus-agents/api-client. Carregam referrer, IDs de tracking e enum de access (1=App, 4=Mobile, etc). Usados pelo BFF pra atribuição e anti-fraude.
X-LOG-INFO — header de tracing único por request, formato 1-{timestamp}-{buildId}. Permite correlacionar logs server-side ao deploy específico.
build-id — primeiros 12 chars do commit SHA do deploy. Injetado em cookies de cache, headers de tracing, query string de scripts externos. Muda a cada deploy.
Wildcard utm_* — qualquer query param que comece com utm_ é capturado dinamicamente (não só os 4 canonical). Permite marketing adicionar utm_oferta, utm_term, utm_creative, utm_placement sem precisar deploy de front. Detalhes em UTMs.
Clicked-ID — ID de clique gerado pela plataforma de ads (gclid Google, fbclid Meta, ttclid TikTok, mgclid MGID, tclid Taboola, kwclid Kwai, obclid Outbrain, gbraid/wbraid Google iOS-15+). Capturado da URL e persistido individualmente no cookie_tracking. Detalhes em Clicked-IDs.