--- title: Prevención de fraude — Referencia del veredicto --- # Referencia del veredicto Cada veredicto de Prevención de fraude — ya se entregue a tu callback `onVerdict` en el [Web SDK](./web-sdk) o se extraiga de la [API de datos](./data-api) — es el mismo objeto `BotVerdict`. Esta página documenta cada campo y cómo actuar sobre él. ```json { "is_bot": false, "score": 18, "level": "low", "action": "record_only", "consistency": { "ok": true }, "degraded": false } ``` ## Campos | Campo | Tipo | Descripción | | --- | --- | --- | | `is_bot` | boolean | El veredicto principal. `true` = la visita se juzga como tráfico automatizado o inválido; `false` = parece una persona real. Es el campo sobre el que ramifican la mayoría de las integraciones. | | `score` | number (0–100) | Cuán sospechosa es la visita. **Más alto significa más sospechoso.** Úsalo para definir tus propios umbrales — p. ej. excluir visitas por encima de un corte que elijas. El valor exacto lo produce nuestro modelo de riesgo y no está pensado para someterse a ingeniería inversa. | | `level` | enum | Banda aproximada de `score`: `low`, `medium`, `high`, `critical`. Conveniente cuando prefieres categorías en lugar de un número en bruto. | | `action` | enum | Nuestro **manejo recomendado** para la visita: `record_only`, `challenge` o `flag`. Ver más abajo. | | `consistency` | object | Una conclusión de consistencia entre señales. Lee `consistency.ok` (boolean): `true` = las señales de la visita encajan como se espera; `false` = algo no cuadró y la visita merece un escrutinio adicional. El desglose interno tras esta conclusión no se expone. | | `degraded` | boolean | `true` cuando el veredicto no pudo computarse por completo (servicio inalcanzable, error, etc.) y se devolvió un valor de reserva conservador. Trata los veredictos degradados como "desconocidos", no como "limpios". | ## `action` — qué hacer `action` es nuestra recomendación; tú conservas el control de la decisión final. | `action` | Significado | Qué hacer | | --- | --- | --- | | `record_only` | La visita parece normal. | Procede como de costumbre. Solo registra el veredicto para informes y conciliación. | | `flag` | La visita es sospechosa pero no concluyentemente mala. | Sigue sirviendo la página, pero marca la visita como de baja calidad — exclúyela de tus métricas, sepárala de los flujos posteriores y pondérala en tus propias decisiones (p. ej. atribución de conversiones o cuánto confías en la visita). | | `challenge` | La visita es de alto riesgo. | Pide una verificación adicional antes de tratar al visitante como humano. Con `escalate: true` del Web SDK esto se gestiona por ti (consulta [Escalado](./web-sdk#escalado)); de lo contrario, aplica tu propio filtro. | ## Acción de manejo configurable Lo que `action` reporta para una visita de **alto riesgo** es **configuración por aplicación**, definida en el panel bajo los detalles de tu aplicación. El veredicto es **autoritativo en el servidor**: `action` solo pasa a ser `challenge` o `flag` cuando la visita alcanza la banda de alto riesgo **y** tu aplicación está configurada con la acción correspondiente. Por debajo de esa banda el veredicto permanece como `record_only`. | Ajuste | `action` devuelto en alto riesgo | Significado | | --- | --- | --- | | `record_only` (por defecto) | `record_only` | Solo registrar. El veredicto se registra para informes y conciliación; no se le pide nada al visitante. | | `challenge` | `challenge` | Dispara un CAPTCHA de reverificación. El Web SDK muestra un challenge (el estilo lo controla el `challengeConfig` del SDK). | | `flag` | `flag` | Marca la visita. El veredicto lleva `flag`; tu integración decide cómo actuar sobre él (bloquear / segmentar / gestionar). | Como la decisión se toma del lado del servidor, tu código permanece simple: lee `verdict.action` en `onVerdict` y actúa sobre él — procede, bloquea o deja que el SDK muestre un challenge. No necesitas volver a derivar el riesgo por tu cuenta. ## `level` vs `score` `level` es solo una agrupación de `score` en bandas, provista por conveniencia: | `level` | Úsalo cuando | | --- | --- | | `low` | Trátalo como tráfico limpio. | | `medium` | En el límite — está bien registrarlo, considera excluirlo de embudos de alto valor. | | `high` | Fuertemente sospechoso — márcalo y exclúyelo. | | `critical` | Casi con certeza inválido — márcalo/exclúyelo e, idealmente, escálalo. | ::: tip Elige el campo que encaje con tu pipeline - Filtro simple sí/no → ramifica sobre **`is_bot`**. - Guiado por recomendación → ramifica sobre **`action`**. - Umbrales personalizados → ramifica sobre **`score`** (o **`level`** para categorías). ::: ## Manejo de veredictos degradados Cuando `degraded` es `true`, el veredicto no se computó por completo. El valor de reserva es deliberadamente conservador (`is_bot: false`, `action: record_only`) para que los usuarios reales nunca se bloqueen. Para informes, trátalos como **desconocidos** en lugar de contarlos como tráfico confirmado-limpio. ## Próximos pasos - [Web SDK](./web-sdk) — recibe veredictos en tu página - [API de datos](./data-api) — extrae veredictos y estadísticas del lado del servidor