Skip to main content

Webhooks

Configure webhooks para receber eventos em tempo real. Cada webhook cadastrado em /u/webhooks responde por um único tipo de evento (ou variantes agregadas).

Configuração

1

Acesse Webhooks

No painel, vá em /u/webhooks e clique em Adicionar webhook.
2

Escolha o tipo de evento

Selecione qual evento deve ser enviado — ver tabela abaixo.
3

Informe a URL de destino

URL HTTPS pública que receberá os eventos via POST.

Segurança

Implemente estas proteções no seu servidor:
  • Validação HMAC: valide o header X-Signature com o client_token da instância.
  • Validação de timestamp: rejeite requisições com X-Timestamp antigo (> 5 minutos).
  • Idempotência: use X-Idempotency-Key para deduplicar entregas.
  • HTTPS: URLs http:// e IPs privados são bloqueados.

Eventos Disponíveis

Quando contact_updated dispara

Apenas quando um dos seguintes campos muda: name, email, company, job_title, notes, custom_labels, utm_source, utm_medium, utm_campaign, is_favorite, is_archived, is_blocked. Mudanças em last_message_at, photo_url, unread_count e outros campos operacionais não disparam webhook.

Payload de mensagem

Payload de contato

Mesma estrutura da API /contacts-api/create, acrescida de metadados do evento:
Em contact_updated, changedKeys traz um array com os campos que mudaram, ex.: ["email", "custom_labels"].
customLabels é sempre um objeto JSON ({"chave": "valor"}), igual ao aceito no endpoint /contacts-api/create. Consuma direto em Zapier/Make/n8n via payload.customLabels.contratante.

Headers enviados

Retry Policy

Se seu servidor retornar erro (status ≥ 500) ou timeout (> 30s), o sistema tenta reenviar até 3 vezes com backoff exponencial (1s → 2s → 4s). Respostas 4xx não são reenviadas.
Retorne 200 o mais rápido possível. Processe a lógica de negócio de forma assíncrona para evitar timeouts.