Pular para o conteúdo principal

Visão Geral

Webhooks de saída enviam dados para sistemas externos quando eventos específicos ocorrem no Leavo.

Criar Webhook de Saída

POST /backend/webhooks

Request Body

name
string
obrigatório
Nome do webhook
description
string
Descrição do webhook
type
string
obrigatório
Deve ser "outbound"
is_active
boolean
padrão:"true"
Se o webhook está ativo
target_url
string
obrigatório
URL de destino para enviar os dados
trigger_events
array
obrigatório
Eventos que disparam o webhook: lead_created, lead_updated, status_changed
trigger_status_ids
array
Para status_changed: filtrar por status específicos
output_field_mapping
object
Mapeamento de campos do lead para o payload de saída
output_custom_field_mapping
object
Mapeamento de campos personalizados

Exemplo

curl -X POST "https://api.leavo.ai/backend/webhooks" \
  -H "Authorization: Bearer sua_chave_aqui" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Notificar CRM",
    "description": "Envia leads qualificados para o CRM",
    "type": "outbound",
    "is_active": true,
    "target_url": "https://seu-crm.com/api/leads",
    "trigger_events": ["lead_created", "status_changed"],
    "trigger_status_ids": ["uuid-status-qualificado"],
    "output_field_mapping": {
      "customer_name": "name",
      "customer_email": "email",
      "customer_phone": "phone"
    },
    "output_custom_field_mapping": {
      "external_field": "custom_field_key"
    }
  }'

Eventos de Disparo

Dispara quando um novo lead é criado no sistema.Útil para sincronizar leads com CRM ou ferramentas de marketing.
Dispara quando os dados de um lead são atualizados.Inclui mudanças em nome, email, telefone, empresa, etc.
Dispara quando o status de um lead muda.Pode ser filtrado por status específicos usando trigger_status_ids.

Payload Enviado

Quando um evento é disparado, o seguinte payload é enviado para a URL de destino:
{
  "event": "lead_created",
  "timestamp": "2024-01-15T10:30:00Z",
  "lead_id": "uuid",
  "customer_name": "João Silva",
  "customer_email": "[email protected]",
  "customer_phone": "+5511999999999"
}

Headers Enviados

Content-Type: application/json
User-Agent: Leavo-Webhook/1.0
X-Webhook-Event: lead_created
X-Webhook-ID: uuid-do-webhook

Tratamento no Servidor de Destino

Seu servidor deve responder com status 2xx dentro de 30 segundos, caso contrário a requisição será considerada falha.

Exemplo de Servidor (Node.js)

app.post('/api/webhook', (req, res) => {
  const { event, lead_id, customer_name } = req.body;

  // Processe o evento de forma assíncrona
  processWebhook(req.body).catch(console.error);

  // Responda rapidamente
  res.status(200).json({ received: true });
});

async function processWebhook(data) {
  switch (data.event) {
    case 'lead_created':
      await syncWithCRM(data);
      break;
    case 'status_changed':
      await notifyTeam(data);
      break;
  }
}

Retry Policy

Se o webhook falhar, o sistema tentará novamente:
  • 3 tentativas com backoff exponencial
  • Intervalos: 1 min, 5 min, 30 min
  • Após 3 falhas, o webhook é marcado como erro
Monitore as falhas de webhook no dashboard. Muitas falhas podem indicar problemas com o servidor de destino.