Analisi

Vedi ciò che ha visto il carrier.

Configurazione in:
Cursor

Ogni invio produce una ricevuta di consegna del carrier. Bird trasforma quelle ricevute in metriche di consegna, fallimento e latenza, suddivise per paese, carrier e mittente, nel dashboard e tramite una stats API che puoi interrogare dal tuo codice.

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

Il lato reporting della stessa API.

Niente di nuovo da strumentare.

L'analisi è il lato reporting dell'API SMS di Bird. Invii già attraverso di essa e ricevi già un webhook di consegna a ogni cambio di stato; l'analisi è Bird che tiene il conto per te, così puoi sapere com'è stata consegnata una campagna senza dover prima allestire un warehouse per conservare gli eventi.

Cosa ti dice una ricevuta di consegna.

Misurata dal carrier, non dedotta.

  1. 01

    Tasso di consegna.

    La quota di invii che il carrier ha confermato come consegnati, rispetto a ciò che è stato sottoposto. Monitoralo per paese e per mittente, non solo come un unico numero a livello di sito che nasconde la rotta che sta silenziosamente perdendo messaggi.

  2. 02

    Motivi di fallimento per carrier.

    Gli invii falliti riportano il reason code del carrier, raggruppati per carrier di destinazione (MCC/MNC). Un picco di solito è un singolo operatore che rifiuta un singolo sender ID, che è una correzione di registrazione, non un'interruzione della piattaforma.

  3. 03

    Segmenti e costo.

    Ogni messaggio riporta la propria codifica e il numero di segmenti, così il volume si aggrega nei segmenti che ti sono stati effettivamente fatturati. Un invio passato a Unicode che ha raddoppiato i suoi segmenti compare qui, non sulla fattura.

  4. 04

    Latenza fino alla consegna.

    Il tempo dalla sottomissione alla ricevuta di consegna, come distribuzione anziché come media. A livello globale circa il 95% dei messaggi viene confermato in meno di 2,5 secondi; la coda è dove una rotta degradata si fa notare.

Interroga i numeri dal tuo codice.

La stats API accetta un intervallo temporale e un groupBy e restituisce i conteggi aggregati. Raggruppa per paese e carrier per trovare la rotta che rende meno, per mittente per vedere quali dei tuoi ID un carrier ritiene affidabili. La stessa aggregazione alimenta i grafici del dashboard, così un numero di cui fai uno screenshot corrisponde a un numero che puoi estrarre in modo programmato.

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

Estrai la timeline di un singolo messaggio.

Gli aggregati rispondono a come è andata una campagna; un ticket di supporto chiede di un singolo messaggio. Passa un singolo message ID all'endpoint degli eventi e ne ottieni l'intera vita in ordine — in coda, inviato, la ricevuta di consegna del carrier o il fallimento, ognuno marcato con un orario e, quando è fallito, il reason code del carrier stesso.

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

Affetta gli stessi invii in base a come è formulata la domanda.

Ogni suddivisione legge dalle stesse ricevute di consegna; il groupBy cambia solo la lente.

DimensioneCosa ti dice
PaeseDove la consegna regge e dove una destinazione sta abbassando il tasso globale.
Carrier (MCC/MNC)Quale operatore all'interno di un paese sta rifiutando il traffico, fino al network code.
MittenteQuanto è affidabile ciascuno dei tuoi sender ID o numeri, dato che la reputazione è per mittente.
Intervallo temporaleQuando un tasso è cambiato, così un calo si allinea con un deploy, una modifica di registrazione o un'interruzione.

Approfondisci nella documentazione.

Costruisci il tuo store dai webhook di consegna, leggi la guida alla deliverability per capire cosa significano i codici di fallimento e riconcilia i conteggi con fatturazione e utilizzo.

Le ricevute provengono dal layer di routing.

Una ricevuta di consegna vale solo quanto il percorso che l'ha prodotta: il routing sceglie il collegamento carrier che ogni messaggio prende e restituisce il DLR da cui sono costruite queste metriche. Se usi numeri bidirezionali, anche i messaggi in entrata vengono conteggiati qui, così un volume di risposte sta accanto al tasso di consegna che lo ha generato.

FAQ sull'analisi SMS

Da dove provengono i numeri di consegna?+
Dalla ricevuta di consegna del carrier (DLR) per ogni invio. Bird registra la ricevuta sul messaggio, poi aggrega quelle ricevute in dati di consegna, fallimento e latenza. Un conteggio di consegnati è il carrier che conferma la ricezione, non una stima di Bird.
Posso suddividere un report per carrier?+
Sì. La stats API accetta un groupBy per paese, carrier (per MCC/MNC), mittente e intervallo temporale, in qualsiasi combinazione. Un tasso di fallimento che sembra a posto a livello nazionale spesso si rivela essere un singolo carrier che rifiuta un singolo sender ID.
Devo fare polling sull'API o posso ricevere gli eventi in streaming?+
Entrambi. Ogni stato di consegna arriva già come webhook, quindi puoi costruire il tuo store dallo stream di eventi. La stats API è lì quando vuoi che sia Bird a fare l'aggregazione, invece di tenere tu stesso un contatore.
Posso verificare cosa è successo a un messaggio specifico?+
Passa il message ID all'endpoint degli eventi e ottieni la sua timeline completa — in coda, inviato, consegnato o fallito, ognuno con un timestamp e, in caso di fallimento, il reason code del carrier. È il report di cui hai davvero bisogno quando un cliente dice che un messaggio non è mai arrivato.

Le metriche arrivano con l'API che le produce.

L'analisi non è un prodotto separato da acquistare. Invia tramite l'API SMS di Bird e il reporting di consegna, fallimento e latenza è già lì, su un'infrastruttura che trasporta circa il 40% degli SMS commerciali del mondo.

Inizia con un canale.
Aggiungi gli altri quando sei pronto.

Una chiave API di test è subito tua. La produzione si sblocca quando aggiungi un metodo di pagamento e verifichi un mittente.

Usi Claude Code, Cursor o Codex? Copia un prompt di configurazione e il tuo agente installerà la CLI e le skill di Bird per te. Scegli il tuo:

Cursor