Saltar al contenido principal
Twenty envía un HTTP POST a tu URL cada vez que se crea, actualiza o elimina un registro. Todos los tipos de objetos están cubiertos, incluidos los objetos personalizados.

Crear un webhook

  1. Ve a Configuración → APIs y Webhooks → Webhooks
  2. Haz clic en + Crear webhook
  3. Introduce la URL de tu webhook (debe ser públicamente accesible)
  4. Haz clic en Guardar
El webhook se activa de inmediato y comienza a enviar notificaciones.

Gestionar webhooks

Editar: Haz clic en el webhook → Actualizar la URL → Guardar Eliminar: Haz clic en el webhook → Eliminar → Confirmar

Eventos

Twenty envía webhooks para estos tipos de eventos:
EventoEjemplo
Se crea un registroperson.created, company.created, note.created
Se actualiza un registroperson.updated, company.updated, opportunity.updated
Se elimina un registroperson.deleted, company.deleted
Todos los tipos de eventos se envían a la URL de tu webhook. Es posible que se agregue el filtrado de eventos en versiones futuras.

Formato de la carga útil

Cada webhook envía una solicitud HTTP POST con un cuerpo JSON:
{
  "event": "person.created",
  "data": {
    "id": "abc12345",
    "firstName": "Alice",
    "lastName": "Doe",
    "email": "alice@example.com",
    "createdAt": "2025-02-10T15:30:45Z",
    "createdBy": "user_123"
  },
  "timestamp": "2025-02-10T15:30:50Z"
}
CampoDescripción
eventQué ocurrió (p. ej., person.created)
dataEl registro completo que se creó/actualizó/eliminó
timestampCuándo ocurrió el evento (UTC)
Responde con un estado HTTP 2xx (200-299) para confirmar la recepción. Las respuestas que no sean 2xx se registran como errores de entrega.

Validación de webhook

Twenty firma cada solicitud de webhook por seguridad. Valida las firmas para garantizar que las solicitudes sean auténticas.

Encabezados

EncabezadoDescripción
X-Twenty-Webhook-SignatureFirma HMAC SHA256
X-Twenty-Webhook-TimestampMarca de tiempo de la solicitud

Pasos de validación

  1. Obtén la marca de tiempo de X-Twenty-Webhook-Timestamp
  2. Crea la cadena: {timestamp}:{JSON payload}
  3. Calcula HMAC SHA256 usando tu secreto de webhook
  4. Compara con X-Twenty-Webhook-Signature

Ejemplo (Node.js)

const crypto = require("crypto");

const timestamp = req.headers["x-twenty-webhook-timestamp"];
const payload = JSON.stringify(req.body);
const secret = "your-webhook-secret";

const stringToSign = `${timestamp}:${payload}`;
const expectedSignature = crypto
  .createHmac("sha256", secret)
  .update(stringToSign)
  .digest("hex");

const receivedSignature = req.headers["x-twenty-webhook-signature"];
const isValid = crypto.timingSafeEqual(
  Buffer.from(expectedSignature, "hex"),
  Buffer.from(receivedSignature, "hex")
);

Webhooks vs flujos de trabajo

MétodoDirecciónCaso de uso
WebhooksSALIDANotificar automáticamente a los sistemas externos cualquier cambio en un registro
Flujo de trabajo + solicitud HTTPSALIDAEnviar datos con lógica personalizada (filtros, transformaciones)
Disparador de webhook de flujo de trabajoENTRADARecibir datos en Twenty desde sistemas externos
Para recibir datos externos, consulta Configurar un disparador de webhook.