> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pruff.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Evento de prueba

> Envía un evento de prueba a tu endpoint y aprende a reconocerlo para ignorarlo.

El evento de prueba te permite confirmar que tu endpoint recibe y valida las entregas de Pruff, sin esperar a que ocurra un evento real.

## Cómo enviarlo

En **Configuración → Otros → Webhooks**, elige **Probar** en la suscripción, o **Enviar evento de prueba** en el diálogo del secreto que aparece al crearla o regenerarla. Necesitas el permiso `webhooks_manage` y que la suscripción esté activa.

Pruff envía la prueba con uno de los eventos activos de la suscripción: el primero en orden alfabético por nombre. El resultado queda en el [registro de entregas](https://docs.pruff.com/webhooks/entregas.md#registro-de-entregas), marcado como prueba.

## Cómo reconocerlo

El evento de prueba es una entrega normal: va a la URL de tu suscripción, con los mismos headers, la misma firma y el mismo secreto que un evento real (ver [Headers y firma](https://docs.pruff.com/webhooks/seguridad.md)). Se distingue por dos cosas:

* **El header `X-Webhook-Test: true`.** Solo lo llevan las entregas de prueba.
* **El body.** Es un objeto con solo dos campos:

```json theme={null}
{
  "test": true,
  "eventName": "invoice.newInvoices"
}
```

| Campo | Descripción |
| - | - |
| `test` | Siempre `true`. |
| `eventName` | Nombre del evento con el que se envió la prueba. Coincide con el header `X-Webhook-Event`. |

El body de la prueba no tiene la forma del evento que nombra, así que no lo proceses como uno real. Revisa `X-Webhook-Test` antes de interpretar el body y, cuando valga `true`, responde `2xx` e ignora la entrega.

```javascript Node.js (Express) theme={null}
app.post(
  '/pruff/webhook',
  express.raw({ type: 'application/json' }),
  (req, res) => {
    if (!isValidSignature(req.body, req.get('X-Webhook-Signature'))) {
      return res.sendStatus(401);
    }
    if (req.get('X-Webhook-Test') === 'true') {
      return res.sendStatus(204);
    }
    // Procesa el evento real.
    res.sendStatus(204);
  },
);
```

```python Python (Flask) theme={null}
@app.post("/pruff/webhook")
def webhook():
    if not is_valid_signature(
        request.get_data(), request.headers.get("X-Webhook-Signature", "")
    ):
        abort(401)
    if request.headers.get("X-Webhook-Test") == "true":
        return "", 204
    # Procesa el evento real.
    return "", 204
```

Las funciones `isValidSignature` e `is_valid_signature` son las de [Headers y firma](https://docs.pruff.com/webhooks/seguridad.md#cómo-validar-una-entrega).

## Cómo se entrega

La prueba sigue las mismas reglas que cualquier entrega: espera una respuesta `2xx` en menos de 5 segundos y se reintenta, hasta 4 intentos, si tu endpoint responde `408`, `429`, `5xx` o no responde (ver [Entregas y reintentos](https://docs.pruff.com/webhooks/entregas.md)). Si se agotan los intentos, la prueba queda como Fallida en el registro de entregas. Cada prueba lleva su propio `X-Webhook-Event-Id`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.