Campaign WhatsApp
Campaign WhatsApp
Ringkasan
Modul Campaigns (/campaigns) memungkinkan supervisor merancang dan mengirim pesan broadcast WhatsApp berbasis template resmi yang sudah disetujui Meta. Berbeda dengan pesan percakapan biasa yang bebas bentuk, broadcast WhatsApp di luar jendela 24 jam layanan hanya boleh menggunakan template terdaftar — karena itu halaman ini terbagi jadi dua tab: Templates (sinkron dari Meta) dan Campaigns (perencanaan eksekusi).
Pengiriman sebenarnya dijalankan oleh scheduler backend yang mem-polling tabel campaigns setiap 30 detik untuk menemukan kampanye dengan status = 'scheduled' yang waktunya sudah tiba. Pesan keluar dihasilkan satu per satu, di-publish ke topik Kafka channel.outbound.job, lalu dikirim oleh message-sender (modul crates/message-sender/src/whatsapp.rs) ke Meta Graph API.
Hak akses: Kampanye hanya dapat dikelola oleh supervisor dan admin. Untuk mengirim kampanye, peran harus memiliki flag can_broadcast = true pada record agent-nya.
Alur kerja kampanye
Code
Langkah-langkah: mengirim kampanye baru
1. Siapkan template
- Buka
/campaigns, klik tab Templates. - Klik tombol Sync from Meta untuk menarik semua template WhatsApp Business yang sudah disetujui Meta ke database OmniStream. Endpoint yang dipanggil:
POST /api/wa-templates/sync(tag WA Templates). - Pastikan template yang ingin dipakai berstatus APPROVED dan memiliki
category(UTILITY, MARKETING, AUTHENTICATION).
Jangan gunakan template yang masih PENDING atau REJECTED — Meta akan mengembalikan error saat pengiriman dan seluruh kampanye bisa gagal.
2. Buat campaign
- Di tab Campaigns, klik + New Campaign.
- Isi form:
- Name (wajib) — nama internal, mis.
Promo Lebaran 2026 - WhatsApp VIP - Template — pilih template dari daftar hasil sync
- Name (wajib) — nama internal, mis.
- (Opsional) Aktifkan Schedule dan pilih tanggal + jam pengiriman. Tanpa jadwal, kampanye tetap berstatus
drafthingga Anda klik Send Now. - Klik Create. Campaign tercipta dengan status
draft.
3. Tambah penerima
Ada 4 cara menambah penerima:
| Mode | Cara kerja |
|---|---|
| Contacts | Pilih kontak yang sudah ada di database |
| Tags | Semua kontak yang memiliki tag tertentu (mis. vip, newsletter) |
| Manual | Input nomor telepon secara manual, satu per baris |
| CSV | Upload file CSV dengan kolom phone + variabel template |
Setiap mode akhirnya memanggil POST /api/campaigns/{id}/recipients dengan payload yang sesuai. Jika template mengandung variabel ({{1}}, {{2}}), Anda wajib memetakan nilai per kontak pada langkah ini.
4. Review dan kirim
- Klik tab Review di modal campaign.
- Periksa:
- Jumlah total penerima
- Preview WhatsApp lengkap dengan format (bold
*text*, italic_text_, strikethrough~text~) - Ringkasan jadwal (jika ada)
- Klik Send Now untuk pengiriman langsung, atau biarkan scheduler yang menanganinya pada waktu yang dijadwalkan.

Memantau campaign yang sedang berjalan
- Di tab Campaigns, klik baris campaign untuk melihat detail.
- Panel detail menampilkan:
- Status keseluruhan:
draft,scheduled,sending,completed,failed,cancelled - Progress:
X of Y sent(live update) - Recipients breakdown: queued / sent / delivered / read / failed
- Status keseluruhan:
- Untuk menghentikan kampanye yang sedang berjalan, klik Cancel Campaign. Hanya penerima yang belum diproses yang akan di-skip; yang sudah terkirim tidak bisa ditarik.
Endpoint (tag Campaigns)
| Aksi | Endpoint |
|---|---|
| List campaign | GET /api/campaigns |
| Detail campaign | GET /api/campaigns/{id} |
| Buat campaign | POST /api/campaigns |
| Update campaign | PUT /api/campaigns/{id} |
| Cancel campaign | POST /api/campaigns/{id}/cancel |
| Kirim sekarang | POST /api/campaigns/{id}/send |
| Tambah penerima | POST /api/campaigns/{id}/recipients |
| List penerima | GET /api/campaigns/{id}/recipients |
Endpoint lengkap di API Reference — Campaigns dan API Reference — WA Templates.
Praktik terbaik
- Test dengan 1 penerima dulu — kirim ke nomor internal sebelum blast ke ribuan kontak.
- Gunakan kategori template yang tepat — jangan pakai MARKETING untuk pesan layanan; Meta akan menurunkan kualitas pengiriman.
- Patuhi jam operasional — broadcast di luar jam biasanya berdampak negatif pada response rate dan meningkatkan opt-out.
- Monitor failed recipients — nomor yang gagal berulang kali sebaiknya dihapus dari daftar kontak untuk melindungi sender score.
- Cek metric di Analytics — lonjakan pesan harian biasanya mencerminkan kampanye baru.
Rute terkait
- Dashboard Supervisor — pantau volume pesan saat kampanye aktif
- Analytics — lihat tren pesan per hari