Webhooks
Un webhook envía una solicitud HTTP firmada a tu URL cuando ocurre un evento en Netzo.
Tipos de evento
El tipo de evento es <tabla>.<evento>:
| Evento | Se envía cuando | Ejemplo |
|---|---|---|
| Una acción | se ejecuta la acción | salesorders.approve, salesquotes.send |
| Un evento declarado | el registro llega solo a un estado | financesinvoices.overdue |
Cada tabla en Dominios lista sus acciones y eventos. Un agente lee el catálogo de eventos de las tablas que puede ver en el recurso MCP netzo://events/catalog; un programa, en la sección webhooks de OpenAPI.
Crea un webhook
En Administración → Integraciones → Webhooks, elige la tabla, el evento, una condición opcional y tu URL. Copia el secreto de firma (whsec_…). Los webhooks también son registros, así que la API, la CLI y MCP pueden crearlos.
Contenido
El cuerpo es:
{
"type": "salesorders.approve",
"timestamp": "2026-11-10T14:03:12.000Z",
"data": {
"id": "evt_…",
"tableUid": "salesorders",
"event": "approve",
"recordId": "so_…",
"dataBefore": { },
"dataAfter": { },
"diff": { },
"userId": "usr_…"
}
}Firma
Cada solicitud lleva tres encabezados:
| Encabezado | Contiene |
|---|---|
webhook-id | El id del evento, el mismo en cada reintento |
webhook-timestamp | Cuándo Netzo envió la solicitud, en segundos Unix |
webhook-signature | Un HMAC-SHA256 de la solicitud con tu secreto de firma (whsec_…) |
Rechaza una solicitud cuya hora esté a más de 5 minutos de tu reloj. Netzo sigue Standard Webhooks. Usa cualquier biblioteca de Standard Webhooks con tu secreto de firma; revisa la firma y la hora por ti:
import { Webhook } from 'standardwebhooks'
const wh = new Webhook(process.env.NETZO_WEBHOOK_SECRET)
const event = wh.verify(rawBody, headers) // falla si la firma o la hora no son válidasEntrega
| Regla | Valor |
|---|---|
| Éxito | Cualquier respuesta 2xx |
| Tiempo límite | 10 segundos |
| Reintentos | Hasta 3, cuando no hay 2xx o no hay respuesta |
data.id es el mismo en cada reintento: guárdalo y omite un evento que ya procesaste.