Enviar un SMS es solo la mitad del trabajo: la otra mitad es saber qué pasó con él. Esa información llega en el reporte de entrega (DLR), que indica el estado final de cada mensaje con códigos estandarizados como DELIVRD o UNDELIV. Entenderlos es la diferencia entre adivinar y operar con datos. Conocer los estados de entrega de un SMS le permite actuar antes de que el cliente reclame.
De dónde vienen los estados

El protocolo SMPP define un conjunto de estados para cada mensaje, y por convención los reportes de entrega incluyen un texto con este formato, que se ha vuelto el estándar de facto de la industria:
id:a1b2c3d4 sub:001 dlvrd:001 submit date:2611091432 done date:2611091432 stat:DELIVRD err:000
Las plataformas que ofrecen API REST traducen esos mismos estados a sus webhooks, por lo que el significado es el mismo sin importar cómo se integre. Lo explicamos en qué es un webhook y cómo recibir DLR.
Qué significa cada estado
| Estado | Significado | Qué hacer |
|---|---|---|
DELIVRD | Entregado al teléfono | Nada: registre la entrega y el tiempo que tomó |
ENROUTE / ACCEPTD | En tránsito o aceptado, sin confirmación final | Esperar el estado final; si no llega, no asumir entrega |
UNDELIV | No entregable de forma permanente: número inexistente, inactivo o rechazado por la red | No reintentar el mismo número; marcarlo para revisión o depuración |
EXPIRED | Venció el periodo de validez sin poder entregarse, por ejemplo con el teléfono apagado o sin señal | Para mensajes críticos, reenviar más tarde o usar un canal alternativo |
REJECTD | Rechazado antes de intentar la entrega | Revisar contenido, remitente o restricciones del destino |
DELETED | Eliminado antes de entregarse | Revisar con el proveedor |
UNKNOWN | No se pudo determinar el estado | Tratarlo como no confirmado |
Además del estado, el campo err suele traer un código de error específico de la red o de la plataforma, útil para distinguir, por ejemplo, un número inexistente de una línea suspendida.
Errores comunes al interpretar los estados
- Confundir “enviado” con “entregado”. Que la API acepte el mensaje no significa que llegó; solo el DLR lo confirma.
- Reintentar números con UNDELIV. Solo genera costo; esos números deben depurarse.
- Ignorar los EXPIRED. En OTP y alertas, un mensaje expirado es un usuario que no recibió algo importante.
- No medir tiempos. La diferencia entre la hora de envío y la de entrega revela demoras por destino u horario.
Cómo usar los estados en su operación
- Calcule la tasa de entrega por tipo de mensaje y por destino.
- Active un canal alternativo cuando un OTP termine en EXPIRED o UNDELIV.
- Depure su base periódicamente con los números en UNDELIV, más aún con el registro de líneas con CURP en curso.
- Conserve los reportes como evidencia para atención a clientes y auditoría.
Vea también por qué no se entrega un SMS. En Grupo Tecnophone los reportes de entrega están disponibles en tiempo real por webhook en la API SMS y como deliver_sm en la conexión SMPP, sin costo adicional.
Fuentes
- “SMPP Delivery Receipt Format”, smpp.org. Ver fuente
- “Short Message Peer to Peer Protocol Specification v3.4 (Issue 1.2)”, SMPP Developers Forum. Ver fuente


