Como usar Webhooks?

Última atualização em May 21, 2026

Os Webhooks do Wootdesk permitem que sistemas externos recebam eventos em tempo real sempre que algo acontece dentro da plataforma.

Eles funcionam como callbacks HTTP automáticos: quando um evento ocorre no Wootdesk, uma requisição POST é enviada para a URL configurada.

Você pode usar webhooks para:

  • Integrações com CRMs

  • Automação de processos

  • Integração com IA

  • Monitoramento em tempo real

  • Disparo de workflows

  • Sincronização de dados

  • Notificações externas


Como adicionar um Webhook?

Passo 1

Acesse:

Configurações → Integrações → Webhooks

Depois clique em:

Configure


Passo 2

Clique em:

Adicionar novo webhook

Uma janela será aberta para configuração.

Você deverá informar:

  • URL do endpoint que receberá os eventos

  • Eventos que deseja escutar

Isso permite receber apenas eventos relevantes para sua aplicação.


Como funciona?

Sempre que um evento ocorrer, o Wootdesk enviará uma requisição HTTP POST para sua URL.


Exemplo de payload enviado pelo Wootdesk

{
  "event": "message_created",
  "id": "1",
  "content": "Olá",
  "created_at": "2020-03-03 13:05:57 UTC",
  "message_type": "incoming",
  "content_type": "text",
  "content_attributes": {},
  "source_id": "",
  "sender": {
    "id": "1",
    "name": "Agente",
    "email": "[email protected]"
  },
  "contact": {
    "id": "1",
    "name": "Cliente"
  },
  "conversation": {
    "display_id": "1"
  },
  "account": {
    "id": "1",
    "name": "Wootdesk"
  }
}

Principais eventos suportados

conversation_created

Disparado quando uma nova conversa é criada.


conversation_updated

Disparado quando algum atributo da conversa é alterado.

Exemplo:

  • status

  • prioridade

  • atribuição

  • labels


conversation_status_changed

Disparado quando o status muda.

Exemplo:

  • open

  • pending

  • resolved

  • snoozed


message_created

Disparado quando uma nova mensagem é enviada.

Muito utilizado para:

  • bots

  • IA

  • integrações externas


message_updated

Disparado quando uma mensagem é editada.


webwidget_triggered

Disparado quando o visitante abre o widget do chat.

Muito útil para:

  • tracking

  • analytics

  • automações de engajamento


conversation_typing_on

Disparado quando um agente começa a digitar.


conversation_typing_off

Disparado quando o agente para de digitar.


Objetos disponíveis nos payloads

Os eventos podem incluir diversos objetos.


Account

Informações da conta.

{
  "id": "1",
  "name": "Minha Empresa"
}

Inbox

Informações da inbox.

{
  "id": "1",
  "name": "Suporte"
}

Contact

Informações do cliente.

{
  "id": "1",
  "name": "João"
}

User

Informações do agente/admin.

{
  "id": "1",
  "name": "Maria"
}

Conversation

Dados completos da conversa.

Inclui:

  • status

  • mensagens

  • agente

  • cliente

  • timestamps

  • navegador

  • origem

  • canal


Message

Dados completos da mensagem.

Inclui:

  • conteúdo

  • remetente

  • tipo

  • anexos

  • atributos


Verificação de segurança dos Webhooks

O Wootdesk assina todas as requisições utilizando HMAC SHA256.

Isso garante que:

  • o payload veio realmente do Wootdesk

  • ninguém alterou os dados no caminho


Headers enviados pelo Wootdesk

X-Wootdesk-Signature
X-Wootdesk-Timestamp
X-Wootdesk-Delivery

Como a assinatura funciona

A assinatura é gerada usando:

sha256=HMAC-SHA256(secret, "{timestamp}.{raw_body}")

Onde:

  • secret → segredo do webhook

  • timestamp → timestamp enviado no header

  • raw_body → body original da requisição


Processo de verificação

1. Ler os headers

Pegue:

  • assinatura

  • timestamp


2. Ler o body bruto

⚠️ Importante:
Não parseie/reformate o JSON antes da validação.

Use o body bruto exatamente como recebido.


3. Gerar assinatura localmente

Utilize o mesmo algoritmo HMAC SHA256.


4. Comparar assinaturas

Faça comparação segura (constant-time compare).


Exemplo em Node.js

const crypto = require("crypto");

function verifySignature(rawBody, timestamp, receivedSignature, secret) {
  const message = `${timestamp}.${rawBody}`;

  const expected =
    "sha256=" +
    crypto
      .createHmac("sha256", secret)
      .update(message)
      .digest("hex");

  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(receivedSignature)
  );
}

Exemplo em Python

import hmac
import hashlib

def verify_signature(raw_body, timestamp, received_signature, secret):
    message = f"{timestamp}.".encode() + raw_body

    expected = "sha256=" + hmac.new(
        secret.encode(),
        message,
        hashlib.sha256
    ).hexdigest()

    return hmac.compare_digest(expected, received_signature)

Boas práticas

Sempre valide a assinatura

Nunca confie diretamente nos payloads recebidos.


Rejeite timestamps antigos

Uma boa prática é rejeitar requisições com mais de:

  • 5 minutos

Isso evita replay attacks.


Use HTTPS

Sempre utilize endpoints HTTPS.


Responda rapidamente

O webhook deve responder rápido:

  • 200 OK

Processamentos pesados devem ir para filas/background jobs.


Casos de uso comuns

IA / Agent Bots

Enviar mensagens para:

  • OpenAI

  • Claude

  • Gemini


CRM

Criar leads automaticamente.


ERP

Sincronizar pedidos e clientes.


Slack / Discord

Notificar equipes.


Automação

Integrar com:

  • n8n

  • Make

  • Zapier

  • Pipedream


Diferença entre Webhooks e WebSocket

Webhooks

  • Comunicação servidor → servidor

  • Baseado em eventos HTTP

  • Melhor para integrações backend


WebSocket

  • Conexão em tempo real contínua

  • Atualizações instantâneas

  • Melhor para dashboards/apps em tempo real


Dica estratégica

Uma arquitetura muito poderosa no Wootdesk é:

  • Webhooks

  • Automations

  • Agent Bots

  • APIs

  • WebSockets

Combinados.

Isso permite criar:

  • suporte totalmente automatizado

  • IA híbrida

  • atendimento omnichannel inteligente

  • sincronização em tempo real

  • workflows enterprise avançados