Pular para o conteúdo principal

Testar uma campanha

Procedimento de validação antes de subir uma campanha em produção. Garante que o tracking captura tudo que deveria.

Pré-requisitos

  • Acesso ao dev local (URL http://localhost:5173) ou ambiente de staging
  • Chrome / Firefox / Edge com DevTools
  • Acesso ao GTM container da brand (se for testar tag GTM custom)
  • (Opcional) Meta Pixel Helper / TikTok Pixel Helper / Tag Assistant — extensões Chrome

Procedimento padrão (signup)

1. Limpa cookies do site

DevTools → ApplicationCookies → seleciona o domínio → Clear All Cookies. Garante que tracking começa zerado.

2. Abre URL com UTMs completos

http://localhost:5173/?utm_source=facebook&utm_campaign=black-friday-test&utm_medium=cpc&utm_content=banner-v3&utm_oferta=first-deposit-100pct&ref=AFIL_TEST&gclid=test_gclid_12345

DevTools → Application → Cookies → cookie_tracking:

{
"utm_source": "facebook",
"utm_campaign": "black-friday-test",
"utm_medium": "cpc",
"utm_content": "banner-v3",
"utm_oferta": "first-deposit-100pct",
"affiliation_code": "AFIL_TEST",
"gclid": "test_gclid_12345",
"media_source": "google",
"media_clid": "test_gclid_12345",
"app_source": "web"
}

Se todos os campos estão lá: captura OK. ❌ Se algum falta: investigar Debug ou Anti-patterns.

4. Testa sobrescrita last-touch

Clique em outro link com ?utm_campaign=cyber-monday:

http://localhost:5173/?utm_campaign=cyber-monday-test

Verifica cookie_tracking novamente:

{
"utm_source": "facebook", // ← preservado
"utm_campaign": "cyber-monday-test", // ← sobrescrito
"utm_medium": "cpc", // ← preservado
"utm_content": "banner-v3", // ← preservado
"affiliation_code": "AFIL_TEST", // ← preservado
"gclid": "test_gclid_12345" // ← preservado
}

✅ Last-touch funcionando.

5. Submete signup

Abre RegisterModal (header → "Cadastrar") → preenche formulário fictício → submete.

DevTools → Network → filtra por auth/register → seleciona request:

Form Data / Request body:

{
"email": "test@example.com",
"password": "...",
"country": "BRA",

"utm_source": "facebook",
"utm_campaign": "cyber-monday-test",
"utm_medium": "cpc",
"utm_content": "banner-v3",
"utm_oferta": "first-deposit-100pct",

"ga_client_id": "GA1.1.123456789.987654321",
"app_source": "web",
"affiliation_code": "AFIL_TEST",

"gclid": "test_gclid_12345",
"media_source": "google",
"media_clid": "test_gclid_12345"
}

Se TODOS os campos esperados estão no body: atribuição completa de signup OK.

6. Verifica headers X-ORIGIN-*

Na mesma request → seção Request Headers:

X-ORIGIN-ACCESS: 4 (mobile) ou 2 (desktop)
X-LOG-INFO: 1-1731000000000-8f2c1a4b3d3e

(X-ORIGIN-REFERRER aparece se você veio de URL externa; vazio se digitou direto.)

7. Confirma eventos GTM disparados

DevTools → Console:

window.dataLayer.filter(e => ["sign_up", "page_view"].includes(e.event))

Deve retornar pelo menos:

  • page_view
  • sign_up

Se você tem GTM Preview Mode ligado, valida que tags de conversion (Google Ads, Meta) dispararam.

Procedimento padrão (deposit)

Continua do passo 7. Agora valida o fluxo de FTD:

8. Submete depósito (modo PIX)

DepositModal → seleciona PIX → digita valor → submete.

DevTools → Network → filtra por payments/deposit:

Body deve ter:

{
"user_id": ...,
"credit_amount": 5000,
"payment_method": "pix",
"currency": "BRL",

"utm_source": "facebook",
"utm_campaign": "cyber-monday-test",
"utm_medium": "cpc",
"utm_content": "banner-v3",
"utm_oferta": "first-deposit-100pct",

"ga_client_id": "GA1.1.123456789.987654321",

"gclid": "test_gclid_12345",
"media_source": "google",
"media_clid": "test_gclid_12345"
}

⚠️ src, affiliation_code, subid, app_source NÃO devem estar no body de deposit (paridade legado). Se aparecerem, é bug.

9. Confirma evento GTM

window.dataLayer.filter(e => ["pix_generated", "deposit_initiated"].includes(e.event))

Deve retornar pix_generated (event name varia por método de pagamento — astropayDeposit para Astropay, etc).

10. Aguarda confirmação BFF

Backend confirma depósito após alguns segundos (mock em dev). Quando confirma:

window.dataLayer.filter(e => ["pix_confirmado_ftd", "first_deposit", "purchase"].includes(e.event))

Deve retornar 3 eventos (FTD branch):

  • pix_confirmado_ftd — GTM dispara Purchase Meta
  • first_deposit — GTM/Kwai/Taboola
  • purchase — GTM/Kwai/Taboola/Meta

Validações nos paineis externos

Meta Events Manager

business.facebook.com/events_manager2 → escolhe Pixel da brand → Test Events tab.

Cole ?test_event_code=TEST_XYZ na URL e abre o site → eventos devem aparecer em real-time com:

  • Purchase no FTD
  • CompleteRegistration no signup

Google Ads → Conversions → escolhe a Conversion Action → Diagnostics → "Recent conversions" mostra evento e payload (latência ~1 minuto).

Google Tag Assistant

Tag Assistant — tab "Tags Detected" mostra todos os pixels disparados na página com status (success/error).

Validação por brand

Antes de subir campanha em brand específica, repete o procedimento na URL daquela brand:

BrandURL dev local
Verafeca dev --vera-bet-brhttp://localhost:5173
7kfeca dev --7k-bet-br
Cassinofeca dev --cassino-bet-br
Etcfeca dev --<brand-key>

Cada brand tem analytics config diferente — testar na brand alvo evita surpresas em prod.

Checklist final antes de subir campanha

  • UTMs completos (source, campaign, medium, content) em todos os links de campanha
  • cookie_tracking populando após landing
  • Sobrescrita last-touch funciona (segundo link sobrescreve só o que veio)
  • Payload de signup tem todos os campos
  • Payload de deposit tem todos os campos (sem src/affiliation_code/subid/app_source)
  • Headers X-ORIGIN-* e X-LOG-INFO aparecem
  • GTM dispara sign_up e pix_confirmado_ftd/first_deposit/purchase
  • Meta Pixel Helper confirma CompleteRegistration + Purchase
  • Google Ads Test Events confirma conversion
  • Brand-specific testado (não default)

Quando tudo passa: pode subir campanha 👍.

Anti-patterns

  1. Testar só em prod. Bug de tracking afeta atribuição imediatamente. Sempre staging primeiro.
  2. Aceitar "funciona em uma brand, deve funcionar em todas". Cada brand tem override. Testa na brand alvo.
  3. Esquecer de testar fluxo de re-deposit (rebill). FTD funciona ≠ rebill funciona. Disparar second_deposit requer isFirstDeposit: false.
  4. Validar só DevTools sem confirmar nos paineis externos. Meta pode receber evento mas rejeitar (domain unverified, signal limit, etc).