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 → Application → Cookies → 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
3. Verifica cookie_tracking
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:
- 1×
page_view - 1×
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 disparaPurchaseMetafirst_deposit— GTM/Kwai/Taboolapurchase— 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:
Purchaseno FTDCompleteRegistrationno signup
Google Ads Conversion DebugView
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:
| Brand | URL dev local |
|---|---|
| Vera | feca dev --vera-bet-br → http://localhost:5173 |
| 7k | feca dev --7k-bet-br |
| Cassino | feca dev --cassino-bet-br |
| Etc | feca 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_trackingpopulando 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-*eX-LOG-INFOaparecem - GTM dispara
sign_upepix_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
- Testar só em prod. Bug de tracking afeta atribuição imediatamente. Sempre staging primeiro.
- Aceitar "funciona em uma brand, deve funcionar em todas". Cada brand tem override. Testa na brand alvo.
- Esquecer de testar fluxo de re-deposit (rebill). FTD funciona ≠ rebill funciona. Disparar
second_depositrequerisFirstDeposit: false. - Validar só DevTools sem confirmar nos paineis externos. Meta pode receber evento mas rejeitar (domain unverified, signal limit, etc).