Analytics

Zie wat de carrier zag.

Klaar in:
Cursor

Elke verzending levert een carrier delivery receipt op. Bird zet die receipts om in aflever-, fout- en latencymetrics, uitgesplitst naar land, carrier en afzender, in het dashboard en via een stats-API die je vanuit je eigen code kunt bevragen.

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

De rapportagekant van dezelfde API.

Niets nieuws te instrumenteren.

Analytics is de rapportagekant van de Bird SMS API. Je verstuurt er al via en ontvangt al een afleverwebhook bij elke statuswijziging; analytics is Bird die de telling voor je bijhoudt, zodat je kunt vragen hoe een campagne aflandde zonder eerst een warehouse op te zetten om de events in op te slaan.

Wat een delivery receipt je vertelt.

Gemeten vanaf de carrier, niet afgeleid.

  1. 01

    Afleverpercentage.

    Het aandeel verzendingen dat de carrier als delivered bevestigde, ten opzichte van wat is ingediend. Volg het per land en per afzender, niet alleen als één site-breed getal dat de route verbergt die stilletjes berichten laat vallen.

  2. 02

    Foutredenen per carrier.

    Mislukte verzendingen dragen de reden-code van de carrier, gegroepeerd per bestemmingscarrier (MCC/MNC). Een piek is meestal één operator die één sender ID weigert, wat een registratiefix is, geen platformstoring.

  3. 03

    Segmenten en kosten.

    Elk bericht rapporteert zijn encoding en segmentaantal, zodat volume oprolt tot de segmenten die je daadwerkelijk in rekening kreeg. Een run die Unicode werd en zijn segmenten verdubbelde, verschijnt hier, niet op de factuur.

  4. 04

    Latency tot aflevering.

    De tijd van indiening tot de delivery receipt, als een verdeling in plaats van een gemiddelde. Wereldwijd bevestigt ongeveer 95% van de berichten binnen 2,5 seconden; de staart is waar een verslechterde route zich aankondigt.

Bevraag de cijfers vanuit je eigen code.

De stats-API neemt een tijdsbereik en een groupBy, en geeft de opgerolde tellingen terug. Groepeer op land en carrier om de route te vinden die onderpresteert, op afzender om te zien welke van je ID's een carrier vertrouwt. Dezelfde aggregatie voedt de dashboardgrafieken, dus een getal dat je screenshot komt overeen met een getal dat je op een schema kunt ophalen.

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

Haal de tijdlijn van één bericht op.

Aggregaten beantwoorden hoe een campagne het deed; een supportticket gaat over één bericht. Geef één enkel message-ID door aan het events-endpoint en je krijgt zijn hele leven op volgorde — queued, sent, de carrier delivery receipt of de fout, elk gestempeld met een tijd en, toen het mislukte, de eigen reden-code van de carrier.

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

Snijd dezelfde verzendingen zoals de vraag is vormgegeven.

Elke uitsplitsing leest uit dezelfde delivery receipts; de groupBy verandert alleen de lens.

DimensieWat het je vertelt
LandWaar de aflevering standhoudt en waar een bestemming het wereldwijde percentage omlaagtrekt.
Carrier (MCC/MNC)Welke operator binnen een land verkeer weigert, tot op de network code.
AfzenderHoezeer elk van je sender ID's of nummers wordt vertrouwd, want reputatie is per afzender.
TijdsbucketWanneer een percentage bewoog, zodat een daling samenvalt met een deploy, een registratiewijziging of een storing.

Ga dieper in de docs.

Bouw je eigen store vanuit de afleverwebhooks, lees de deliverability-gids voor wat de foutcodes betekenen, en stem tellingen af op facturering en gebruik.

De receipts komen uit de routeringslaag.

Een delivery receipt is niet beter dan het pad dat hem produceerde: routering kiest de carrierverbinding die elk bericht neemt en geeft de DLR terug waarop deze metrics zijn gebouwd. Als je two-way nummers draait, worden inkomende berichten hier ook geteld, zodat een reactievolume naast het afleverpercentage staat dat het verdiende.

SMS analytics FAQ

Waar komen de afleveringscijfers vandaan?+
Uit de carrier delivery receipt (DLR) van elke verzending. Bird registreert de receipt bij het bericht en rolt die receipts vervolgens op tot aflever-, fout- en latencycijfers. Een delivered-telling is de carrier die ontvangst bevestigt, niet Bird die gokt.
Kan ik een rapport uitsplitsen per carrier?+
Ja. De stats-API neemt een groupBy van land, carrier (op MCC/MNC), afzender en tijdsbucket, in elke combinatie. Een foutpercentage dat landelijk prima lijkt, blijkt vaak één carrier die één sender ID weigert.
Moet ik de API pollen, of kan ik events streamen?+
Allebei. Elke afleverstatus komt al binnen als webhook, dus je kunt je eigen store bouwen vanuit de eventstream. De stats-API is er voor wanneer je Bird de aggregatie wilt laten doen in plaats van zelf een teller bij te houden.
Kan ik opzoeken wat er met één specifiek bericht is gebeurd?+
Geef het message-ID door aan het events-endpoint en je krijgt de volledige tijdlijn — queued, sent, delivered of failed, elk met een timestamp en, bij een fout, de reden-code van de carrier. Dat is het rapport dat je echt nodig hebt wanneer een klant zegt dat een bericht nooit aankwam.

De metrics komen met de API die ze produceert.

Analytics is geen apart product dat je koopt. Verstuur via de Bird SMS API en de aflever-, fout- en latencyrapportage is er al, op infrastructuur die ongeveer 40% van 's werelds commerciële SMS draagt.

Begin met één kanaal.
Voeg de rest toe wanneer je er klaar voor bent.

Een test-API-key is direct beschikbaar. Productietoegang wordt ontgrendeld zodra je een betaalmethode toevoegt en een afzender verifieert.

Gebruik je Claude Code, Cursor of Codex? Kopieer een setup-prompt en je agent installeert de Bird CLI en skills voor je. Kies de jouwe:

Cursor