Setiap pengiriman menghasilkan delivery receipt operator. Bird mengubah receipt itu menjadi metrik pengiriman, kegagalan, dan latensi, dipecah per negara, operator, dan pengirim, di dashboard dan melalui stats API yang dapat Anda kueri dari kode Anda sendiri.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.sms.send({
from: "Bird",
to: "+31612345678",
text: "Your order #4821 has shipped. Track it: bird.ly/t/4821x",
category: "transactional",
}).safe();
if (error) throw error;
console.log(data.id);
// → "sms_01m11jw130e7svjzv70kgqr38w"
Sisi pelaporan dari API yang sama.
Tak ada yang baru untuk diinstrumentasi.
Analitik adalah sisi pelaporan dari Bird SMS API. Anda sudah mengirim melaluinya dan sudah menerima delivery webhook pada setiap perubahan status; analitik adalah Bird yang menyimpan hitungannya untuk Anda, sehingga Anda bisa menanyakan bagaimana sebuah campaign terkirim tanpa harus menyiapkan warehouse untuk menampung event-nya lebih dulu.
Apa yang diberitahukan sebuah delivery receipt.
Diukur dari operator, bukan disimpulkan.
- 01
Tingkat pengiriman.
Porsi pengiriman yang dikonfirmasi terkirim oleh operator, terhadap yang dikirimkan. Lacak per negara dan per pengirim, bukan hanya sebagai satu angka menyeluruh yang menyembunyikan rute yang diam-diam menurun.
- 02
Alasan kegagalan per operator.
Pengiriman yang gagal membawa reason code operator, dikelompokkan per operator tujuan (MCC/MNC). Lonjakan biasanya berupa satu operator yang menolak satu sender ID, yang merupakan perbaikan registrasi, bukan gangguan platform.
- 03
Segment dan biaya.
Setiap pesan melaporkan encoding dan jumlah segment-nya, sehingga volume tergabung menjadi segment yang benar-benar ditagihkan kepada Anda. Pengiriman yang berubah ke Unicode dan menggandakan segment-nya muncul di sini, bukan di tagihan.
- 04
Latensi hingga pengiriman.
Waktu dari pengiriman hingga delivery receipt, sebagai distribusi alih-alih rata-rata. Secara global sekitar 95% pesan terkonfirmasi dalam waktu di bawah 2,5 detik; ekornya adalah tempat rute yang menurun menampakkan diri.
Kueri angka-angkanya dari kode Anda sendiri.
The stats API takes a time range and returns the rolled-up counts, one endpoint per dimension: by carrier to find the route that's underperforming, by originator to see which of your senders a carrier trusts, by country, category, status, error code, or tag. Each row carries its own dimension, so crossing two of them is two calls. The same aggregation backs the dashboard charts, so a number you screenshot matches a number you can pull on a schedule.
// One endpoint per dimension, and one dimension per row: "by country and
// carrier" is two calls, not one grouped query.
const { data: byCarrier, error } = await bird.sms.stats
.byCarrier({ from: "2026-06-01", to: "2026-06-26" })
.safe();
if (error) throw error;
console.log(byCarrier.data[0]);
// → {
// carrier: "Vivo",
// delivery: {
// accepted: 14820,
// sent: 14810,
// delivered: 14720,
// undelivered: 60,
// failed: 25,
// delivery_rate: 0.9932,
// },
// latency: { processing: { p50_ms: 480, p95_ms: 2310, p99_ms: 4100 } },
// }
Tarik linimasa untuk satu pesan.
Agregat menjawab bagaimana performa sebuah kampanye; tiket dukungan menanyakan tentang satu pesan. Kirimkan satu message ID ke events endpoint dan Anda akan mendapatkan seluruh siklus hidupnya secara berurutan: queued, sent, tanda terima pengiriman dari operator atau kegagalannya, masing-masing dilengkapi waktu dan, ketika gagal, kode alasan dari operator itu sendiri.
const { data: events, error } = await bird.sms
.listEvents("sms_01m11jw130e7svjzv70kgqr38w")
.safe();
if (error) throw error;
console.log(events.data);
// → [
// { id: "evt_01m11jw196...", type: "sms.accepted", occurred_at: "2026-06-26T10:00:00.110Z" },
// { id: "evt_01m11jw19h...", type: "sms.sent", occurred_at: "2026-06-26T10:00:00.640Z" },
// { id: "evt_01m11jx4c2...", type: "sms.delivered", occurred_at: "2026-06-26T10:00:02.300Z" },
// ]
Iris pengiriman yang sama sesuai bentuk pertanyaannya.
Every breakdown reads from the same delivery receipts; the endpoint you call just changes the lens.
| Dimensi | Apa yang diberitahukannya |
|---|---|
| Negara | Di mana pengiriman bertahan dan di mana sebuah tujuan menyeret turun angka global. |
| Operator (MCC/MNC) | Operator mana di dalam sebuah negara yang menolak trafik, hingga ke kode jaringannya. |
| Pengirim | Seberapa dipercaya masing-masing sender ID atau nomor Anda, karena reputasi bersifat per pengirim. |
| Rentang waktu | Kapan sebuah angka berubah, sehingga penurunan sejajar dengan sebuah deploy, perubahan registrasi, atau gangguan. |
Pelajari lebih dalam di dokumentasi.
Bangun penyimpanan Anda sendiri dari delivery webhook, baca panduan deliverability untuk memahami arti kode kegagalan, dan rekonsiliasi hitungan dengan penagihan dan penggunaan.
Receipt-nya berasal dari layer routing.
Sebuah delivery receipt hanya sebaik jalur yang menghasilkannya: routing memilih tautan operator yang dilewati setiap pesan dan mengembalikan DLR yang menjadi dasar metrik ini. Jika Anda menjalankan nomor dua arah, pesan inbound juga dihitung di sini, sehingga volume balasan berada di samping tingkat pengiriman yang menghasilkannya.
Sisanya dari platform SMS
Satu API, satu set key. Jelajahi kemampuan lainnya.
Metriknya hadir bersama API yang menghasilkannya.
Analitik bukan produk terpisah yang harus dibeli. Kirim melalui Bird SMS API dan pelaporan pengiriman, kegagalan, serta latensi sudah ada di sana, di atas infrastruktur yang membawa sekitar 40% SMS komersial dunia.