Pular para o conteúdo principal

Documentation Index

Fetch the complete documentation index at: https://docs.leavo.ai/llms.txt

Use this file to discover all available pages before exploring further.

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": "joao@exemplo.com",
  "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.