Membuat template WhatsApp
Katalog terkelola Bird mencakup kasus-kasus umum, tetapi template yang menggunakan kata-kata Anda sendiri harus dibuat di WhatsApp Business Account yang sudah Anda hubungkan. Halaman ini membahas cara membuatnya; Template WhatsApp membahas cara menelusuri dan mengirim template yang sudah ada.
Tiga hal membentuk keseluruhan alur:
- Sebuah template menyimpan versi, dan sebuah versi menyimpan satu entri per bahasa. Yang benar-benar terkirim adalah bahasa dari sebuah versi, bukan template itu sendiri.
- Konten ditulis ke draf. Sebuah template memiliki paling banyak satu draf terbuka, dan tidak ada isinya yang sampai ke WhatsApp sampai Anda mengajukannya.
- Persetujuan diberikan per bahasa. Satu bahasa bisa disetujui sementara bahasa lain pada versi yang sama ditolak.
Sebelum Anda mulai
Anda memerlukan nomor milik Anda sendiri yang sudah terhubung, karena itulah yang memberikan workspace Anda WhatsApp Business Account untuk membuat template. Akun yang belum Anda hubungkan akan ditolak, begitu juga mengedit template bird_ bawaan Bird: template tersebut berada di akun milik Bird, jadi duplikasi ke akun Anda sebagai gantinya.
Membuat template authentication juga memerlukan bisnis terverifikasi; utility dan marketing tidak. Lihat Authentication templates untuk persyaratan tersebut.
Buat template di dashboard melalui WhatsApp > Templates, dengan bird CLI, atau melalui server MCP. Dashboard mengikuti langkah-langkah yang sama seperti yang dijelaskan di halaman ini; contoh-contoh di bawah menggunakan CLI.
Di dashboard
New template menawarkan dua cara. Start with a template membuka galeri, rute tercepat: pilih template yang sudah hampir sesuai kebutuhan Anda, termasuk milik Bird, dan salinannya masuk ke akun Anda sebagai draf terbuka.

Start from scratch meminta kategori, nama, dan bahasa default sebelum membuka editor. Template marketing juga memilih tipe pesan. Nama menjadi slug, dan slug serta kategori adalah dua pilihan yang tidak bisa diubah setelahnya.

Editor menulis satu bahasa pada satu waktu: sidebar mencantumkan bahasa-bahasa template beserta status peninjauan masing-masing, kolom tengah berisi konten, dan pratinjau ponsel merender pesan dengan nilai contoh yang disubstitusi.

Editor berubah bentuk sesuai template. Carousel menambahkan tab per kartu di samping pesan, dan setiap kartu harus mengulang struktur kartu 1: format header yang sama dan tombol yang sama dalam urutan yang sama.

Template authentication tidak memiliki editor pesan. WhatsApp menulis teksnya, jadi editor hanya menawarkan dua pengaturan yang digunakannya: Add security recommendation dan Code expiration (minutes).

Save as draft menyimpan pekerjaan Anda tanpa menghubungi WhatsApp. Submit for review membekukan versi dan mengirimnya ke WhatsApp. Submit melalui CLI, di bawah, melakukan pembekuan yang sama.
Dua cara untuk memulai
Duplikasi template yang sudah ada
Duplikasi membawa konten sumber sebagai draf terbuka dan tidak memanggil WhatsApp sama sekali, jadi tidak ada yang diajukan sampai Anda memilih untuk melakukannya. Dua hal tentang salinan yang perlu Anda ketahui sebelum membuatnya:
- Kategori diwariskan dan tidak bisa diubah. Jika Anda memerlukan kategori berbeda, mulai dari awal.
- Anda bisa mempersempit bahasa, tidak bisa menambahkannya. Template katalog dengan 70 bahasa tidak harus menjadi 70 bahasa milik Anda: pilih subset yang benar-benar akan Anda kelola. Meminta bahasa yang tidak dimiliki sumber ditolak dengan E15060, dan respons menyebutkan bahasa mana yang tidak cocok. Tambahkan bahasa lain ke salinan setelahnya.
Subset bahasa berupa array, jadi dikirim di body request, bukan sebagai flag:
Contoh kode
bird whatsapp templates duplicate bird_order_confirmation --body-file copy.jsonContoh kode
{
"waba": "102290129340398",
"slug": "acme_order_update",
"include_languages": ["en", "es-ES"],
"default_language": "en"
}Jika include_languages dihilangkan, salinan mengambil semua bahasa dari sumber. Jika default_language dihilangkan, salinan mempertahankan bahasa default sumber jika subset Anda masih memuatnya; jika tidak, salinan mengambil bahasa pertama berdasarkan tag kanonik, yang belum tentu bahasa pertama yang Anda cantumkan, jadi tetapkan secara eksplisit jika itu penting.
Mulai dari awal
Membuat template memerlukan slug, akun, kategori, dan bahasa default:
Contoh kode
bird whatsapp templates create order_update \
--waba 102290129340398 \
--category utility \
--default-language enSlug dan kategori keduanya permanen. WhatsApp membentuk nama template-nya sendiri dari slug, dan baik nama tersebut maupun kategori tidak bisa diubah setelahnya; pilihan berbeda memerlukan template baru. Prefiks bird_ dicadangkan untuk katalog Bird. Kategori yang Anda pilih belum tentu menentukan tarif pengiriman: Meta menetapkan kategorinya sendiri per bahasa dan dapat mengubahnya, dan tarif mengikuti kategori yang ditetapkan Meta.
Menulis setiap bahasa
Buka draf, lalu tulis satu bahasa pada satu waktu:
Contoh kode
bird whatsapp templates versions create order_update
bird whatsapp templates versions languages set order_update <version-id> en --body-file en.jsonMembuka draf aman untuk diulang: sebuah template hanya memiliki satu, jadi ini mengembalikan draf yang terbuka alih-alih membuat yang kedua. Template juga melaporkannya sebagai draft_version_id.
Penulisan bahasa menggantikan bahasa tersebut, bukan menggabungkan ke dalamnya. File membawa components lengkap bahasa tersebut setiap kali, jadi baca bahasa terlebih dahulu dan tulis kembali secara utuh; mengirim hanya blok yang Anda ubah akan menghapus sisanya.
Setiap variabel memerlukan nilai contoh. WhatsApp meninjau pesan yang sudah diisi, bukan template, jadi blok dengan placeholder tanpa parameter contoh ditolak saat pengajuan, bukan saat penulisan.
Periksa, lalu ajukan
Validasi sebelum Anda membekukan apa pun. Pengajuan validasi saja menjalankan setiap pemeriksaan di semua bahasa dan melaporkan setiap masalah dalam satu kali proses, tanpa mengirim apa pun ke WhatsApp:
Contoh kode
bird whatsapp templates versions submit order_update <version-id> --validate-onlyBaca valid dan errors; setiap kesalahan menyebutkan bahasa, kolom, dan kode kesalahan yang akan muncul jika pengajuan sebenarnya gagal. Lalu lakukan pengajuan sebenarnya dengan menghapus flag tersebut. Tindakan ini membekukan draf sebagai versi yang tidak bisa diubah dan mengembalikan 202. Gunakan kunci idempotensi yang berbeda untuk pemeriksaan dan pengajuan, karena menggunakan ulang satu kunci dengan body yang berubah akan ditolak.
Hanya bahasa yang kontennya berbeda dari salinan yang disetujui yang dikirim ke WhatsApp. Untuk bahasa yang sudah cocok, persetujuan sebelumnya tetap berlaku, jadi pengajuan tanpa perubahan langsung selesai tanpa perlu polling. Tidak ada draf pengganti yang terbuka setelahnya: putaran edit berikutnya dimulai dengan membuat draf lagi.
Proses validasi saja yang bersih tidak memprediksi keputusan WhatsApp. WhatsApp tidak menyediakan cara untuk bertanya di muka, jadi konten yang lolos setiap pemeriksaan lokal tetap bisa ditolak.
Memantau peninjauan
Persetujuan datang kemudian dan per bahasa. pending_version_id template tetap aktif selama ada bahasa yang belum terselesaikan, dan daftar per bahasa membawa setiap keputusan:
- Bahasa berstatus approved dapat digunakan untuk mengirim pesan. available_languages pada template memuat tepat daftar bahasa yang dapat dipilih untuk pengiriman saat ini.
- rejected, submit_failed, paused memerlukan edit pada draf baru. WhatsApp menerima edit pada bahasa yang dijeda, dan pengajuan ulang mengakhiri penjedaan tersebut.
- disabled, limit_exceeded, in_appeal menolak edit secara langsung; baca ulang statusnya sampai WhatsApp mengubah status tersebut.
status template itu sendiri adalah agregat: active berarti setidaknya satu bahasa bisa dikirim, bukan semuanya.
Mengirim template yang Anda buat
Template yang Anda buat dikirim melalui endpoint yang sama seperti template lainnya, dengan satu perbedaan dari katalog Bird: Anda harus menyebutkan from, dan nomor tersebut harus berada di WhatsApp Business Account yang sama dengan template. Pengirim di akun berbeda ditolak 422 E15023 sebelum ada biaya yang dikenakan.
Sebuah template bisa mewajibkan bahasa penerima melalui language_source_required. Jika tidak, on_missing_language mengontrol apakah resolusi gagal atau bisa menggunakan bahasa dasar yang disetujui atau default_language. Uji kebijakan yang dikonfigurasi terhadap available_languages yang disetujui pada template; default yang belum disetujui tidak bisa dikirim. Nilai yang Anda berikan harus mengisi placeholder bahasa mana pun yang benar-benar ter-resolve, jadi baca konten bahasa tersebut sebelum mengirim. Lihat Mengirim pesan WhatsApp untuk payload lengkapnya.
Hal-hal yang perlu diperhatikan
- Versi terbaru bukan yang dikirim. Daftar versi diurutkan dari yang terbaru dan menyertakan draf terbuka, jadi baris teratas sering kali berupa draf atau versi yang masih dalam peninjauan. Template menyebutkan versi yang aktif sebagai live_version_id; template tanpa versi aktif sama sekali tidak bisa dikirim.
- Bahasa yang sedang ditinjau menolak penulisan. WhatsApp menahannya sampai peninjauan selesai, jadi edit selama pending gagal alih-alih diantrikan.
- Baris daftar tidak memuat konten. Listing template menemukan template dan menampilkan status siklus hidupnya; membaca isi sebenarnya memerlukan pembacaan versi.
- Penghapusan tidak bisa dibatalkan. Membuang bahasa, menghapus draf, dan menghapus template semuanya memerlukan konfirmasi eksplisit, dan menghapus template menghentikan semua pengiriman dengan slug tersebut.
Langkah berikutnya
- Template WhatsApp: katalog, kategori, dan kontrak pengiriman berbasis template bersama
- Pedoman template: hal yang dicari peninjauan Meta
- Penyiapan nomor telepon: menghubungkan akun tempat Anda membuat template
- Mengirim pesan WhatsApp: payload pengiriman lengkap
- Membuat dan mengirimkan template WhatsApp: video yang membuat template utility dan carousel marketing
Sumber daya terkait
Lanjutkan dengan dokumentasi, panduan, dan contoh untuk topik ini. Sumber daya tersedia dalam bahasa Inggris.
Pahami konsepnyaWhat is a WhatsApp message template?Jelajahi kemampuannyaWhatsApp templatesIkuti jalur pembelajaranBuild your first integration
Coba praktiknya dan dapatkan ringkasan implementasi