Pular para o conteúdo principal

Kwai Pixel

Kwai é uma plataforma de ads brasileira/asiática. O front tem integração SDK própria (não via GTM) em app/utils/metrics/kwai.ts.

Configuração por brand

Em overrides/<brand>/app/config/analytics/analytics.ts:

{
kwaiPixelId: "391184850252476579", // ← string ou null
}

Sem fallback API — se a brand quer Kwai, precisa setar explicitamente. null desativa.

BrandkwaiPixelId
7k-bet-br"391184850252476579" (igual em dev e prod)
Demais brandsnull

A 7k é a única brand com Kwai hoje.

Eventos enviados

Evento FrontEvento Kwai
page_viewcontentView
sign_upcompleteRegistration
first_depositpurchase (com value)
purchasepurchase (com value)

:::note page_view é enviado Esta página dizia que Kwai "não envia page_view". Envia: o adapter mapeia page_view → contentView, e a matriz declara page_view.kwai = { name: "contentView" }. Além disso, o initKwai dispara um pageVisit no próprio init. :::

Não envia view_game_page, withdraw, login etc — esses têm kwai: null na matriz (paridade legado).

Como funciona

Kwai está na lane eager dos scripts de marketing (ver GTM → Estratégia de carregamento) — carrega no mount, não espera interação nem idle callback. A descrição anterior ("scheduler libera após primeira interação ou idle callback") descrevia o sistema de gating removido em 2026-06.

  1. useAnalyticsBootstrap chama initKwai(pixelId) na lane de marketing da brand.
  2. initKwai:
    • injeta https://s.kwai.com/kwaiq/kwaiq.min.js no head;
    • aguarda o SDK em window.kwaiq;
    • inicia o pixel (window.kwaiq.instance(pixelId)) e dispara pageVisit.
  3. Eventos disparados antes do SDK chegar ficam em kwaiQueue e são replayados quando ele carrega.

Na brand em marketingScriptsStrategy: "engagement" (hoje a 7k — que é justamente a única com Kwai), o primeKwaiQueue cria a fila síncrona no mount e o download do kwaiq.min.js é adiado pra primeira interação real ou pro deadline. Nenhum evento é perdido — inclusive o contentView da landing, que é enfileirado.

Como debuggar

Console

window.kwaiq // SDK Kwai global
window.kwaiq.instance("PIXEL_ID") // instance da brand

Network

Filtra por s.kwai.com (loader) ou kwai em geral. Cada evento dispara um request pro endpoint Kwai.

Anti-patterns

  1. Setar kwaiPixelId em brand sem contrato Kwai ativo. Carrega script desnecessário.
  2. Esperar evento custom (view_game_page etc). O dispatcher Kwai só lida com page_view/signup/deposit/purchase. Adicionar evento exige mudança no kwai.ts + Kwai aceitar.
  3. Concluir que o pixel não carregou porque window.kwaiq está undefined no load. Na 7k a estratégia é engagement: o download só acontece na primeira interação ou no deadline. A fila já existe e os eventos estão guardados.