Webhooks
Seja notificado no momento em que um registro é criado, atualizado ou excluído.
Webhooks enviam uma requisição HTTP para o seu sistema sempre que os dados mudam no Solid, então você nunca precisa ficar consultando a API.
Criar um webhook
- Acesse Configurações → APIs e Webhooks → Webhooks.
- Clique em + Criar webhook e informe uma URL HTTPS pública.
- Clique em Salvar. Os eventos começam a chegar imediatamente.
Eventos
| Evento | Exemplos |
|---|---|
| Registro criado | person.created, company.created |
| Registro atualizado | opportunity.updated |
| Registro excluído | company.deleted |
Payload
Cada evento é um POST com corpo JSON:
{
"event": "person.created",
"data": {
"id": "abc12345",
"name": { "firstName": "Ana", "lastName": "Souza" },
"createdAt": "2026-09-30T15:30:45Z"
},
"timestamp": "2026-09-30T15:30:50Z"
}Responda com qualquer status 2xx para confirmar a entrega. Outras respostas são registradas como falhas.
Verificar a assinatura
Toda requisição é assinada para que você possa confirmar que ela veio do Solid. Os headers mantêm os nomes do motor open source sobre o qual o Solid é construído:
| Header | Conteúdo |
|---|---|
X-Twenty-Webhook-Signature | Assinatura HMAC SHA-256 |
X-Twenty-Webhook-Timestamp | Quando a requisição foi assinada |
import crypto from 'node:crypto';
export function isFromSolid(req, secret) {
const timestamp = req.headers['x-twenty-webhook-timestamp'];
const expected = crypto
.createHmac('sha256', secret)
.update(`${timestamp}:${JSON.stringify(req.body)}`)
.digest('hex');
return expected === req.headers['x-twenty-webhook-signature'];
}Rejeite requisições cuja assinatura não corresponda e ignore timestamps com mais de alguns minutos para evitar ataques de repetição.