Skip to content

Regras de Redirecionamento

O que é o redirecionamento de campanha

Quando um template WhatsApp tem um botão URL de "falar com a loja", a URL usa um token de rastreamento:

https://apicrm.galdix.com.br/go/{token}

O servidor resolve o token, decide qual loja contatar, envia mensagens e redireciona o cliente para o WhatsApp da loja via wa.me/{numero}.

Lifetime do token

30 dias desde o envio da campanha. Token expirado → página de erro.

Geração: UUID aleatório por cliente por envio de campanha. Não é reutilizado.

Resolução da loja (prioridade)

O sistema escolhe qual loja receber o cliente na seguinte ordem:

1. Loja fixada no botão do template (campo fixedStoreId)
2. Loja preferida do cliente (Customer.preferredStoreId)
3. Loja e-commerce (Store.isEcommerce = true) — fallback genérico
4. Qualquer loja com WhatsApp configurado

Modo Evolution vs. WABA

Com Evolution (loja física)

O cliente é roteado para a instância Evolution da loja → o Evolution envia uma mensagem de saudação → o cliente é redirecionado para o número de WhatsApp da loja.

Mensagens enviadas:

  1. Via WABA (Meta): Mensagem de confirmação ao cliente (template configurado)
    • Variáveis: ,
  2. Via Evolution: Mensagem de saudação da loja (configurada em redirectGreeting)
  3. Browser: Redireciona para wa.me/{evolutionNumber}

Sem Evolution (WABA)

Quando não há instância Evolution disponível para a loja selecionada:

  1. Via WABA: Mensagem "Conectando você com , aguarde... ⏳"
  2. Background (assíncrono): Cria conversa no Chatwoot, atribui agente, envia saudação
  3. Browser: Redireciona para wa.me/{wabaNumber}

O redirect sempre acontece — mesmo se as mensagens falharem.

Opt-out permanente (botão de descadastrar)

Templates podem ter botão de opt-out marcado com isUnsubscribe: true.

URL gerada: /go/unsubscribe/{token} onde {token} é o Customer.whatsappUnsubscribeToken.

Diferença do redirect normal:

  • Token de unsubscribe é permanente (nunca expira)
  • Um por cliente (não por campanha)
  • Ao acessar: define whatsappOptOut = true permanentemente

Rastreamento de cliques

Quando o token é resolvido:

  • CampaignRedirectToken.clickedAt = agora
  • CampaignRedirectToken.redirectedTo = número da loja selecionada

Essas métricas aparecem no monitoramento de campanhas.

Regras de segurança

  • Token não encontrado → erro genérico (não revela se existia)
  • Token expirado → erro (sem informação sobre qual campanha)
  • Sem lookup brute-force possível (UUID v4, 2^122 combinações)