Pular para o conteúdo principal

Config map por brand

Referência operacional de qual valor cada brand tem em cada surface de marketing. Use pra responder "como está o pixel X na brand Y?".

:::warning Esta tabela é snapshot — o repo é a fonte de verdade Estas configs mudam toda semana. Antes de agir num valor daqui, confirme no repo. Cada seção abaixo traz o grep que regenera a informação a partir de repos/front-web-base/overrides/<brand>/app/config/. Se doc e repo divergirem, o repo vence. :::

As 13 brands do base

7k-bet-br, betpontobet-bet-br, casateste-com, cl-bet7k-com, donald-bet-br, fi-7k-bet, ng-7k-bet, pb-bet, ph-state77-com, pt-state77-com, rj-bet, state77-com, x2b-bet.

Lista viva: ls repos/front-web-base/overrides/.

:::note cassino-bet-br e vera-bet-br saíram do base As duas brands foram removidas do front-web-base em 2026-07 e não têm mais override nem ambiente de deploy — configuração, pixels e assetlinks.json delas estão fora do escopo desta doc. :::

:::danger Override é substituição de arquivo inteiro, não deep-merge Um overrides/<brand>/app/config/analytics/analytics.ts substitui o arquivo do base por completo. Campo que a brand não declara fica undefined — ela não herda o valor do base. Por isso "não declarado" e "(default do base)" são coisas diferentes nas tabelas abaixo, e por isso adicionar campo novo ao base exige propagar pra todos os overrides. :::

Pixels de ads (analytics.ts)

Carregados pelo hook useAnalytics. Só 8 das 13 brands têm override; as outras 5 usam o default do base (tudo desligado).

# fonte viva
for f in overrides/*/app/config/analytics/analytics.ts; do echo "== $f"; grep -vE '^\s*(\*|/\*|//)' $f; done
BrandGTM (gtmId / gtmScriptUrl)disableGtm (prod)FB pixelIdFB Domain VerifKwaiTaboolaClarityWebtrendsFloodlight
7k-bet-brGTM-59XBN5T7 (pinado)trueAPInull391184850252476579nullnullundefinednull
betpontobet-bet-brStape gtmScriptUrlfalseAPIa66iz0zi3kxc7rkamy3itfx0uyqap7null1509742nullnão declaradonão declarado
cl-bet7k-comtrue1313486743470963 (hardcoded)nullnullnullnullnullconfigurado
donald-bet-brStape gtmScriptUrlfalseAPI8l5rqve1u9e675kf7nun14rs3vxpf1null1509742nullnão declaradonão declarado
fi-7k-bettrueAPInullnullnullnullnullnull
ng-7k-bettrueAPInullnullnullnullnullconfigurado
pb-bettrueAPInullnullnullnullnão declaradonão declarado
rj-bettrueAPInullnullnullnullnão declaradonão declarado
casateste-com(default)false(default)(default)(default)(default)(default)(default)(default)
ph-state77-com(default)false(default)(default)(default)(default)(default)(default)(default)
pt-state77-com(default)false(default)(default)(default)(default)(default)(default)(default)
state77-com(default)false(default)(default)(default)(default)(default)(default)(default)
x2b-bet(default)false(default)(default)(default)(default)(default)(default)(default)

Legenda:

  • APIundefined no override → cai no fallback brand.settings.analytics.X da API/backoffice
  • null — explicitamente desativado
  • gtmId/gtmScriptUrl ambos vazios (não há container primário a carregar)
  • (default) — brand sem override; herda app/config/analytics/analytics.ts (tudo desligado, disableGtm: false)
  • não declarado — override existe mas omite o campo → undefined (ver o aviso de file-replacement acima)

:::caution disableGtm: true em 6 brands — e é intencional 7k-bet-br, cl-bet7k-com, fi-7k-bet, ng-7k-bet, pb-bet e rj-bet desligam o container do dataLayer primário em produção. No caso do 7k-bet-br o motivo é a migração para o anaLayer (container secundário, ver abaixo): quem for debugar tagging nessa brand olhando window.dataLayer não vai achar nada. Todas as 8 brands com override também desligam o GTM em dev (isDev() ? true : ...). :::

Stape (gtmScriptUrl)

Duas brands usam server-side GTM via Stape, com path obfuscado e o container ID em base64 na querystring — modo gtmScriptUrl (URL completa custom, tem prioridade sobre gtmId):

BrandHost
betpontobet-bet-brstape.betpontobet.bet.br
donald-bet-brstape.donald.bet.br

Nas duas o gtmScriptUrl é undefined em dev e só resolve em produção. gtmProxyUrl (modo 2 — base URL custom + gtmId) não é usado por nenhuma brand hoje.

Floodlight (Google DV360)

grep -rn "floodlight" overrides/*/app/config/analytics/analytics.ts
BrandadvertiserIdgroupallPagessignUpaddToCartftdpurchase
cl-bet7k-com16089813invmediaallpa001signu00addto000ftdch0purch000
ng-7k-bet16089813invmediaallpa000signu0addto00ftdin0purch00

Detalhes em Plataformas → Floodlight.

Estratégia de carregamento dos scripts de marketing

marketingScriptsStrategy ("eager" | "engagement") + marketingScriptsMaxDelayMs.

BrandEstratégiamaxDelayMs
7k-bet-br"engagement"5000
Demaisnão declarado → "eager" (default)

anaLayer — container GTM secundário

Segundo container por brand, sobre um dataLayer próprio (anaLayer), isolado do dataLayer primário. Base default: { containerId: null, enabled: false }.

grep -rn "PROD_CONTAINER_ID\|enabled" overrides/*/app/config/analytics/analayer.ts
BrandcontainerId (prod)enableddataLayerName
7k-bet-brGTM-59XBN5T7trueanaLayer
betpontobet-bet-brGTM-N3X5XTD3trueanaLayer
cl-bet7k-comGTM-MPMFX38WtrueanaLayer
donald-bet-brGTM-5D9C7445trueanaLayer
Demais (9)false (default)

Convenção: containerId é null em dev nas quatro (isDev() ? null : PROD_CONTAINER_ID) — o container só carrega em produção. Detalhes em Plataformas → anaLayer.

Whitelist de eventos GTM (schema.ts)

analyticsSchemaConfig.enabledSpecificEvents — quando presente, só as chaves listadas passam pelo dispatcher GTM; o resto vira no-op silencioso.

BrandenabledSpecificEvents
betpontobet-bet-br11 chaves (pageView, signUp, login, pixGenerated, astropayDeposit, creditCardDeposit, oxxoDeposit, speiDeposit, worldlineDeposit, firstDeposit, purchase)
donald-bet-bras mesmas 11 chaves
Demais (11)ausente → todos os eventos passam

Semântica completa em Catálogo de eventos.

Ferramentas de produto / UX

grep -rn "enabled" overrides/*/app/config/analytics/{pendo,hotjar}.ts

Pendo

Base default: { enabled: false }. O agente só carrega com enabled: true.

BrandenabledaccountId
cl-bet7k-comtruecl-bet7k-com
ng-7k-bettrueng-7k-com
7k-bet-brfalse (desligado por decisão de produto em 2026-07-16; token/accountId preservados)7k-bet-br
betpontobet-bet-brfalse (mesma decisão)betpontobet-bet-br
Demais (9)false (default, sem override)

Hotjar

Única brand com override: 7k-bet-br — e está desligado.

CampoValor
enabledfalse
hjid / hjsv6409658 / 6
identifyUserstrue
brandTag"7k"

Config preservada pra facilitar reativação. Nenhuma outra brand tem override — todas herdam o default desligado.

Mobile (AppsFlyer) + Remarketing first-party

AppsFlyer

Todas as 13 brands têm um appsflyer.ts, mas só uma está ligada.

grep -rn "enabled" overrides/*/app/config/analytics/appsflyer.ts
Brandenableds2sUrlafReferrerpostMessageMinVersion
7k-bet-brtruehttps://appsflyer.gdm7khub.com/appsflyer3498253.0.0
Demais (12)false

Não existe campo appId no AppsFlyerConfig. Shape real e as duas rotas de envio em Plataformas → AppsFlyer.

Remarketing (rmk*)

Todas as 13 brands têm remarketing ligado, cada uma com cookie e domínio próprios. Base default é { enabled: false, cookieName: "" } — quem não tiver override fica desligado, mas hoje não há brand nessa situação.

grep -rn "cookieName\|cookieDomain" overrides/*/app/config/features/remarketing.ts
BrandcookieNamecookieDomain
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

Todas com pushToDataLayer: true, exposeOnWindow: true, sendToBff: false. Ver Remarketing.

TWA assetlinks.json

Uma única brand versiona o arquivo neste repo: 7k-bet-br (overrides/7k-bet-br/public/.well-known/assetlinks.json, package_name: br.bet.k.twa). NÃO ALTERAR sem coordenar com o time mobile. Ver App Mode.

Feature flags relevantes pra marketing

grep -rn "cookieConsentCosmeticOnly\|trackingCookieTtlHours\|affiliateClever\|keepTrackingParamsInUrl" \
app/config/features/features.ts overrides/*/app/config/features/features.ts
BrandcookieConsentCosmeticOnlytrackingCookieTtlHoursaffiliateCleverkeepTrackingParamsInUrl
Default basetrueausente → 30 dias (720h)falsetrue
7k-bet-brtrue720 (30 dias)truetrue
betpontobet-bet-brtrue240 (10 dias)falsetrue
casateste-comfalseausente → 30 diasfalsetrue
cl-bet7k-comtrueausente → 30 diastruetrue
donald-bet-brfalse240 (10 dias)falsetrue
fi-7k-bettrueausente → 30 diastruetrue
ng-7k-bettrueausente → 30 diastruetrue
pb-betfalseausente → 30 diasfalsetrue
ph-state77-comfalseausente → 30 diasfalsetrue
pt-state77-comfalseausente → 30 diasfalsetrue
rj-betfalseausente → 30 diasfalsetrue
state77-comfalseausente → 30 diasfalsetrue
x2b-betfalseausente → 30 diasfalsetrue

Referência das flags

FlagDefaultO que afeta
keepTrackingParamsInUrltrueSe a URL preserva UTMs após a captura ou faz 302 pra URL "limpa"
trackingCookieTtlHoursausente → 720h (30 dias)TTL do cookie_tracking — a janela de atribuição last-touch. Ver UTMs
cookieConsentCosmeticOnlytrueSe a recusa do usuário no banner tem efeito. Não controla o default do GCM v2 (que é granted sempre). Ver Modo Cosmético
affiliateCleverfalseLiga a rota /clever + cookie lastclick
thirdPartyScriptsDisabledfalseKill switch global de todos os scripts third-party

Onde editar cada coisa

SurfaceArquivo
GTM, FB Pixel, Kwai, Taboola, Clarity, Webtrends, Domain Verification, Floodlight, estratégia de scriptsoverrides/<brand>/app/config/analytics/analytics.ts
Container anaLayeroverrides/<brand>/app/config/analytics/analayer.ts
Whitelist de eventos GTM + renome de eventosoverrides/<brand>/app/config/analytics/schema.ts
Pendooverrides/<brand>/app/config/analytics/pendo.ts
Hotjaroverrides/<brand>/app/config/analytics/hotjar.ts
AppsFlyeroverrides/<brand>/app/config/analytics/appsflyer.ts
Remarketing (rmk*)overrides/<brand>/app/config/features/remarketing.ts
Consent cosmético, TTL de atribuição, Clever, UTMs na URLoverrides/<brand>/app/config/features/features.ts
TWA assetlinksoverrides/<brand>/public/.well-known/assetlinks.jsonnão alterar sem o time mobile
Scripts custom (<script> em head/body)overrides/<brand>/app/config/scripts/scripts.ts

Não existe overrides/<brand>/app/config/analytics/mixpanel.ts — a integração Mixpanel foi removida da plataforma em 2026-05 e não tem sucessor.

Como adicionar uma config nova

  1. Identifica o tipo (ID de analytics, feature flag, etc)
  2. Localiza o arquivo correspondente na tabela acima
  3. Edita o override da brand específica
  4. Se o campo é novo no tipo: adiciona no default do base e propaga pra todos os overrides daquele arquivo — override é substituição de arquivo inteiro
  5. Pull request com descrição do impacto + revisão de marketing/BI quando aplicável
  6. Deploy — feature flag só muda depois de deploy

Anti-patterns

  1. Setar pixel ID hardcoded no default base (app/config/analytics/analytics.ts) em vez de no override. Vaza pra todas as brands sem override.
  2. Adicionar campo ao default base e esquecer os overrides. A brand com override recebe undefined, não o default.
  3. Confundir "API fallback" (undefined) com "desativado" (null). Semânticas diferentes: undefined cai no backoffice, null desliga.
  4. Assumir que dataLayer é o container da brand. Em 6 brands o GTM primário está desligado em prod; em 7k-bet-br o tagging vive no anaLayer.
  5. Deduzir a config de uma brand a partir de outra. Testar em uma ≠ funcionar em todas.
  6. Agir num valor desta página sem conferir o repo. Os grep de cada seção existem pra isso.