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
| Brand | GTM (gtmId / gtmScriptUrl) | disableGtm (prod) | FB pixelId | FB Domain Verif | Kwai | Taboola | Clarity | Webtrends | Floodlight |
|---|---|---|---|---|---|---|---|---|---|
| 7k-bet-br | GTM-59XBN5T7 (pinado) | true | API | null | 391184850252476579 | null | null | undefined | null |
| betpontobet-bet-br | Stape gtmScriptUrl | false | API | a66iz0zi3kxc7rkamy3itfx0uyqap7 | null | 1509742 | null | não declarado | não declarado |
| cl-bet7k-com | — | true | 1313486743470963 (hardcoded) | null | null | null | null | null | configurado |
| donald-bet-br | Stape gtmScriptUrl | false | API | 8l5rqve1u9e675kf7nun14rs3vxpf1 | null | 1509742 | null | não declarado | não declarado |
| fi-7k-bet | — | true | API | null | null | null | null | null | null |
| ng-7k-bet | — | true | API | null | null | null | null | null | configurado |
| pb-bet | — | true | API | null | null | null | null | não declarado | não declarado |
| rj-bet | — | true | API | null | null | null | null | não declarado | nã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:
API—undefinedno override → cai no fallbackbrand.settings.analytics.Xda API/backofficenull— explicitamente desativado——gtmId/gtmScriptUrlambos vazios (não há container primário a carregar)(default)— brand sem override; herdaapp/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):
| Brand | Host |
|---|---|
betpontobet-bet-br | stape.betpontobet.bet.br |
donald-bet-br | stape.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
| Brand | advertiserId | group | allPages | signUp | addToCart | ftd | purchase |
|---|---|---|---|---|---|---|---|
cl-bet7k-com | 16089813 | invmedia | allpa001 | signu00 | addto000 | ftdch0 | purch000 |
ng-7k-bet | 16089813 | invmedia | allpa000 | signu0 | addto00 | ftdin0 | purch00 |
Detalhes em Plataformas → Floodlight.
Estratégia de carregamento dos scripts de marketing
marketingScriptsStrategy ("eager" | "engagement") + marketingScriptsMaxDelayMs.
| Brand | Estratégia | maxDelayMs |
|---|---|---|
7k-bet-br | "engagement" | 5000 |
| Demais | nã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
| Brand | containerId (prod) | enabled | dataLayerName |
|---|---|---|---|
7k-bet-br | GTM-59XBN5T7 | true | anaLayer |
betpontobet-bet-br | GTM-N3X5XTD3 | true | anaLayer |
cl-bet7k-com | GTM-MPMFX38W | true | anaLayer |
donald-bet-br | GTM-5D9C7445 | true | anaLayer |
| 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.
| Brand | enabledSpecificEvents |
|---|---|
betpontobet-bet-br | 11 chaves (pageView, signUp, login, pixGenerated, astropayDeposit, creditCardDeposit, oxxoDeposit, speiDeposit, worldlineDeposit, firstDeposit, purchase) |
donald-bet-br | as 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.
| Brand | enabled | accountId |
|---|---|---|
cl-bet7k-com | true | cl-bet7k-com |
ng-7k-bet | true | ng-7k-com |
7k-bet-br | false (desligado por decisão de produto em 2026-07-16; token/accountId preservados) | 7k-bet-br |
betpontobet-bet-br | false (mesma decisão) | betpontobet-bet-br |
| Demais (9) | false (default, sem override) | — |
Hotjar
Única brand com override: 7k-bet-br — e está desligado.
| Campo | Valor |
|---|---|
enabled | false |
hjid / hjsv | 6409658 / 6 |
identifyUsers | true |
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
| Brand | enabled | s2sUrl | afReferrer | postMessageMinVersion |
|---|---|---|---|---|
7k-bet-br | true | https://appsflyer.gdm7khub.com/appsflyer | 349825 | 3.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
| Brand | cookieName | cookieDomain |
|---|---|---|
7k-bet-br | rmk7k | .7k.bet.br |
betpontobet-bet-br | rmkbpb | .betpontobet.bet.br |
casateste-com | rmkcasateste | .casateste.com |
cl-bet7k-com | rmkcl7k | .cl.bet7k.com |
donald-bet-br | rmkdnb | .donald.bet.br |
fi-7k-bet | rmkfi7k | .fi.7k.bet |
ng-7k-bet | rmkng7k | .ng.7k.bet |
pb-bet | rmkpb | .pb.bet |
ph-state77-com | rmkphst77 | .ph.state77.com |
pt-state77-com | rmkptst77 | .pt.state77.com |
rj-bet | rmkrj | .rj.bet |
state77-com | rmkst77 | .state77.com |
x2b-bet | rmkx2b | .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
| Brand | cookieConsentCosmeticOnly | trackingCookieTtlHours | affiliateClever | keepTrackingParamsInUrl |
|---|---|---|---|---|
| Default base | true | ausente → 30 dias (720h) | false | true |
7k-bet-br | true | 720 (30 dias) | true | true |
betpontobet-bet-br | true | 240 (10 dias) | false | true |
casateste-com | false | ausente → 30 dias | false | true |
cl-bet7k-com | true | ausente → 30 dias | true | true |
donald-bet-br | false | 240 (10 dias) | false | true |
fi-7k-bet | true | ausente → 30 dias | true | true |
ng-7k-bet | true | ausente → 30 dias | true | true |
pb-bet | false | ausente → 30 dias | false | true |
ph-state77-com | false | ausente → 30 dias | false | true |
pt-state77-com | false | ausente → 30 dias | false | true |
rj-bet | false | ausente → 30 dias | false | true |
state77-com | false | ausente → 30 dias | false | true |
x2b-bet | false | ausente → 30 dias | false | true |
Referência das flags
| Flag | Default | O que afeta |
|---|---|---|
keepTrackingParamsInUrl | true | Se a URL preserva UTMs após a captura ou faz 302 pra URL "limpa" |
trackingCookieTtlHours | ausente → 720h (30 dias) | TTL do cookie_tracking — a janela de atribuição last-touch. Ver UTMs |
cookieConsentCosmeticOnly | true | Se a recusa do usuário no banner tem efeito. Não controla o default do GCM v2 (que é granted sempre). Ver Modo Cosmético |
affiliateClever | false | Liga a rota /clever + cookie lastclick |
thirdPartyScriptsDisabled | false | Kill switch global de todos os scripts third-party |
Onde editar cada coisa
| Surface | Arquivo |
|---|---|
| GTM, FB Pixel, Kwai, Taboola, Clarity, Webtrends, Domain Verification, Floodlight, estratégia de scripts | overrides/<brand>/app/config/analytics/analytics.ts |
| Container anaLayer | overrides/<brand>/app/config/analytics/analayer.ts |
| Whitelist de eventos GTM + renome de eventos | overrides/<brand>/app/config/analytics/schema.ts |
| Pendo | overrides/<brand>/app/config/analytics/pendo.ts |
| Hotjar | overrides/<brand>/app/config/analytics/hotjar.ts |
| AppsFlyer | overrides/<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 URL | overrides/<brand>/app/config/features/features.ts |
| TWA assetlinks | overrides/<brand>/public/.well-known/assetlinks.json — nã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
- Identifica o tipo (ID de analytics, feature flag, etc)
- Localiza o arquivo correspondente na tabela acima
- Edita o override da brand específica
- 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
- Pull request com descrição do impacto + revisão de marketing/BI quando aplicável
- Deploy — feature flag só muda depois de deploy
Anti-patterns
- Setar pixel ID hardcoded no default base (
app/config/analytics/analytics.ts) em vez de no override. Vaza pra todas as brands sem override. - Adicionar campo ao default base e esquecer os overrides. A brand com override recebe
undefined, não o default. - Confundir "API fallback" (
undefined) com "desativado" (null). Semânticas diferentes:undefinedcai no backoffice,nulldesliga. - Assumir que
dataLayeré o container da brand. Em 6 brands o GTM primário está desligado em prod; em7k-bet-bro tagging vive noanaLayer. - Deduzir a config de uma brand a partir de outra. Testar em uma ≠ funcionar em todas.
- Agir num valor desta página sem conferir o repo. Os
grepde cada seção existem pra isso.