Analítica

Ve lo que vio el operador.

Configúralo en:
Cursor

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.

send-otp.ts
200 · 0.4s
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

Hey Ada — your Bird sign-in code is 482917. It'll expire in 10 minutes. Don't share it with anyone.
482917
Delivered

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

delivery-by-route.ts
200 · stats
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.

message-timeline.ts
200 · events
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ónQué te dice
PaísDó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.
RemitenteCuánta confianza tiene cada uno de tus IDs de remitente o números, ya que la reputación es por remitente.
Franja temporalCuá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?+
Del acuse de recibo del operador (DLR) de cada envío. Bird registra el acuse contra el mensaje y luego agrega esos acuses en cifras de entrega, fallo y latencia. Un recuento de entregados es el operador confirmando la recepción, no Bird adivinando.
¿Puedo desglosar un informe por operador?+
Sí. La API de estadísticas acepta un groupBy de país, operador (por MCC/MNC), remitente y franja temporal, en cualquier combinación. Una tasa de fallo que parece correcta a nivel nacional a menudo resulta ser un operador rechazando un ID de remitente.
¿Tengo que sondear la API o puedo recibir eventos en streaming?+
Cualquiera de las dos. Cada estado de entrega ya llega como webhook, así que puedes construir tu propio almacén a partir del flujo de eventos. La API de estadísticas está ahí para cuando quieras que Bird haga la agregación en lugar de mantener tú un contador.
¿Puedo consultar qué pasó con un mensaje concreto?+
Pasa el ID del mensaje al endpoint de eventos y obtienes su línea temporal completa — en cola, enviado, entregado o fallido, cada uno con su marca de tiempo y, en caso de fallo, el código de motivo del operador. Ese es el informe que de verdad necesitas cuando un cliente dice que un SMS nunca llegó.

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.

Empieza con un canal.
Añade los demás cuando estés listo.

Una clave API de prueba es tuya de inmediato. El acceso a producción se desbloquea cuando añades un método de pago y verificas un remitente.

¿Usas Claude Code, Cursor o Codex? Copia un prompt de configuración y tu agente instalará el Bird CLI y las habilidades por ti. Elige el tuyo:

Cursor