> For the complete documentation index, see [llms.txt](https://docs.watzap.id/help/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.watzap.id/help/integrations/watzap-sdk/tips-sebelum-go-live.md).

# Tips Sebelum Go-Live

Hal-hal penting yang perlu diperhatikan sebelum integrasi WatZap SDK dipakai untuk pelanggan sungguhan.

Sebelum integrasi dipakai untuk pelanggan sungguhan, pastikan poin-poin berikut sudah Kamu perhatikan.

## Keamanan

* Simpan API Key di environment variable (misalnya file `.env`), bukan di dalam kode.
* Jalankan SDK hanya di server. SDK sengaja menolak berjalan di browser.
* Buat URL webhook yang sulit ditebak dan jangan dibagikan. Request webhook tidak ditandatangani, jadi cocokkan juga `phone_number_id` (WABA) atau `data.number_key` (Unofficial) di payload dengan milik Kamu.
* Payload webhook berisi data sensitif akun dan pelanggan. Jangan simpan payload mentah ke log yang bisa dibuka banyak orang, dan jangan teruskan apa adanya ke layanan pihak ketiga.

## WhatsApp Official (WABA)

* **Aturan 24 jam**: pesan teks, media, dan tombol hanya sampai ke pelanggan yang chat dalam 24 jam terakhir. Di luar itu, gunakan template. Baca [Memahami Aturan 24 Jam WhatsApp](/help/menu-marketing/mengenal-menu-marketing-1.md).
* Pesan di luar 24 jam biasanya tidak langsung error. Kirim tetap mengembalikan ID pesan, lalu statusnya berubah menjadi `failed`. Simpan ID pesan dan cek dengan `wz.whatsapp.messages.status(id)` untuk pesan yang penting.
* Pesan dikirim dari nomor WABA yang terhubung di akun. Saat ini nomor WABA pengirim belum bisa dipilih lewat SDK. Kalau akun punya lebih dari satu WABA, pastikan template yang dipakai ada di WABA nomor pengirim.
* Batas kirim per akun: 30 request per menit. Teks dan template dihitung bersama. Pesan interaktif (tombol, daftar, lokasi, kartu kontak) juga dihitung bersama. Gambar, dokumen, video, audio, dan reaksi masing-masing punya batas sendiri.
* Pesan tombol maksimal **3 tombol**, dengan judul maksimal **20 byte** per tombol (satu emoji dihitung 4 byte).
* Menghapus template lewat SDK akan menghapus **semua versi bahasa** template tersebut.

## WhatsApp Unofficial

* Tidak ada ID pesan maupun status terkirim/dibaca. Server tidak bisa membedakan pesan yang masih antre dengan yang sudah sampai.
* Batas kirim per nomor: 30 pesan teks per menit. Kirim gambar dan file sekitar 15 per menit.
* Nomor harus berstatus **Online** di tab **API**. Kalau terputus, kirim pesan gagal sampai nomor di-scan ulang.
* Ikuti [Tips Anti-Banned WhatsApp](/help/connect-to-whatsapp/tips-anti-banned-whatsapp.md) supaya nomor tetap aman.

## Broadcast dan webhook

* **Buat dan kirim broadcast dari dashboard**, bukan lewat SDK. Saat ini `wz.whatsapp.broadcasts` hanya berguna untuk **membaca** data broadcast.
* Untuk menerima pesan masuk, gunakan webhook per nomor: `wz.whatsapp.webhook(wabaId)` atau `device.webhook`. Fitur `wz.webhooks` (webhook per event) saat ini baru sebatas pendaftaran dan belum mengirim event.
* Webhook yang gagal diterima tidak dikirim ulang. Pastikan server Kamu selalu aktif dan menjawab dengan cepat.

## Kontak dan List

* `wz.contacts.upsert` **mengosongkan field yang tidak dikirim**. Selalu kirim semua field yang ingin dipertahankan, atau gunakan `wz.lists.subscribers.upsert` yang mempertahankan field lama.
* Status **opt-out hanya dicatat** dan tidak otomatis memblokir pengiriman. Cek sendiri sebelum mengirim pesan.
* `bulkUpsert` dan `sync` maksimal 500 data per panggilan. Prosesnya tidak dibatalkan seluruhnya bila gagal di tengah jalan: data yang sudah diproses tetap tersimpan.
* `sync` dengan opsi `markMissingInactive: true` menandai subscriber yang tidak ada di daftar kiriman sebagai `inactive`. Pastikan daftar yang dikirim sudah lengkap.

## Lain-lain

* Untuk melihat daftar nomor beserta statusnya, gunakan `wz.senders.list()`. Hindari `wz.account.checkKey()` untuk keperluan ini, karena setiap host yang diperiksa akan memakai satu slot domain API Key Kamu.
* Jangan membuat loop retry sendiri untuk kirim pesan. Lihat [Menangani Error](/help/integrations/watzap-sdk/menangani-error.md).
* Selalu uji dengan nomor HP sendiri sebelum mengirim ke pelanggan.
* Panduan ini untuk SDK versi **0.2.0**. Info versi terbaru ada di [halaman npm @watzapid/sdk](https://www.npmjs.com/package/@watzapid/sdk).
