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

# Advertencias y códigos de riesgo de verificación de email

> Códigos de riesgo de verificación de email en Didit: correos filtrados, desechables, no entregables, lista de bloqueo y límites de OTP.

La función de Verificación de correo electrónico emite **advertencias** cada vez que se activa una señal de riesgo en el flujo OTP o en la propia dirección: una filtración de datos conocida, un proveedor desechable, un buzón que no puede recibir correo, el límite de intentos de OTP o una coincidencia con tu lista de bloqueo o con otra verificación aprobada. En esta página se enumeran todos los códigos, qué los activa y cómo configurar la respuesta del workflow.

## Descripción general

Las advertencias se etiquetan con la función `EMAIL`. Aparecen en el informe en `email_verifications[].warnings[]` y siguen la estructura estándar del [objeto de advertencia](https://docs.didit.me/es/reference/data-models.md#objeto-de-advertencia) (`feature`, `risk`, `additional_data`, `log_type`, `short_description`, `long_description`, `node_id`). Cada advertencia también se envía al registro de la sesión, de modo que aparece en la Business Console, en la sección de correo electrónico.

Algunas advertencias son disparadores de **rechazo automático obligatorio**: siempre establecen el estado de la función en `Declined` y llevan `log_type: "error"`. Las demás se asocian a una **acción configurable** (`DECLINE`, `REVIEW` o la predeterminada `NO_ACTION`) definida por nodo del flujo o por llamada a la API, por lo que un mismo código de riesgo puede hacer que se rechace un flujo y solo marcar otro. La acción configurada también determina la gravedad: `DECLINE` → `error`, `REVIEW` → `warning`, `NO_ACTION` → `information`.

## Condiciones de rechazo automático

Las siguientes advertencias siempre rechazan el paso de Verificación de correo electrónico, independientemente de la configuración:

* `EMAIL_CODE_ATTEMPTS_EXCEEDED`: el usuario agotó los intentos de OTP, que de forma predeterminada son 2 intentos de introducir un código incorrecto (`email_max_check_attempts`) o 2 envíos de OTP, es decir, el envío inicial más un reenvío (`email_max_retries`).
* `EMAIL_IN_BLOCKLIST`: la dirección está en una lista de bloqueo gestionada mediante la [API de listas](https://docs.didit.me/es/management-api/lists/overview.md), o coincidió con una verificación de correo electrónico aprobada anteriormente que se añadió a la lista de bloqueo.
* `UNDELIVERABLE_EMAIL_DETECTED`: la dirección no puede recibir correo, ya sea por una sintaxis no válida, un dominio inexistente, la falta de registros DNS (MX) o porque el correo con el OTP no se pudo entregar. El paso finaliza como `Declined` de inmediato y nunca se llega a comprobar ningún código. Excepción: cuando el propio usuario escribió la dirección (no venía precargada al crear la sesión), un envío fallido devuelve un error en línea para que pueda reintentar con otra dirección en lugar de ser rechazado.

## Riesgos configurables

Cada uno de los siguientes riesgos se asocia a un ajuste (por nodo del flujo, o por llamada al [endpoint de comprobación](https://docs.didit.me/es/standalone-apis/email-check.md) independiente) que puedes configurar como `DECLINE`, `REVIEW` o `NO_ACTION`:

| Ajuste | Código de riesgo | Comportamiento predeterminado |
| - | - | - |
| `breached_email_action` | `BREACHED_EMAIL_DETECTED` | `NO_ACTION`: muestra los detalles de la filtración con nivel `information` sin cambiar el estado. |
| `disposable_email_action` | `DISPOSABLE_EMAIL_DETECTED` | `NO_ACTION`: marca al proveedor de correo temporal con nivel `information` sin cambiar el estado. |
| `duplicated_email_action` | `DUPLICATED_EMAIL` | `NO_ACTION`: registra el duplicado con nivel `information`. Se omite cuando la dirección está en la lista de permitidos. |

La detección de duplicados solo tiene en cuenta las verificaciones de correo electrónico **aprobadas anteriormente** en la misma aplicación, agrupadas por `vendor_data`: las verificaciones que comparten el mismo `vendor_data` se tratan como un único usuario final y se excluyen. Si dejas `vendor_data` vacío, cada sesión se trata como un usuario distinto. Si la dirección está en tu lista de correos permitidos, se omite la acción de duplicado y se emite `EMAIL_IN_ALLOWLIST` en su lugar.

## Límites de intentos de verificación

La función de Verificación de correo electrónico aplica un límite estricto de intentos de OTP para evitar abusos:

* **Intentos de introducción del código**: `email_max_check_attempts`, **2** de forma predeterminada; el segundo código incorrecto (o expirado) finaliza el paso.
* **Intentos de envío**: `email_max_retries`, **2** envíos en total de forma predeterminada (el envío inicial más un reenvío); una nueva solicitud de reenvío finaliza el paso.

Superar cualquiera de los dos límites genera `EMAIL_CODE_ATTEMPTS_EXCEEDED` y rechaza automáticamente. Puedes ajustar ambos límites por nodo del flujo.

## Advertencias generadas

| Etiqueta | Gravedad | Descripción |
| - | - | - |
| `EMAIL_CODE_ATTEMPTS_EXCEEDED` | `error` | El usuario superó el límite de introducción o de envío de códigos. Se rechaza automáticamente. |
| `EMAIL_IN_BLOCKLIST` | `error` | La dirección figura en una lista de bloqueo creada mediante la [API de listas](https://docs.didit.me/es/management-api/lists/overview.md), o coincidió con una verificación aprobada incluida en la lista de bloqueo. Se rechaza automáticamente. `additional_data` incluye `blocklisted_session_id`, `blocklisted_session_number` y `api_service` (todos `null` cuando la coincidencia es solo con una lista). |
| `EMAIL_IN_ALLOWLIST` | `information` | La dirección coincidió con una lista de permitidos creada mediante la [API de listas](https://docs.didit.me/es/management-api/lists/overview.md), por lo que se omitió la acción ante correos electrónicos duplicados. |
| `BREACHED_EMAIL_DETECTED` | Según `breached_email_action` (`information` por defecto) | La dirección se encontró en una o más filtraciones de datos conocidas. El array `breaches[]` del informe incluye el servicio afectado, la fecha y los tipos de datos expuestos. |
| `DISPOSABLE_EMAIL_DETECTED` | Según `disposable_email_action` (`information` por defecto) | El dominio pertenece a un proveedor conocido de correos desechables o temporales, que suele usarse para evitar la trazabilidad. |
| `UNDELIVERABLE_EMAIL_DETECTED` | `error` | La dirección no puede recibir correo (sintaxis no válida, dominio inexistente, registros MX ausentes o entrega fallida). Se rechaza automáticamente. |
| `DUPLICATED_EMAIL` | Según `duplicated_email_action` (`information` por defecto) | La dirección coincide con una verificación de correo electrónico aprobada anteriormente que pertenece a otro usuario final (agrupado por `vendor_data`). `additional_data` incluye `duplicated_session_id`, `duplicated_session_number` y `api_service`. |

Por intento se genera como máximo una de las advertencias `EMAIL_IN_BLOCKLIST`, `DUPLICATED_EMAIL` y `EMAIL_IN_ALLOWLIST`: la lista de bloqueo tiene prioridad sobre el duplicado, y el duplicado sobre la lista de permitidos.

## Coincidencias entre sesiones

Cuando se detecta una dirección en verificaciones de correo electrónico aprobadas anteriormente o en tu lista de bloqueo, esas coincidencias también aparecen en `email_verifications[].matches[]` (con un máximo de 5 entradas). Cada coincidencia incluye `session_id`, `session_number`, `vendor_data`, `verification_date`, `email`, `status`, `is_blocklisted`, `api_service` y un `source` con valor `session` (otra verificación aprobada) o `list_entry` (una entrada de la lista de bloqueo). Si la dirección actual está en tu lista de permitidos de correo electrónico, Didit conserva la evidencia de la coincidencia, pero emite `EMAIL_IN_ALLOWLIST` en lugar de aplicar la acción de correo electrónico duplicado. Consulta el [informe de Verificación de correo electrónico](https://docs.didit.me/es/core-technology/email-verification/report-email-verification.md#coincidencias-entre-sesiones) para ver el esquema completo de las coincidencias.

## Ejemplo

```json theme={null}
{
  "warnings": [
    {
      "feature": "EMAIL",
      "risk": "EMAIL_IN_BLOCKLIST",
      "additional_data": {
        "blocklisted_session_id": null,
        "blocklisted_session_number": null,
        "api_service": null
      },
      "log_type": "error",
      "short_description": "Email in blocklist",
      "long_description": "The system detected that the email is in the blocklist, which is not allowed.",
      "node_id": "feature_email_1"
    },
    {
      "feature": "EMAIL",
      "risk": "DISPOSABLE_EMAIL_DETECTED",
      "additional_data": null,
      "log_type": "information",
      "short_description": "Disposable email detected",
      "long_description": "The system detected that the email is disposable, which is not allowed.",
      "node_id": "feature_email_1"
    }
  ]
}
```

## Tipos de advertencia

A cada riesgo se le asigna una gravedad según la configuración de tu aplicación. Las gravedades se dividen en tres categorías:

## Contenido relacionado

* [Visión general de Verificación de correo electrónico](https://docs.didit.me/es/core-technology/email-verification/overview.md): funcionamiento de la función y precios.
* [Informe de Verificación de correo electrónico](https://docs.didit.me/es/core-technology/email-verification/report-email-verification.md): estructura completa de la respuesta, incluidos `lifecycle[]` y `matches[]`.
* [Modelos de datos: verificación de correo electrónico](https://docs.didit.me/es/reference/data-models.md#verificación-de-correo-electrónico): esquema canónico campo por campo.
* [API de gestión: listas](https://docs.didit.me/es/management-api/lists/overview.md): gestiona la lista de bloqueo de correos electrónicos que usa `EMAIL_IN_BLOCKLIST`.


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