Satu API untuk setiap
email yang Anda kirim.
Transaksional atau marketing, satu pesan atau seratus, dikirim melalui Email API yang sama, dengan idempotensi, supresi, dan webhook bawaan. Kirim HTML mentah atau render template React Email Anda.
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { WelcomeEmail } from "./emails/welcome";
const bird = new BirdClient({
apiKey: process.env.BIRD_API_KEY!,
});
const { data, error } = await bird.email.send({
from: "Bird <hello@bird.com>",
to: ["ada@example.com"],
subject: "Your invite is ready",
html: await render(<WelcomeEmail name="Ada" />),
}).safe();
if (error) throw error;
console.log(data.id);
// → "em_2bX91Yk8h..."
You can sign in any time at bird.com/login.
Your test API key is on your dashboard, ready to send.
Sudah mengirim melalui SMTP?
Pertahankan klien SMTP yang sudah ada dan hubungkan ke relay Bird. Gunakan halaman pengaturan SMTP untuk host regional, port TLS, dan autentikasi. Jika aplikasi Anda perlu menerima dan mem-parse pesan, mulai dengan email masuk.
Kirim email pertama Anda dalam lima menit.
Dari bahasa pemrograman yang sudah Anda gunakan.
Pengiriman adalah inti dari Bird Email API. Pengiriman pertama Anda bisa ditujukan ke alamat sandbox (delivered@messagebird.dev), sehingga Anda dapat mencoba seluruh platform (pengiriman, webhook, supresi) sebelum memverifikasi domain.
const msg = await bird.email.send({
from: { email: "onboarding@messagebird.dev", name: "Bird" },
to: ["delivered@messagebird.dev"],
subject: "Hello from Bird",
html: "<p>My first Bird email.</p>",
});
console.log(msg.id, msg.status); // "em_…", "accepted"Lima hal yang tidak perlu Anda bangun sendiri.
Kontrak yang sama di setiap channel Bird.
- 01
Transaksional + marketing.
Endpoint yang sama mengirim reset kata sandi atau kampanye. Field kategori menentukan bagaimana supresi dan berhenti berlangganan diterapkan.
- 02
Template sesuai cara Anda.
Kirim HTML mentah, render template React Email ke HTML di aplikasi Anda lalu kirim hasilnya, atau sebutkan nama template tersimpan dan biarkan di-render untuk Anda. Toolchain Anda, tidak berubah.
- 03
Batch hingga 100.
Hingga 100 pesan independen per panggilan, masing-masing dengan penerima dan variabel sendiri, divalidasi sebagai satu unit sehingga Anda tidak pernah mengirim setengah jalan.
- 04
Idempoten secara kontrak.
Setiap pengiriman menerima kunci idempotensi, sehingga permintaan ulang setelah timeout mengembalikan hasil asli alih-alih mengirim dua kali.
- 05
Webhook di setiap perubahan status.
Diterima, terkirim, dibuka, diklik, bounce, dilaporkan. Setiap webhook ditandatangani HMAC, dilindungi dari replay, idempoten, dengan format yang sama di setiap channel.
Buat permintaan pertama dari aplikasi Anda.
Buat akun dan kunci API, lalu ikuti panduan pengiriman dengan penerima uji coba.
Sudah mengirim dari platform lain? Pindah dalam satu sore.
Panggilan yang sudah Anda buat hampir tidak berubah: ganti client, pertahankan template Anda, arahkan webhook ke satu endpoint. Panduan migrasi mencakup SendGrid, Amazon SES, Mailgun, dan Resend.
import sgMail from "@sendgrid/mail";
sgMail.setApiKey(process.env.SENDGRID_API_KEY!);
await sgMail.send({
from: "hello@yourdomain.com",
to: "delivered@messagebird.dev",
subject: "Your invite is ready",
html: "<p>Welcome aboard, Ada.</p>",
});
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
await bird.email.send({
from: "hello@yourdomain.com",
to: ["delivered@messagebird.dev"],
subject: "Your invite is ready",
html: "<p>Welcome aboard, Ada.</p>",
});
Satu pesan atau seratus, satu panggilan.
Batch hingga 100 pesan independen dalam satu permintaan, masing-masing dengan penerima dan variabel sendiri. Batch divalidasi sebagai satu unit: satu pesan yang salah menolak panggilan dengan 422, sehingga Anda tidak pernah mengirim setengah jalan. Satu kunci idempotensi membuat seluruh permintaan aman untuk dicoba ulang.
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { Digest } from "./emails/digest";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const messages = await Promise.all(
users.map(async (u) => ({
from: "Acme <hello@yourdomain.com>",
to: [u.email],
subject: "Your weekly digest",
html: await render(<Digest user={u} />),
})),
);
const { data: batch, error } = await bird.email
.sendBatch(messages)
.safe();
if (error) throw error;
console.log(`queued ${batch.data.length} messages`);
Lampirkan konteks Anda sendiri ke setiap pengiriman.
Tag adalah dimensi kelas utama yang dapat difilter: potong data pengiriman dan engagement berdasarkan kampanye, template, atau eksperimen di API statistik (hingga 20 per pesan). Metadata adalah JSON arbitrer, hingga 2 KB, yang ikut bolak-balik tanpa diubah di setiap pembacaan dan webhook, sehingga ID Anda sendiri menyertai pesan.
await bird.email.send({
from: "Acme <hello@yourdomain.com>",
to: ["delivered@messagebird.dev"],
subject: "Your invite is ready",
html: "<p>Welcome aboard, Ada.</p>",
tags: [{ name: "campaign", value: "spring-2026" }],
metadata: { user_id: "u_2bX91", order_id: "ord_5512" },
});
Pantau setiap pesan sepanjang siklus hidupnya.
Pengiriman mengembalikan 202 langsung; hasilnya datang sebagai webhook per penerima. Verifikasi satu tanda tangan, periksa tipe-nya: format yang sama seperti yang sudah Anda tangani untuk SMS, voice, dan WhatsApp.
import { bird } from "@/lib/bird";
export async function POST(req: Request) {
const event = bird.webhooks.unwrap(
await req.text(),
Object.fromEntries(req.headers),
);
switch (event.type) {
case "email.delivered":
await markDelivered(event.data.email_id);
break;
case "email.bounced":
await flag(event.data.recipient, event.data.bounce_type);
break;
}
return new Response(null, { status: 204 });
}
Hard bounce dan keluhan memperbarui supresi penerima. Berhenti berlangganan mencatat preferensi opt-out. Catatan tersebut diperiksa saat memproses pengiriman berikutnya.
email.acceptedPengiriman diterima dan sedang disiapkan untuk dikirim.email.processedDalam antrean ke server email penerima.email.deliveredServer email penerima menerima pesan.email.deferredDitolak sementara, dan kami akan mencoba lagi.email.bouncedGagal permanen: tipe bounce dan kode SMTP ada di payload.email.openedPenerima membuka pesan. Bisa terpicu lebih dari sekali.email.clickedPenerima mengklik tautan yang dilacak.email.complainedPenerima melaporkan pesan sebagai spam.email.unsubscribedPenerima berhenti berlangganan melalui tautan unsubscribe yang dilacak.
Uji setiap hasil sebelum Anda go live.
Di sandbox, alamat penerima menentukan hasilnya, sehingga status akun Anda tidak harus diatur. Kirim ke delivered@messagebird.dev untuk pengiriman bersih, atau ke bounce@, softbounce@, deferred@, complaint@, dan suppressed@ untuk menjalankan setiap jalur kegagalan melalui pipeline dan webhook yang sesungguhnya. Tidak perlu memverifikasi domain, tidak ada risiko terhadap reputasi Anda. Produksi sengaja dibatasi: Anda memverifikasi domain terlebih dahulu, dan domain baru atau IP dedicated melewati proses warmup sebelum menanggung volume penuh.
Pelajari lebih lanjut di dokumentasi.
Baca panduan pengiriman, hubungkan event dan webhook email, atau, jika Anda berpindah dari penyedia lain, ikuti panduan migrasi dari SendGrid, SES, Mailgun, atau Resend.
Uji perilaku seputar pengiriman.
Panggilan pengiriman yang berhasil adalah awal dari integrasi. Simulasikan bounce dan keluhan, tangani pengiriman webhook duplikat, dan tentukan cara aplikasi Anda menjadwalkan pesan atau menerima balasan.
Lanjutkan dengan alur kerja yang Anda butuhkan
Pilih produk atau panduan yang sesuai dengan pekerjaan berikutnya.
161%
Peningkatan rasio buka email yang dilaporkan dalam kisah pelanggan Zillow.
Dibangun dengan Bird
Saat rumah yang tepat muncul, email harus langsung sampai.
Zillow memindahkan notifikasi properti yang sensitif waktu ke Bird, dengan kapasitas menangani lonjakan pengiriman dan analitik untuk memahami keterlibatan. Timnya melaporkan peningkatan rasio buka sebesar 161% pada bulan pertama.
Merencanakan migrasi atau pengiriman volume lebih tinggi?
Hubungi tim penjualanPertanyaan tentang pengiriman email
Bisakah saya mengirim email transaksional dan marketing sekaligus?
Apa yang terjadi jika permintaan timeout dan saya mengulanginya?
Bisakah saya menjadwalkan pengiriman untuk nanti?
Bisakah saya melampirkan file?
Hubungkan pengiriman ke alur kerja Anda yang lain
Hubungi tim email kami
Bangun integrasi email Anda berikutnya.
Diskusikan pesan transaksional, pengiriman massal, dan event pengiriman. Kami akan membantu Anda merencanakan integrasi, volume pengiriman, dan migrasi.
Buat akun Anda, lalu buat kunci API dan kirim pesan uji coba.
Skalakan tanpa
kehilangan kendali.
Atur tim dalam workspace, kontrol akses API, dan lacak perubahan melalui log audit.
Audit log
Production- Workspace
- Production
- Resource
- Delivery agent
- ReadRead & write