Pular para o conteúdo principal
← Voltar ao changelog

Changelog - 22/04/2026

Tracking de Marketing / UTMs

  • Captura de UTMs agora roda server-side no root loader (app/root.tsx). Antes, a captura era apenas client-side em useEffect — UTMs se perdiam quando um loader fazia redirect(...) antes do hydrate. Ex: landing /?utm_source=X&ref=AFIL1 que dispara redirect para /register agora preserva os parâmetros via Set-Cookie na própria response do redirect. Resolve o report "Rastreamento perde-se após o login/redirecionamento".
  • Política de atribuição alinhada com legado: last-touch. Cada nova URL com UTM sobrescreve o cookie anterior, igual ao middleware global do Nuxt antigo. A versão anterior (first-touch) divergia silenciosamente da atribuição calibrada nos dashboards de BI.
  • Captura também re-executa em toda navegação SPA via useLocation() no TrackingCapture — antes corria só 1x no mount.

Payloads para o BFF

  • Deposit (POST /wallet/add-credit): removido o campo src do body em buildDepositPayload. Nenhum dos quatro projetos legado (base, 7k-bet-br, cassino-bet-br, vera-bet-br) jamais enviou src no deposit — só no signup. Manter paridade evita surpresas em dashboards de BI.
  • Signup (POST /bff/register-simplified / POST /auth/register): payload continua enviando utm_source, utm_campaign, utm_content, utm_medium, src, ga_client_id, app_source, affiliation_code — já era assim antes, agora com cobertura de testes end-to-end (FormData → action → body do POST).

Headers HTTP automáticos

  • X-ORIGIN-ACCESS agora é derivado do User-Agent no api.server.ts (mobile vs desktop). Antes, todo request server enviava Desktop fixo; agora bate com a segmentação de device do BI legado.
  • X-LOG-INFO já era enviado em todo request, mas a documentação do SDK descrevia o formato errado ({tenant, version, locale, isAuth, originAccess}) — corrigido para o formato real 1-{timestamp}-{buildId}.

Documentação

  • Nova doc docs-internal/architecture/marketing-tracking.md cobrindo captura em 3 camadas, política last-touch, parâmetros e aliases, sanitização, storage (cookie_tracking + cookie_referrer), payloads finais por endpoint, headers automáticos, feature flag keepTrackingParamsInUrl e checklist anti-padrões.
  • sdk/api-client.md atualizado: tabela de headers automáticos completa (X-ORIGIN-REFERRER family); tipo ReferrerInfo corrigido (era declarado com campos UTM fictícios); tipo RequestDebugInfo corrigido (estava descrevendo um shape inexistente).
  • sdk/auth.md: RegisterSimplifiedPayload agora documenta os campos de tracking (utm_*, src, ga_client_id).
  • sdk/payments.md: shape completo do DepositPayload documentado, incluindo a regra "NÃO enviar src" como callout reforçado por teste automatizado.

Testes

  • Suite nova app/utils/__tests__/tracking.test.ts (15 casos): parser de URL com todos os aliases, sanitização, merge last-touch, casos edge.
  • Suite nova app/utils/__tests__/tracking.server.test.ts (9 casos): captura server-side, Set-Cookie serialization, strip de URL pela feature flag.
  • Suite nova app/modules/register/__tests__/flow.tracking.test.ts (4 casos): valida o pipeline FormData → parseRegisterFormDatabuildRegisterPayload ponta-a-ponta — garante que o que o browser submete chega ao body do POST que vai pro BFF.
  • packages/payments/src/__tests__/transform.test.ts: novo caso confirma que src não sai no deposit.
  • packages/api-client/src/__tests__/client.test.ts: novos casos cobrem X-LOG-INFO (formato + fallback nobuild) e X-ORIGIN-ACCESS (presença/ausência conforme enum).