Saltar al contenido principal

Webhooks

Recibe notificaciones automáticas cuando ocurren eventos en tu tienda.

Configuración

Configura tu endpoint de webhooks en el Dashboard:

  1. Ve a ConfiguraciónWebhooks
  2. Añade tu URL de endpoint
  3. Selecciona los eventos que quieres recibir
  4. Guarda la configuración

Formato de petición

POST /tu-endpoint-webhook
Content-Type: application/json
X-Neuroon-Signature: sha256=abc123...
X-Neuroon-Event: search.completed
{
"id": "evt_123abc",
"type": "search.completed",
"created": "2024-01-15T10:30:00Z",
"data": {
// Datos específicos del evento
}
}

Verificar firma

Valida que los webhooks provienen de Neuroon:

const crypto = require('crypto');

function verifyWebhook(payload, signature, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');

return `sha256=${expected}` === signature;
}

// En tu endpoint
app.post('/webhook', (req, res) => {
const signature = req.headers['x-neuroon-signature'];
const isValid = verifyWebhook(
JSON.stringify(req.body),
signature,
process.env.WEBHOOK_SECRET
);

if (!isValid) {
return res.status(401).send('Invalid signature');
}

// Procesar evento
res.status(200).send('OK');
});

Reintentos

Si tu endpoint no responde con 2xx:

IntentoEspera
1Inmediato
25 minutos
330 minutos
42 horas
524 horas

Después de 5 intentos fallidos, el webhook se desactiva.

Buenas prácticas

  1. Responde rápido - Devuelve 200 OK inmediatamente
  2. Procesa async - Usa colas para procesamiento pesado
  3. Idempotencia - El mismo evento puede llegar múltiples veces
  4. Logging - Guarda logs para debugging
app.post('/webhook', async (req, res) => {
// Responder inmediatamente
res.status(200).send('OK');

// Procesar en background
queue.add('process-webhook', req.body);
});