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.
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
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.
- 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.
- 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.
- 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.
- 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.
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.
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.
| Dimensie | Wat het je vertelt |
|---|---|
| Land | Waar 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. |
| Afzender | Hoezeer elk van je sender ID's of nummers wordt vertrouwd, want reputatie is per afzender. |
| Tijdsbucket | Wanneer 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?+
Kan ik een rapport uitsplitsen per carrier?+
Moet ik de API pollen, of kan ik events streamen?+
Kan ik opzoeken wat er met één specifiek bericht is gebeurd?+
De rest van het SMS-platform
Eén API, één set keys. Verken de andere mogelijkheden.
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.