Analyse

Voyez ce que l'opérateur a vu.

Mise en place en :
Cursor

Chaque envoi produit un accusé de réception (DLR) de l'opérateur. Bird transforme ces accusés en métriques de livraison, d'échec et de latence, ventilées par pays, opérateur et expéditeur, dans le tableau de bord et via une API de statistiques que vous pouvez interroger depuis votre propre code.

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

Le volet reporting de la même API.

Rien de nouveau à instrumenter.

L'analyse est le volet reporting de l'API SMS de Bird. Vous envoyez déjà à travers elle et recevez déjà un webhook de livraison à chaque changement d'état ; l'analyse, c'est Bird qui tient le compte à votre place, pour que vous puissiez savoir comment une campagne s'est délivrée sans avoir d'abord à monter un entrepôt pour conserver les événements.

Ce qu'un accusé de réception vous indique.

Mesuré depuis l'opérateur, et non déduit.

  1. 01

    Taux de livraison.

    La part des envois que l'opérateur a confirmé comme délivrés, par rapport à ce qui a été soumis. Suivez-le par pays et par expéditeur, et pas seulement comme un chiffre global unique qui masque la route qui décroche discrètement.

  2. 02

    Raisons d'échec par opérateur.

    Les envois échoués portent le code de raison de l'opérateur, regroupé par opérateur de destination (MCC/MNC). Un pic correspond généralement à un opérateur qui rejette un sender ID, ce qui relève d'une correction d'enregistrement, pas d'une panne de plateforme.

  3. 03

    Segments et coût.

    Chaque message indique son encodage et son nombre de segments, de sorte que le volume s'agrège dans les segments réellement facturés. Un envoi passé en Unicode et qui a doublé ses segments apparaît ici, pas sur la facture.

  4. 04

    Latence jusqu'à la livraison.

    Le temps écoulé entre la soumission et l'accusé de réception, sous forme de distribution plutôt que de moyenne. À l'échelle mondiale, environ 95 % des messages sont confirmés en moins de 2,5 secondes ; c'est dans la traîne qu'une route dégradée se signale.

Interrogez les chiffres depuis votre propre code.

L'API de statistiques accepte une plage temporelle et un groupBy, et renvoie les comptes agrégés. Groupez par pays et opérateur pour repérer la route sous-performante, par expéditeur pour voir lequel de vos IDs un opérateur considère comme fiable. La même agrégation alimente les graphiques du tableau de bord : un chiffre dont vous faites une capture d'écran correspond à un chiffre que vous pouvez extraire de façon planifiée.

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,
//   }

Extrayez la chronologie d'un seul message.

Les agrégats répondent à la question de savoir comment une campagne s'est déroulée ; un ticket de support porte sur un seul texto. Transmettez un unique message ID à l'endpoint des événements et vous obtenez toute sa vie dans l'ordre — mis en file d'attente, envoyé, l'accusé de réception de l'opérateur ou l'échec, chacun horodaté et, en cas d'échec, accompagné du code de raison propre à l'opérateur.

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" },
//   ]

Découpez les mêmes envois selon la forme de la question.

Chaque ventilation lit les mêmes accusés de réception ; le groupBy ne fait que changer la perspective.

DimensionCe qu'elle vous indique
PaysOù la livraison tient bon et où une destination tire le taux global vers le bas.
Opérateur (MCC/MNC)Quel opérateur au sein d'un pays rejette le trafic, jusqu'au code réseau.
ExpéditeurLe niveau de confiance accordé à chacun de vos sender IDs ou numéros, la réputation étant propre à chaque expéditeur.
Tranche horaireQuand un taux a évolué, afin qu'une baisse coïncide avec un déploiement, un changement d'enregistrement ou une panne.

Approfondissez dans la documentation.

Construisez votre propre stockage à partir des webhooks de livraison, lisez le guide de délivrabilité pour comprendre la signification des codes d'échec, et rapprochez les comptes de la facturation et de l'utilisation.

Les accusés proviennent de la couche de routage.

Un accusé de réception ne vaut que ce que vaut le chemin qui l'a produit : le routage choisit le lien opérateur que prend chaque message et renvoie le DLR à partir duquel ces métriques sont construites. Si vous exploitez des numéros bidirectionnels, les messages entrants sont également comptés ici, de sorte qu'un volume de réponses côtoie le taux de livraison qui l'a généré.

FAQ sur l'analyse SMS

D'où proviennent les chiffres de livraison ?+
De l'accusé de réception (DLR) de l'opérateur pour chaque envoi. Bird enregistre l'accusé sur le message, puis agrège ces accusés en chiffres de livraison, d'échec et de latence. Un compteur de messages délivrés correspond à la confirmation de réception par l'opérateur, et non à une estimation de Bird.
Puis-je ventiler un rapport par opérateur ?+
Oui. L'API de statistiques accepte un groupBy par pays, opérateur (par MCC/MNC), expéditeur et tranche horaire, dans n'importe quelle combinaison. Un taux d'échec qui paraît correct à l'échelle nationale se révèle souvent être un seul opérateur qui rejette un seul sender ID.
Dois-je interroger l'API en boucle, ou puis-je recevoir les événements en flux ?+
Au choix. Chaque état de livraison arrive déjà sous forme de webhook, vous pouvez donc construire votre propre stockage à partir du flux d'événements. L'API de statistiques est là lorsque vous préférez que Bird réalise l'agrégation plutôt que de tenir un compteur vous-même.
Puis-je retrouver ce qui est arrivé à un message précis ?+
Transmettez le message ID à l'endpoint des événements et vous obtenez sa chronologie complète — mis en file d'attente, envoyé, délivré ou échoué, chacun avec un horodatage et, en cas d'échec, le code de raison de l'opérateur. C'est le rapport dont vous avez réellement besoin lorsqu'un client affirme qu'un texto n'est jamais arrivé.

Les métriques sont livrées avec l'API qui les produit.

L'analyse n'est pas un produit distinct à acheter. Envoyez via l'API SMS de Bird et le reporting de livraison, d'échec et de latence est déjà là, sur une infrastructure qui achemine environ 40 % du SMS commercial mondial.

Commencez avec un seul canal.
Ajoutez les autres quand vous êtes prêt.

Une clé API de test est disponible immédiatement. L'accès production se débloque dès que vous ajoutez un moyen de paiement et vérifiez un expéditeur.

Vous utilisez Claude Code, Cursor ou Codex ? Copiez un prompt de configuration et votre agent installe la CLI Bird et les compétences pour vous. Choisissez le vôtre :

Cursor