Skip to main content
Nippy envía webhooks firmados a la webhookUrl configurada en tu campaña. Son el canal principal para saber qué pasó — siempre verifica la firma antes de procesar.

Estructura del envelope

Todos los eventos comparten el mismo envelope:

Headers que recibes

Verificar la firma

Siempre verifica la firma. Si no lo haces, cualquiera puede enviarte webhooks falsos a tu endpoint.
Usa express.raw(), no express.json(). La firma se calcula sobre el body en crudo — si lo parseas antes de verificar, la verificación fallará siempre.

Eventos disponibles

spin.completed

Se dispara cuando se completa un spin (manual o automático).
Qué hacer aquí: si outcome === 'won_points' y claimRequired === false, acredita gift.pointsValue al usuario.

claim.completed

Se dispara cuando el usuario reclama un premio que requería confirmación.
Qué hacer aquí: iniciar el proceso de entrega del premio físico o digital.

spin_auto_unlocked

Se dispara cuando track() evaluó las reglas y desbloqueó un spin automático, justo antes de girar.

grant_points_awarded

Se dispara cuando una regla con action: 'grant_points' se activó y los puntos fueron acreditados directamente.
Qué hacer aquí: acredita data.pointsValue al usuario en tu sistema.

Reintentos

Si tu endpoint retorna cualquier código distinto de 2xx, Nippy reintenta la entrega automáticamente: Después del cuarto intento fallido, el webhook queda como failed. Puedes consultarlo en el log de webhooks.

Idempotencia

El campo id del envelope es único por entrega. Si recibes el mismo id dos veces (reintento de red), procésalo solo una vez guardando los IDs ya procesados en tu base de datos.