Skip to main content
Los webhooks envían una solicitud POST a una URL HTTPS de tu sistema cuando ocurre un evento en La Pyme. Podés configurarlos desde la API pública o desde Configuración > Integraciones > API > Webhooks.

Configurar por API

Usá webhooks:read para descubrir eventos y leer endpoints. Para crear o cambiar un endpoint necesitás webhooks:write, Idempotency-Key y los scopes de lectura de todos los eventos habilitados. Por ejemplo, order.* requiere orders:read y sale.* requiere sales:read.
La creación devuelve signing_secret una vez. Guardalo en un secret manager; las lecturas, actualizaciones y acciones nunca lo incluyen. GET /api/v1/webhook-event-types devuelve el catálogo autoritativo de eventos, versiones y scopes. Los endpoints creados con una API key pertenecen a la organización. Los creados con OAuth delegado pertenecen a ese grant: otra app no puede verlos y la revocación deshabilita el endpoint y cancela entregas todavía no enviadas.

Ciclo de vida

  • PATCH /api/v1/webhook-endpoints/{id} cambia label, url, enabled_events o api_version; status es de solo lectura.
  • POST .../{id}/pause frena eventos normales sin descartar la cola.
  • POST .../{id}/resume revalida los scopes de los eventos y reanuda la entrega.
  • POST .../{id}/disable es terminal y cancela trabajo no enviado.
  • POST .../{id}/rotate-secret invalida inmediatamente el secreto anterior.
  • POST .../{id}/test crea una entrega sintética durable incluso si el endpoint está pausado.
Todas las mutaciones requieren Idempotency-Key. Repetir exactamente el request devuelve el mismo endpoint, secreto o test; reutilizar la clave con otro request devuelve 409 IDEMPOTENCY_CONFLICT. Para rotar sin perder eventos: pausá el endpoint, rotá el secreto, actualizá el receptor, enviá un test y reanudá.

Eventos disponibles

V1 incluye estos eventos:
order.* usa el modelo actual de pedidos de comercio.
Las notas de crédito se envían como sale.created con document_kind: "credit_note" en el objeto.

Payload

Todos los eventos usan este envelope:
Usá id para deduplicar. La entrega es al menos una vez, por lo que tu endpoint puede recibir el mismo evento más de una vez.

Headers

Cada request incluye:

Verificar firma

La firma usa HMAC SHA-256 sobre:
El header tiene formato:
Ejemplo en TypeScript:
Guardá el secreto cuando se muestra. Si lo perdés, rotalo desde la API o la pantalla de webhooks.

Payload de prueba

POST /api/v1/webhook-endpoints/{id}/test usa el mismo sender, firma y política de reintentos que un evento normal, pero no contiene datos comerciales:

Respuestas y reintentos

La Pyme considera exitosa cualquier respuesta 2xx. Si tu endpoint responde fuera de 2xx, corta por timeout o falla la conexión, La Pyme reintenta con backoff. Después de varios intentos fallidos, la entrega queda como fallo final y aparece en el historial del webhook. Tu endpoint debería:
  1. Responder rápido con 2xx después de persistir el evento.
  2. Procesar trabajos lentos en segundo plano.
  3. Deduplicar por id.
  4. Verificar la firma antes de confiar en el payload.