Cada envío produce un acuse de recibo del operador. Bird convierte esos acuses en métricas de entrega, fallo y latencia, desglosadas por país, operador y remitente, en el dashboard y a través de una API de estadísticas que puedes consultar desde tu propio código.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const code = generateOtp();
const { data, error } = await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your Bird verification code is ${code}. Reply STOP to opt out.`,
}).safe();
if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."Today at 2:14 PM
La cara de reporting de la misma API.
Nada nuevo que instrumentar.
La analítica es la cara de reporting de la API de SMS de Bird. Ya envías a través de ella y ya recibes un webhook de entrega en cada cambio de estado; la analítica es Bird llevando la cuenta por ti, para que puedas preguntar cómo se entregó una campaña sin tener que montar primero un almacén que guarde los eventos.
Lo que te dice un acuse de recibo.
Medido desde el operador, no inferido.
- 01
Tasa de entrega.
La proporción de envíos que el operador confirmó como entregados, frente a lo que se envió. Síguela por país y por remitente, no solo como un único número global que oculta la ruta que va perdiendo mensajes en silencio.
- 02
Motivos de fallo por operador.
Los envíos fallidos llevan el código de motivo del operador, agrupados por operador de destino (MCC/MNC). Un pico suele ser un operador rechazando un ID de remitente, lo cual se arregla con un registro, no es una caída de la plataforma.
- 03
Segmentos y coste.
Cada mensaje informa de su codificación y recuento de segmentos, así que el volumen se agrega en los segmentos que realmente se te facturaron. Un envío que pasó a Unicode y duplicó sus segmentos aparece aquí, no en la factura.
- 04
Latencia hasta la entrega.
El tiempo desde el envío hasta el acuse de recibo, como distribución en lugar de como media. A nivel global, alrededor del 95 % de los mensajes se confirman en menos de 2,5 segundos; la cola es donde una ruta degradada se delata.
Consulta los números desde tu propio código.
La API de estadísticas acepta un rango temporal y un groupBy, y devuelve los recuentos agregados. Agrupa por país y operador para encontrar la ruta que rinde por debajo de lo esperado, por remitente para ver en cuál de tus IDs confía un operador. La misma agregación alimenta los gráficos del dashboard, así que un número del que haces captura coincide con un número que puedes extraer de forma programada.
const { data, error } = await bird.sms.stats
.query({
from: "2026-06-01",
to: "2026-06-26",
groupBy: ["country", "carrier"],
metrics: ["sent", "delivered", "failed", "p95_latency_ms"],
})
.safe();
if (error) throw error;
console.log(data.rows[0]);
// → {
// country: "BR",
// carrier: "Vivo", // MCC/MNC 724/06
// sent: 48213,
// delivered: 47190,
// failed: 1023,
// p95_latency_ms: 2310,
// }Extrae la línea temporal de un mensaje.
Los agregados responden a cómo le fue a una campaña; un ticket de soporte pregunta por un SMS concreto. Pasa un único ID de mensaje al endpoint de eventos y obtienes toda su vida en orden — en cola, enviado, el acuse de recibo del operador o el fallo, cada uno marcado con una hora y, cuando falló, el propio código de motivo del operador.
const { data } = await bird.sms
.events("sms_4kT01Lq2m...")
.safe();
console.log(data.events);
// → [
// { type: "sms.queued", at: "2026-06-26T10:00:00.110Z" },
// { type: "sms.sent", at: "2026-06-26T10:00:00.640Z" },
// { type: "sms.delivered", at: "2026-06-26T10:00:02.300Z" },
// ]Segmenta los mismos envíos según la forma de la pregunta.
Cada desglose lee de los mismos acuses de recibo; el groupBy solo cambia la lente.
| Dimensión | Qué te dice |
|---|---|
| País | Dónde se mantiene la entrega y dónde un destino arrastra hacia abajo la tasa global. |
| Operador (MCC/MNC) | Qué operador dentro de un país está rechazando tráfico, hasta el código de red. |
| Remitente | Cuánta confianza tiene cada uno de tus IDs de remitente o números, ya que la reputación es por remitente. |
| Franja temporal | Cuándo se movió una tasa, para que una caída coincida con un despliegue, un cambio de registro o una caída del servicio. |
Profundiza en la documentación.
Construye tu propio almacén a partir de los webhooks de entrega, lee la guía de entregabilidad para saber qué significan los códigos de fallo, y concilia los recuentos con facturación y uso.
Los acuses vienen de la capa de enrutamiento.
Un acuse de recibo es tan bueno como la ruta que lo produjo: el enrutamiento elige el enlace de operador que toma cada mensaje y devuelve el DLR a partir del cual se construyen estas métricas. Si usas números bidireccionales, los mensajes entrantes también se cuentan aquí, así que un volumen de respuestas queda junto a la tasa de entrega que lo generó.
Preguntas frecuentes sobre analítica de SMS
¿De dónde salen los números de entrega?+
¿Puedo desglosar un informe por operador?+
¿Tengo que sondear la API o puedo recibir eventos en streaming?+
¿Puedo consultar qué pasó con un mensaje concreto?+
El resto de la plataforma de SMS
Una API, un solo conjunto de claves. Explora las demás capacidades.
Las métricas vienen con la API que las produce.
La analítica no es un producto aparte que comprar. Envía a través de la API de SMS de Bird y el reporting de entrega, fallo y latencia ya está ahí, sobre una infraestructura que transporta alrededor del 40 % del SMS comercial del mundo.