O que anotar antes de começar
- Phone Number ID — ID numérico do número na Meta
- Access Token permanente — usuário do sistema (
EAAG…) - Verify Token — mesmo valor no Meta e no Zenda
- App Secret — recomendado em produção (assinatura do webhook)
1. Criar app na Meta for Developers
- Acesse developers.facebook.com e faça login.
- Meus Apps → Criar app → tipo Business (não Consumer).
- Nome do app, e-mail e vincule à Meta Business Account.
2. Adicionar produto WhatsApp
- No app → Adicionar produto → WhatsApp → Configurar.
- A Meta cria um WABA de teste e um número de teste para validar o fluxo.
- Menu lateral: WhatsApp → Configuração da API. Anote o ID do número de telefone (Phone Number ID).
Modo desenvolvimento: só números cadastrados como testadores no app Meta conseguem conversar até você publicar o app.
3. Registrar seu número (produção)
- Em WhatsApp → Configuração da API → Adicionar número de telefone.
- Nome de exibição, número internacional (ex.:
+5511999999999) e verificação por SMS ou voz. - Após verificar, copie o Phone Number ID (ex.:
734676046395100).
4. Token permanente (usuário do sistema)
Tokens temporários do painel expiram em horas. Em produção use um usuário do sistema:- Meta Business Suite → Usuários do sistema
- Adicionar → nome (ex.:
zenda-bot) → função Administrador. - Adicionar ativos → Apps → seu app → Controle total.
- Gerar novo token → marque
whatsapp_business_messagingewhatsapp_business_management→ copie o token (EAAG…).
5. Configurar webhook na Meta
A Meta envia mensagens recebidas para o Zenda via POST.- App → produto WhatsApp → Configuração → seção Webhook → Editar.
- URL de callback: copie da página Dashboard → Agente → Publicar → WhatsApp (campo Webhook Meta). Formato:
https://<seu-backend>/webhooks/whatsapp - Token de verificação: valor de
META_WHATSAPP_WEBHOOK_VERIFY_TOKENno servidor Zenda — deve ser idêntico nos dois lados. - Clique Verificar e salvar.
- Em Gerenciar, assine o campo messages.
Produção: configure também
META_WHATSAPP_APP_SECRET no backend. Sem ele, o Zenda rejeita POSTs não assinados. Reinicie o backend após alterar .env.6. Conectar no Zenda
- Dashboard → escolha o agente → Publicar → card WhatsApp.
- Cole Phone Number ID e Access Token → Salvar credenciais.
- Ative o interruptor do canal. Status Número vinculado confirma que as credenciais foram aceitas.
META_WHATSAPP_APP_ID e META_WHATSAPP_EMBEDDED_CONFIG_ID, o botão Ligar WhatsApp com Meta conecta via OAuth sem colar token manualmente. O webhook e o verify token continuam obrigatórios.
7. Testar no Activity
- Do seu WhatsApp pessoal, envie mensagem para o número Business.
- Em alguns segundos a IA responde (debounce ~3 s se o cliente mandar várias msgs seguidas).
- No Zenda: Activity → conversa com tag WhatsApp Meta.
- O contato aparece com nome (perfil Meta) e telefone.
8. Assumir conversa (operador humano)
- Na conversa, clique Assumir conversa — a IA para de responder.
- Digite e envie — a mensagem chega no WhatsApp do cliente como Operador.
- Use Devolver para IA para retomar automação.
- Palavras como humano ou atendente podem acionar handoff automático.
Variáveis no servidor (deploy)
Referência para quem faz deploy (Railway, etc.):Perguntas frequentes
Webhook retorna 403 ao verificar
Webhook retorna 403 ao verificar
O verify token no Meta não bate com
META_WHATSAPP_WEBHOOK_VERIFY_TOKEN no backend, ou o backend não foi reiniciado após editar .env. Confira os dois lados.Mensagem chega na Meta mas não aparece no Zenda
Mensagem chega na Meta mas não aparece no Zenda
Verifique assinatura do campo messages, se o Phone Number ID salvo corresponde ao número que recebeu a msg, e logs do backend (filtrar
[WA]).IA respondeu depois que assumi a conversa
IA respondeu depois que assumi a conversa
Confirme status Aguardando (human) no Activity. Com conversa assumida, a IA não responde inbound.
Só testadores conseguem enviar mensagem
Só testadores conseguem enviar mensagem
App Meta em modo desenvolvimento. Adicione testadores em Funções do app → Testadores ou publique o app.
Token expira e para de responder
Token expira e para de responder
Use token de usuário do sistema (passo 4), não o token temporário do painel API.
Política Zenda + Meta: o Zenda só envia WhatsApp como resposta a mensagem do cliente (sessão iniciada pelo usuário). Sem campanhas proativas ou disparos a frio por esta integração.