Como disparar automação via webhook externo
Nível: Intermediário Tempo de leitura: 6 min Plano necessário: Pro ou Ultra
Procurando a referência técnica? Veja POST /automation-trigger na documentação de API, com todos os campos do body, códigos de erro (incluindo cooldown e opt-out) e exemplos em curl/JavaScript.
Quando usar webhook
Webhook permite que outro sistema (n8n, Make, RD Station Marketing, Pipedrive, formulário de site) jogue contatos no seu fluxo automaticamente. Sempre que o sistema externo dispara uma chamada HTTP, a Wevi cria uma nova run pro contato indicado.
Casos comuns:
- Formulário do site → contato vai pra fluxo de boas-vindas
- Lead vira oportunidade no CRM → entra em fluxo de qualificação
- Pedido cancelado no e-commerce → entra em fluxo de recuperação
- n8n detecta evento em outra ferramenta → encaminha pra Wevi
Como ativar
No editor da automação, clique no nó Gatilho e ative Webhook externo. Aparecem 2 campos:
- URL: endpoint pra onde o sistema externo deve mandar a chamada
- Token (header
Authorization: Bearer): chave secreta de autenticação
Use os botões ao lado pra copiar ou gerar um novo token. Guarde os dois com cuidado, qualquer um com o token pode disparar runs no seu fluxo.
Como o sistema externo deve chamar
Faça uma requisição HTTP POST na URL informada, com:
- Header
Content-Type: application/json - Header
Authorization: Bearer <seu-token> - Body JSON com os dados do contato
Body esperado
{
"phone": "+5511999999999",
"name": "Maria Silva",
"custom_fields": {
"produto_interesse": "Plano Pro",
"origem": "site"
}
}
Só phone é obrigatório. O name e os custom_fields ficam disponíveis como variáveis nas mensagens.
Exemplo de curl
curl -X POST 'https://api.wevi.chat/functions/v1/automation-trigger' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer SEU_TOKEN_AQUI' \
-d '{"phone": "+5511999999999", "name": "Maria"}'
Exemplos por ferramenta
n8n
- Adicione um HTTP Request node ao seu workflow
- Method:
POST - URL: a URL que apareceu no gatilho
- Authentication: None
- Headers: adicione
Authorizationcom valorBearer <seu-token> - Body Content Type:
JSON - JSON Body: monte o objeto com os dados do contato vindos dos nodes anteriores
Make (Integromat)
- Adicione um módulo HTTP > Make a request
- URL: a URL do gatilho
- Method:
POST - Headers:
Authorizationcom valorBearer <seu-token> - Body type:
Raw - Content type:
JSON - Request content: o JSON com phone, name e custom_fields
RD Station Marketing
No fim de um fluxo de automação do RD, adicione a ação Enviar evento HTTP (webhook):
- URL: a URL do gatilho
- Método:
POST - Headers:
Authorizationcom valorBearer <seu-token>(use a aba de headers customizados) - Body: mapeie os campos do contato pra
phone,nameecustom_fields
Pipedrive, HubSpot e outros
A maioria dos CRMs tem ações de webhook em automações ou em "deal updated" / "person created". Procure por "Webhook" nas ações disponíveis.
Códigos de resposta
A chamada pode retornar diferentes status. Trate cada um:
| Código | O que significa | Ação |
|---|---|---|
| 200 | Run criada com sucesso | Tudo certo |
| 400 | Faltou o phone no body |
Corrija o body |
| 401 | Token inválido ou faltando | Conferir o header Authorization |
| 403 | Contato fez opt-out OU webhook desativado no fluxo | Lead pediu pra sair, respeitar |
| 409 | Contato já está em uma run ativa OU em cooldown | Esperar terminar ou cooldown vencer |
| 500 | Erro interno | Tentar de novo depois |
O body da resposta sempre traz um campo error ou reason indicando a causa.
Re-entrada
Por padrão, um contato que já passou pelo fluxo NÃO entra de novo, mesmo se você disparar o webhook outra vez. Pra liberar, configure o cooldown no fluxo. Veja Re-entrada e cooldown.
Segurança
- O token é gerado por fluxo, não compartilhado entre fluxos
- Trate o token como secret (não comite em repositório público)
- Se suspeitar de vazamento, clique em "Gerar novo" pra invalidar o anterior. O antigo para de funcionar imediatamente
- A URL pode ficar pública sem problema, o que protege é o token
Próximos passos
- Variáveis e personalização (explica como
custom_fieldsviram conteúdo da mensagem) - Critérios de saída