Template email
Dalam pratinjauTemplate dengan logika, di-render saat pengiriman.
Simpan subjek dan isi sekali, publikasikan sebagai versi yang tidak dapat diubah, lalu kirim berdasarkan slug. Kondisional, loop, dan filter Liquid dijalankan saat pesan dibuat, sehingga logika personalisasi berada di template, bukan tersebar di seluruh kode Anda. Buat di dashboard builder, dari bird CLI, atau biarkan agen melakukannya melalui MCP.
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.
Simpan sebuah template. Personalisasi saat pengiriman.
Markup sudah tersimpan di Bird.
Template adalah bagian dari Bird Email API. Simpan layout dan logikanya sekali; setiap pengiriman menyebut template berdasarkan slug atau id dan meneruskan nilai yang dibutuhkan token-nya. Pesan akhir dirender di sisi kami, sehingga template yang sama bisa digunakan untuk satu tanda terima, batch seratus, atau broadcast ke seluruh audiens.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
// No subject and no html: the template's published version supplies both.
const { data, error } = await bird.email
.send({
from: "orders@acme.com",
to: ["delivered@messagebird.dev"],
category: "transactional",
template: {
slug: "order-confirmation",
parameters: {
first_name: "Ada",
order: { number: "A-1043", total: "$42.00" },
},
},
})
.safe();
Lebih dari sekadar find-and-replace.
Liquid, diproses di sisi Bird saat pesan dibuat.
- 01
Conditional.
Blok if Liquid hanya ditampilkan ketika nilainya berlaku, seperti catatan khusus anggota atau banner gratis ongkir, sehingga satu template mencakup kedua kasus.
- 02
Loop.
Loop for mengulang baris untuk setiap item dalam array, sehingga satu template konfirmasi pesanan mencantumkan setiap item yang benar-benar dibeli pelanggan. Satu batasan yang perlu diketahui sejak awal: broadcast hanya membawa satu nilai per properti kontak dan tidak memiliki apa pun untuk diiterasi, sehingga template yang menggunakan loop dikirim melalui API messages, bukan broadcast.
- 03
Filter.
Alirkan nilai melalui filter Liquid sebelum dirender. Filter default menangkap nama depan yang kosong sebelum terkirim sebagai sapaan kosong.
- 04
Data bersarang.
Token bertitik menjangkau objek terstruktur, sehingga Anda bisa meneruskan seluruh objek pesanan dan mengakses nomor serta totalnya dari markup tanpa harus meratakannya terlebih dahulu.
- 05
Tidak perlu deklarasi apa pun.
Daftar token dibaca dari markup Anda, digabungkan dari semua bahasa, sehingga tidak ada skema variabel terpisah yang harus diselaraskan dengan isi. Nilai bisa berupa JSON apa pun: string, angka, boolean, array, objek.
Tulis dengan cara Anda sudah bekerja.
Tiga cara masuk, semuanya menuju template yang sama. Dashboard builder adalah yang visual. Bird CLI menjalankan seluruh siklus dari skrip atau langkah deploy, dan agen mengakses operasi yang sama melalui MCP. Sudah punya komponen React Email? Render ke HTML dan simpan hasilnya, biarkan token Bird sebagai teks literal di JSX agar tetap bertahan saat render, bukan terpanggang sebagai nilai saat React dijalankan.
# Render React Email to HTML, then publish it as a template version.
node scripts/render-receipt.mjs > receipt.json
bird email templates create receipt --category transactional --source html
bird email templates versions languages set "$TEMPLATE" "$DRAFT" en \
--body-file receipt.json --yes
# --validate-only reports every problem across every language, freezing nothing.
bird email templates versions submit "$TEMPLATE" "$DRAFT" --validate-only --yes
bird email templates versions submit "$TEMPLATE" "$DRAFT" --yes
Berversi, seperti kode Anda lainnya.
Pengeditan dilakukan pada draft dan tidak pernah menyentuh yang sudah live, karena pengiriman selalu mengambil versi terpublikasi terkini dan draft tidak pernah dikirim. Publikasi membekukan versi bernomor yang tidak dapat diubah dan menjadikannya live; jika ada perubahan yang salah, kembalikan ke versi sebelumnya. Penyimpanan membawa revisi terakhir yang Anda baca, sehingga jika rekan tim mengubah bahasa tersebut sementara itu, penyimpanan ditolak sebagai konflik alih-alih menimpa pekerjaan mereka. Statistik pengiriman dan keterlibatan dirinci per template, sehingga Anda bisa melihat mana yang benar-benar berhasil.
Satu template, hingga 25 bahasa.
Template dapat memuat konten dalam hingga 25 bahasa, masing-masing dengan subjek dan isi sendiri, dikunci berdasarkan tag BCP-47 seperti en atau pt-BR. Pengiriman menyebutkan bahasa yang diinginkan, atau mengosongkannya dan mendapatkan bahasa default template. Ketika pengiriman meminta bahasa yang tidak dimiliki template, on_missing_language menentukan apa yang terjadi: fallback menyajikan kecocokan terdekat, sehingga permintaan untuk pt-BR dijawab oleh pt yang tersedia, dan fail menolak pengiriman secara langsung, untuk konten di mana bahasa yang salah lebih buruk daripada tidak mengirim sama sekali.
Pratinjau persis apa yang akan dikirim.
Isi template dengan nilai sampel dan dapatkan subjek serta isi HTML dan teks yang akan dikirimkan. Preview merender draft, yang memungkinkan Anda memeriksa perubahan sebelum live, atau versi terpublikasi ketika Anda ingin melihat apa yang sedang dikirim saat ini. Tidak ada yang terkirim. Ini juga menjalankan pemeriksaan personalisasi yang sama seperti saat publikasi, sehingga konstruksi yang akan ditolak muncul di sini terlebih dahulu.
Ke mana arah template.
Builder visual dan pustaka awal berisi empat puluh template bawaan sudah tersedia, sehingga Anda bisa menyalin salah satunya ke workspace Anda dan mengedit dari sana. Berikutnya dalam daftar: deskripsikan template dalam prompt dan dapatkan draft untuk disempurnakan, antarmuka penyusunan yang lebih ringkas untuk agen, dan brand kit, yang akan menyimpan warna, tipografi, dan gaya bahasa Anda di level workspace dan menerapkan gaya pada template dari sana. Semuanya memperluas model berversi yang sama, sehingga apa yang Anda integrasikan hari ini adalah fondasi yang mereka bangun.
Pelajari lebih dalam di dokumentasi.
Panduan template mencakup draft, versi terpublikasi, konten per bahasa, dan aturan Liquid. Panduan pengiriman memuat kontrak sisi pengiriman, dan event email dan webhook mengalirkan data open dan click kembali.
Sisa platform Email
Satu API, satu set key. Jelajahi kapabilitas lainnya.
Template hadir bersama platform di sekitarnya.
Simpan, versikan, dan personalisasi template di Email API yang sama yang menangani pengiriman, deliverability, suppression, dan analitik. Satu set key.