Pular para o conteúdo principal

Google Ads

Google Ads é integrado via GTM: as tags de conversão Google Ads são configuradas dentro do container GTM da brand, e não existe config local de "Google Ads ID" no front (não há nenhum AW- no código).

:::warning O front SIM carrega um tag Google por conta própria — mas não é Google Ads Esta página afirmava que "não há SDK Google próprio no front". Isso é verdade para Google Ads, mas não para a Google Marketing Platform: o front injeta gtag.js com o tag id DC-<advertiserId> e dispara conversões Floodlight / DV360 diretamente, em 2 brands. Ver Floodlight / DV360.

Na prática: se você está debuggando e vê googletagmanager.com/gtag/js?id=DC-… na Network, esse é o Floodlight, não uma tag de Google Ads escapando do container. :::

Modelo de integração

Não há config local de "Google Ads ID". Tudo vive no GTM. (Conversões Floodlight são o caso separado — carregadas pelo front, ver Floodlight / DV360.)

Setup recomendado no GTM

Conversion tag — FTD

  1. Tag type: Google Ads Conversion Tracking
  2. Conversion ID + Label: do Google Ads (Conversion Actions → New)
  3. Trigger: Custom Event = first_deposit
  4. Conversion Value: {{DLV - value}} (lê value do dataLayer)
  5. Currency: {{DLV - currency}}
  6. Transaction ID: {{DLV - transactionId}} (deduplicação)

Conversion tag — Sign-up

  1. Trigger: Custom Event = sign_up
  2. Value: opcional (CPL fixo da campanha)

Remarketing tag

  1. Tag type: Google Ads Remarketing
  2. Trigger: All Pages (pra audiência geral) ou eventos específicos
  3. Custom Parameters: opcional, pode mapear do dataLayer

gclid — Click ID do Google

Capturado da URL via Clicked-IDs. Persistido como:

  • Campo individual no cookie_tracking: { "gclid": "Cj0KCQjw..." }
  • media_clid derivado quando gclid é o primeiro match: { "media_source": "google", "media_clid": "Cj0KCQjw..." }

Vai no payload de signup e deposit pro BFF.

Enhanced Conversions — Roadmap

Status atual: NÃO implementado.

Enhanced Conversions enriquece conversões com hashed PII (email, telefone) e/ou external_id. Permite Google Ads matchar com user mesmo quando o gclid não foi setado (iOS 14+, ad blockers).

Implementação requer:

  1. BFF receber external_id (UUID do cookie de remarketing da brand — rmk7k na 7k) no payload — ver Remarketing
  2. BFF chamar Google Ads API server-side com hashed user data
  3. Configurar Enhanced Conversions no Google Ads Conversion Action

Mesma trajetória da CAPI da Meta — depende de priorização de BFF.

Audiências dinâmicas (Display Remarketing)

Pra mostrar anúncio do exato jogo que o user viu:

  1. Cria audience dinâmica no Google Ads → Audience Manager → Custom audiences
  2. Trigger no GTM: Custom Event = view_game_page, parâmetros = { game_id, game_name, game_category }
  3. Tag: Google Ads Remarketing com dynamic remarketing parameters (ecomm_prodid: {{DLV - gameId}}, ecomm_pagetype: 'product', etc)

O front já dispara view_game_page com gameId, gameName, gameCategory no payload — basta wirar no GTM.

Configuração por brand

Sem config local — toda configuração vive no container GTM da brand. Ver Por Brand pra mapeamento de qual GTM ID cada brand usa.

Como debuggar

Google Tag Assistant (Chrome extension)

Tag Assistant — debug de tags Google em geral.

Google Ads → Conversions → seleciona uma Conversion Action → "Diagnostics" mostra eventos recebidos em tempo real (latência ~1 minuto).

gclid sobrevivendo redirects

1. Acessa `http://localhost:<DEV_PORT>/?gclid=test_gclid_12345` (a porta do dev server não é sempre 5173)
2. DevTools → Cookies → cookie_tracking deve ter "gclid": "test_gclid_12345"
3. Submete signup → Network → POST /api/auth/register → body deve ter "gclid"

Anti-patterns

  1. Disparar conversion duas vezes (uma via GTM, outra via tag manual). Inflate conversão.
  2. Não passar transactionId na tag de conversion. Google deduplica por transactionId — sem ele, refresh da página dispara nova conversão.
  3. Usar value em moeda diferente da configurada na conversão. Quebra ROAS.
  4. Configurar Enhanced Conversions com email não-hashado. Google rejeita ou (pior) loga PII em request body. Sempre SHA256(email) lowercased.