Blast tanpa
bikin paranoid
Template-based, CSV per-row variables, quota refund kalau pre-flight gagal, fairness gate biar tidak monopolize worker. Resume yang fail tanpa double-send.
Pilih audience sesuai kebutuhan
Empat cara select penerima — sederhana sampai bulk CSV dengan per-row personalization.
All contacts
Semua kontak di akun. Bisa exclude list tertentu (excludeIds).
Selected contacts
Explicit list contactIds[], max 10,000. Cocok untuk segmented campaign.
By labels
labelIds[] — semua kontak yang punya minimal satu label dari list. Max 1,000 labels.
CSV upload
Max 10,000 rows dengan per-row variable mapping. Materialized at create — immediate count + rejection summary.
Personalization per-row
Variable mapping positional — {{1}}, {{2}}, dst di template Meta di-isi dari array body sesuai urutan. Set di level broadcast (global) atau override per-row di CSV.
Validasi template otomatis: variables di body, header, button — semua di-check vs Meta-approved template sebelum broadcast jalan.
- Per-row overrides — masing-masing penerima dapet pesan yang relevan
- Pre-flight template validation — tidak ada surprise saat run
- Rejection summary di-return sync saat create
// Upload CSV langsung di dashboard, atau via API.
// Variables positional — {{1}} = body[0].text, dst.
{
"name": "Promo Lebaran 2026",
"templateId": "tpl_promo_lebaran",
"recipients": {
"type": "csv",
"csvRows": [
{
"phone": "+628123456789",
"variables": {
"body": [
{ "type": "text", "text": "Pak Budi" },
{ "type": "text", "text": "20%" }
]
}
},
// up to 10,000 rows...
]
}
} Bikin operator tidur nyenyak
Resume failed broadcasts
POST /broadcasts/:id/resume skip kontak yang sudah berhasil ke-send. Tidak ada double-send.
Fairness gate
Per-org concurrent broadcast cap — satu org tidak bisa monopolize worker. Stateless re-evaluation.
Quota auto-refund
Quota di-charge speculatively saat POST. Kalau pre-flight gagal (template missing, account error), quota otomatis di-refund.
Marketing opt-out
Otomatis hormati kontak yang opt-out marketing. Compliance dengan Meta policy out-of-the-box.
Status tracking
Parent broadcast + per-recipient message — lihat penuh siapa sudah delivered, read, atau failed.
Pre-send eligibility check
Validasi compliance status akun + template approval sebelum job jalan.
Status lifecycle yang jelas
Dua level tracking: parent broadcast dan per-recipient message. Operator selalu tahu posisi blast sekarang dan recipient mana yang perlu di-retry.
Visible di dashboard, accessible via API, juga di-push lewat message.status webhook event.
// Parent broadcast lifecycle
draft → scheduled → running → completed
↘ failed
↘ cancelled
// Per-recipient message lifecycle
pending → queued → sent → delivered → read
↘ failed /v1. Untuk bulk-send via SDK / public API, loop POST /v1/{phone}/messages dengan template payload + idempotency key (auto-set oleh SDK). Schedule field tersedia tapi belum auto-execute — operator klik Send untuk run.
Blast pertama Anda dalam 10 menit
Upload CSV, pilih template, klik Send. Sisanya kami yang urus.