Requiere
EDTOOLS_CLIENT_WEBHOOKS_ENABLED=1 además del módulo platform_integrations.Los dieciséis eventos
- Núcleo
- Vault
- Formularios
student.created·student.updatedadmission_application.created·admission_application.updatedpayment.created·payment.updatedprogram.createdcourse.created
Cada entrega
Event-Id identifica el hecho; Delivery-Id identifica el intento. Si reintentamos, el Event-Id se repite y el Delivery-Id no — desduplica por Event-Id.
La firma
Firma el cuerpo crudo, no el JSON reserializado
Firma el cuerpo crudo, no el JSON reserializado
Si tu framework parsea el body antes de que lo veas, guarda el texto original. Un
JSON.parse seguido de JSON.stringify cambia los bytes y rompe la firma.Compara en tiempo constante
Compara en tiempo constante
Un
=== sobre la firma filtra información por el tiempo de comparación. Usa timingSafeEqual o el SDK.Rechaza timestamps viejos
Rechaza timestamps viejos
La tolerancia por defecto es de 5 minutos en cualquiera de las dos direcciones. Sin esa ventana, una entrega capturada sirve para siempre.
Verificar con el SDK
Headers o un diccionario plano, y toleranceSeconds si necesitas otra ventana. Para probar tu receptor en local, signEdToolsWebhook genera firmas válidas con el mismo algoritmo.
Reintentos
Éxito es cualquier2xx antes de 10 segundos. Los 3xx, 4xx, 5xx y los timeouts quedan registrados y se reintentan desde Trigger.dev; un administrador también puede reintentar a mano desde Entregas.
