Buat Template WhatsApp yang Siap Ditinjau Meta
Buat template Marketing, Utilitas, dan Autentikasi dengan pratinjau ponsel langsung, contoh untuk setiap variabel, dan pemeriksaan kesalahan umum sebelum Anda mengirimkannya. Meta meninjau setiap template; setelah disetujui, kirim dari kampanye, kotak masuk, alur chatbot, atau REST API.
✦ Uji coba gratis 14 hari · Nomor WhatsApp Business Anda sendiri · Meta menagih pesan secara langsung
Semua Jenis Template, dalam 16 Bahasa
Pilih kategori (Marketing, Utilitas, atau Autentikasi) dan jenis: standar, penawaran waktu terbatas (judul penawaran dan hitung mundur opsional hingga penawaran berakhir), autentikasi (pesan kata sandi sekali pakai dengan tombol salin kode dan masa berlaku opsional), atau carousel (2 hingga 10 kartu, masing-masing dengan gambar atau videonya sendiri, teks kartu opsional hingga 160 karakter, dan hingga 2 tombol). Tambahkan header (tanpa header, teks, gambar, video, dokumen, atau lokasi), isi hingga 1.024 karakter dengan variabel bernomor {{1}} atau bernama {{name}}, serta footer. Meta mempertahankan gaya variabel setelah template dibuat. Tulis dalam salah satu dari 16 bahasa, mulai dari Inggris, Hindi, Arab, Portugis (BR), Spanyol, dan Indonesia hingga Tamil, Bengali, dan lainnya.
- Jenis standar, penawaran waktu terbatas, autentikasi, dan carousel
- Header teks, gambar, video, dokumen, atau lokasi
- Pratinjau ponsel langsung saat Anda mengetik
Bantuan Sebelum dan Sesudah Ditinjau Meta
Mulai dari galeri contoh atau template kosong. Pembuat template meminta nilai contoh untuk setiap variabel, menandai isi yang diawali atau diakhiri variabel, dan memperingatkan jika template Marketing tidak memiliki baris berhenti berlangganan seperti "Balas STOP untuk berhenti". Jika Meta menolak template, Anda melihat alasannya dijelaskan dengan bahasa sederhana dan dapat memperbaiki lalu mengirim ulang. Jika Meta memindahkan template ke kategori lain, pemberitahuan akan muncul, karena kategori menentukan biaya dari Meta. Siapa pun di tim dapat menandai pemberitahuan itu sudah dibaca untuk semua orang. Jika Meta menjeda template karena pelanggan memblokir atau melaporkannya, Anda bisa meminta Meta mengaktifkannya kembali dari halaman template.
- Galeri contoh untuk Utilitas, Marketing, dan Autentikasi
- Alasan penolakan dijelaskan, lalu kirim ulang
- Insight Meta per template: terkirim, diterima, dibaca, dan klik tombol (paket Business)
Hingga 10 Tombol dan Semua Pendukungnya
Beri pelanggan cara untuk bertindak, lalu lihat apa yang mereka lakukan.
-
Tombol Balasan dan Tautan
Balasan cepat, tombol URL dengan tautan statis atau dinamis, tombol nomor telepon, serta tombol panggilan suara atau video WhatsApp.
-
Tombol Belanja dan Kupon
Salin kode untuk kupon (hingga 15 karakter, batas WhatsApp) dan kata sandi sekali pakai, tombol katalog dan multi-produk yang membuka katalog produk Meta Anda, serta permintaan info kontak.
-
Tombol Formulir WhatsApp
Lampirkan Formulir WhatsApp (Meta Flow) yang disinkronkan dari Meta ke tombol Flow. Jawaban kembali sebagai kolom terstruktur di kotak masuk, API, dan webhook.
-
Pemeriksaan Sebelum Mengirim
Contoh wajib untuk setiap variabel, tidak ada variabel di awal atau akhir isi, dan peringatan berhenti berlangganan pada template Marketing.
-
Wawasan per Template
Lihat berapa pesan yang terkirim, diterima, dan dibaca, serta tombol mana yang diketuk pelanggan, untuk setiap template. Angka Meta sendiri untuk setiap template tersedia di paket Business.
-
Panel Kirim via API
Setiap template menunjukkan parameter yang dibutuhkan dan permintaan yang bisa Anda salin. Webhook template.status_updated memberi tahu saat Meta menyetujui, menolak, atau menjeda template.
Template Marketing vs. Utilitas vs. Autentikasi
Meta menetapkan harga per kategori dan menagihkannya langsung ke Akun WhatsApp Business Anda sendiri. StartMessaging tidak pernah menagih per pesan.
| Bandingkan | Marketing | Utilitas | Autentikasi |
|---|---|---|---|
| Gunakan untuk | Promosi, penawaran, pengumuman, keterlibatan ulang | Pembaruan atas hal yang dimulai pelanggan: pesanan, pemesanan, pembayaran, peringatan akun | Kata sandi sekali pakai dan kode masuk |
| Ditagih Meta ke WABA Anda | Setiap pesan yang diterima | Setiap pesan yang terkirim, termasuk di dalam jendela 24 jam yang terbuka (sejak 1 Oktober 2026) | Setiap pesan yang diterima |
| Jenis template umum | Standar, penawaran waktu terbatas, carousel | Standar | Autentikasi (salin kode, masa berlaku opsional) |
| Siapa yang menulis isi | Anda | Anda | Meta (teks kode tetap, peringatan keamanan opsional) |
| Baris berhenti berlangganan | Pembuat template memperingatkan jika tidak ada | Tidak diperiksa | Tidak diperiksa |
Periksa apakah template sudah disetujui, lalu kirim
Template dibuat di dasbor dan hanya dapat dibaca melalui API: daftarkan dengan GET /api/v1/templates dan kirim yang disetujui dengan POST /api/v1/messages.
# 1. Check that the template is approved
curl "https://waba-api.startmessaging.com/api/v1/templates?status=APPROVED&name=order_confirmation&language=en_US" \
-H "Authorization: Bearer sm_live_your_api_key"
# 2. Send it (body: "Hi {{1}}, your order {{2}} is confirmed.")
curl -X POST https://waba-api.startmessaging.com/api/v1/messages \
-H "Authorization: Bearer sm_live_your_api_key" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1042-confirmed" \
-d '{
"to": "+919812345678",
"type": "template",
"template": {
"name": "order_confirmation",
"language": "en_US",
"parameters": [
{ "text": "Asha" },
{ "text": "#1042" }
]
},
"clientReference": "order-1042"
}' const BASE = 'https://waba-api.startmessaging.com/api/v1';
const headers = {
'Authorization': 'Bearer ' + process.env.SM_API_KEY, // sm_live_your_api_key
'Content-Type': 'application/json',
};
// 1. Check that the template is approved (needs the templates:read scope)
const list = await fetch(
`${BASE}/templates?status=APPROVED&name=order_confirmation&language=en_US`,
{ headers },
);
const { data: templates } = await list.json();
if (templates.items.length === 0) throw new Error('order_confirmation is not approved yet');
// 2. Send it (needs the messages:send scope)
const res = await fetch(`${BASE}/messages`, {
method: 'POST',
headers: { ...headers, 'Idempotency-Key': 'order-1042-confirmed' },
body: JSON.stringify({
to: '+919812345678',
type: 'template',
template: {
name: 'order_confirmation',
language: 'en_US',
parameters: [{ text: 'Asha' }, { text: '#1042' }],
},
clientReference: 'order-1042',
}),
});
const { data } = await res.json();
console.log(data.id, data.status); import os, requests
BASE = 'https://waba-api.startmessaging.com/api/v1'
HEADERS = {'Authorization': f"Bearer {os.environ['SM_API_KEY']}"} # sm_live_your_api_key
# 1. Check that the template is approved
templates = requests.get(
f'{BASE}/templates',
headers=HEADERS,
params={'status': 'APPROVED', 'name': 'order_confirmation', 'language': 'en_US'},
).json()['data']
if not templates['items']:
raise RuntimeError('order_confirmation is not approved yet')
# 2. Send it
res = requests.post(
f'{BASE}/messages',
headers={**HEADERS, 'Idempotency-Key': 'order-1042-confirmed'},
json={
'to': '+919812345678',
'type': 'template',
'template': {
'name': 'order_confirmation',
'language': 'en_US',
'parameters': [{'text': 'Asha'}, {'text': '#1042'}],
},
'clientReference': 'order-1042',
},
)
data = res.json()['data']
print(data['id'], data['status']) <?php
$base = 'https://waba-api.startmessaging.com/api/v1';
$auth = 'Authorization: Bearer ' . getenv('SM_API_KEY'); // sm_live_your_api_key
// 1. Check that the template is approved
$ch = curl_init($base . '/templates?status=APPROVED&name=order_confirmation&language=en_US');
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [$auth]]);
$templates = json_decode(curl_exec($ch), true)['data'];
if (count($templates['items']) === 0) {
exit('order_confirmation is not approved yet');
}
// 2. Send it
$body = json_encode([
'to' => '+919812345678',
'type' => 'template',
'template' => [
'name' => 'order_confirmation',
'language' => 'en_US',
'parameters' => [['text' => 'Asha'], ['text' => '#1042']],
],
'clientReference' => 'order-1042',
]);
$ch = curl_init($base . '/messages');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
$auth,
'Content-Type: application/json',
'Idempotency-Key: order-1042-confirmed',
],
CURLOPT_POSTFIELDS => $body,
]);
$data = json_decode(curl_exec($ch), true)['data'];
echo $data['id'] . ' ' . $data['status']; # A carousel template: body "Hi {{1}}, picks for you", each card with text "{{1}}"
# and a link button whose URL ends in a variable. Send every card, in order,
# each with its image or video.
curl -X POST https://waba-api.startmessaging.com/api/v1/messages \
-H "Authorization: Bearer sm_live_your_api_key" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: festive-picks-919812345678" \
-d '{
"to": "+919812345678",
"type": "template",
"template": {
"name": "festive_picks",
"language": "en",
"parameters": [{ "text": "Asha" }],
"carouselCards": [
{
"headerMediaUrl": "https://cdn.example.com/products/kurta-blue.jpg",
"parameters": [{ "text": "₹1,299" }],
"buttonParameters": [{ "index": 0, "subType": "url", "text": "kurta-blue" }]
},
{
"headerMediaUrl": "https://cdn.example.com/products/kurta-red.jpg",
"parameters": [{ "text": "₹1,499" }],
"buttonParameters": [{ "index": 0, "subType": "url", "text": "kurta-red" }]
}
]
}
}' Template WhatsApp — FAQ
Berapa lama Meta meninjau template?
Meta meninjau setiap template dan menentukan waktu peninjauan; StartMessaging tidak menyetujui template. Template tetap Tertunda sampai Meta memutuskan. Berlangganan webhook template.status_updated, atau pantau halaman Template, untuk tahu saat statusnya berubah.
Apa yang terjadi jika Meta menolak template saya?
Halaman template menampilkan alasan dari Meta, dijelaskan dengan bahasa sederhana. Perbaiki penyebabnya lalu simpan untuk mengirim ulang template ke Meta, atau duplikat dan mulai dari awal.
Siapa yang membayar pesan template?
Meta menagih setiap template yang terkirim, sesuai kategorinya, langsung ke Akun WhatsApp Business (WABA) Anda sendiri. Sejak 1 Oktober 2026 hal ini termasuk template utilitas yang dikirim di dalam jendela 24 jam yang terbuka. Balasan layanan bebas format gratis hingga kuota bulanan per nomor, lalu dikenakan biaya. StartMessaging menagih langganan tetap dan tidak pernah menambahkan biaya per pesan.
Mengapa Meta mengubah kategori template saya?
Meta dapat memindahkan template yang disetujui antara Utilitas dan Marketing jika isinya terlihat promosi, yang mengubah biaya setiap pesan. StartMessaging menampilkan pemberitahuan di halaman Template saat hal ini terjadi atau dijadwalkan, dan API selalu mengembalikan kategori Meta saat ini. Siapa pun di tim dapat menandai pemberitahuan sudah dibaca, sehingga tersembunyi untuk semua orang hingga perubahan berikutnya.
Bisakah saya membuat template melalui API?
Tidak. Template dibuat dan diajukan di dasbor, tempat contoh dan media diperiksa sebelum sampai ke Meta. API menampilkan daftar template (GET /api/v1/templates, scope templates:read) dan mengirim yang disetujui dengan POST /api/v1/messages, termasuk carousel dan penawaran waktu terbatas: carousel memakai template.carouselCards, satu entri per kartu sesuai urutan, masing-masing dengan gambar atau videonya di setiap pengiriman; penawaran waktu terbatas dengan hitung mundur memakai template.offerExpiresAt, waktu berakhirnya penawaran. Template dengan header lokasi belum bisa dikirim melalui API.
Dalam bahasa apa saya bisa membuat template?
16: Inggris (AS), Inggris (Inggris Raya), Hindi, Arab, Portugis (BR), Spanyol, Indonesia, Melayu, Tamil, Telugu, Kannada, Malayalam, Marathi, Bengali, Gujarati, dan Punjabi. Nama template ada sekali per bahasa, jadi saat mengirim melalui API Anda mengirim nama dan kode bahasa yang tepat bersama-sama.
Bisakah saya mengubah template dari variabel bernomor ke bernama atau sebaliknya?
Tidak pada template yang sama. Meta mempertahankan gaya variabel template — bernomor {{1}} atau bernama {{first_name}} — setelah template dibuat. Untuk menggantinya, duplikasi template dan tulis salinannya dengan gaya lain; template asli tetap berfungsi selama Meta meninjau salinannya. Jika Meta mendaftarkan template tanpa variabelnya, template itu tidak bisa dikirim sampai Anda memperbaiki atau menduplikasinya.
Apa yang terjadi saat Meta menjeda template?
Meta menjeda template saat pelanggan memblokir atau melaporkannya. Template tampil sebagai Dijeda, kampanye yang memakainya juga dijeda, dan kampanye berlanjut sendiri saat Meta melepas template tersebut, kecuali kualitasnya masih rendah. Anda juga bisa meminta Meta mengaktifkannya kembali dari halaman template; template tampil sebagai Disetujui setelah Meta mengonfirmasi. Template yang dinonaktifkan Meta setelah berulang kali dijeda tidak akan kembali.
Buat Template WhatsApp Pertama Anda
Hubungkan Akun WhatsApp Business Anda sendiri, mulai dari contoh, dan ajukan ke Meta selama uji coba gratis 14 hari.