Skip to content

Kontak & Opt-in

Broadcast ke segmen bekerja di atas daftar kontakmu. Halaman ini menjelaskan cara memasukkan kontak, memberinya tag, dan menandai izin menerima broadcast (opt-in).

Kenapa opt-in penting

Kontak yang belum opt-in tidak akan menerima broadcast segmen. Ini guardrail UU PDP (Perlindungan Data Pribadi): promosi massal hanya boleh ke orang yang sudah setuju menerimanya. Pesan transaksional satu-per-satu (/v1/messages/send) tidak terpengaruh aturan ini.

Kontak yang pernah menolak (opt-out) selalu dilewati, bahkan ketika filter opt-in dimatikan.

Impor CSV

Format per baris: nama,nomor (baris header opsional). Nomor dinormalkan otomatis ke format 62….

bash
curl -X POST https://waq.karyawah.id/v1/contacts/import-csv \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
    "csv": "Budi,081234567890\nAni,6285242411466",
    "tags": ["pelanggan-juli"],
    "broadcast_opt_in": true,
    "consent_acknowledged": true
  }'
FieldWajibKeterangan
csvyaIsi CSV mentah
tagstidakDipasang ke semua kontak hasil impor ini — dipakai sebagai segmen broadcast
broadcast_opt_intidaktrue = langsung ditandai boleh menerima broadcast
consent_acknowledgedjika opt-inWajib true — pernyataan bahwa kontak memang sudah memberi persetujuan

Balasan memuat jumlah yang masuk, duplikat, dan nomor tak valid:

json
{ "imported": 2, "dedup": 0, "invalid": 0, "tags": ["pelanggan-juli"], "broadcast_opt_in": true }

Beri tag sejak impor

Tanpa tag, satu-satunya cara menyasar kontak itu adalah "semua kontak". Tag membuat kamu bisa mengirim ke kelompok tertentu saja, mis. pelanggan-juli.

Mencari & memfilter kontak

bash
# cari nama / nomor / tag
curl -G https://waq.karyawah.id/v1/contacts \
  -H "Authorization: Bearer $TOKEN" \
  --data-urlencode 'q=62812' \
  --data-urlencode 'optIn=true' \
  --data-urlencode 'source=csv' \
  --data-urlencode 'page=1'
ParameterNilai
qKata kunci — dicocokkan ke nama, nomor, dan tag
optIntrue / false
sourcemanual, csv, group (alias group_sync)
pageHalaman, 50 kontak per halaman

Menandai opt-in

Satu kontak:

bash
curl -X PATCH https://waq.karyawah.id/v1/contacts/<contact_id> \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"broadcastOptIn": true}'

Banyak kontak sekaligus — pilih salah satu mode:

bash
# mode 1: daftar id tertentu
curl -X POST https://waq.karyawah.id/v1/contacts/bulk-opt-in \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"opt_in": true, "consent_acknowledged": true, "ids": ["<id1>", "<id2>"]}'

# mode 2: semua kontak yang cocok filter
curl -X POST https://waq.karyawah.id/v1/contacts/bulk-opt-in \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"opt_in": true, "consent_acknowledged": true, "all": true, "source": "csv"}'

Balasan: { "updated": 1937, "opt_in": true }.

Untuk menandai opt-out massal, kirim "opt_in": false (tanpa perlu consent_acknowledged). Waktu penolakan dicatat, dan kontak itu tak akan pernah ikut broadcast lagi.

Validasi nomor

Nomor yang tidak terdaftar di WhatsApp membuang kuota harian dan memperbesar risiko pemblokiran nomor pengirim. Periksa dulu sebelum broadcast besar:

bash
curl -X POST https://waq.karyawah.id/v1/contacts/validate \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"device_id": "<device_id>"}'

Pemeriksaan berjalan di latar belakang. Setelah selesai, hapus yang tidak valid:

bash
curl -X DELETE https://waq.karyawah.id/v1/contacts/invalid \
  -H "Authorization: Bearer $TOKEN"