Wazent← Kembali ke beranda

Dokumentasi Wazent

Wazent adalah Team Inbox WhatsApp untuk bisnis dengan banyak nomor, banyak cabang, dan banyak CS: semua chat masuk ke satu dashboard, terbagi rapi antar admin, riwayatnya tersimpan, dan mutu layanan tim terpantau — berjalan di atas WhatsApp Business API resmi dari Meta.

Panduan di bawah dibagi dua: Bagian 1 untuk memakai Wazent sehari-hari, dan Bagian 2 untuk tim teknis yang ingin menyambungkan sistem sendiri lewat API — opsional, tidak perlu dibaca kalau Anda hanya memakai dashboard.

Bagian 1 — Panduan produk
1. Mulai cepat2. Inbox — kerja harian CS3. Window 24 jam & template4. Tim, peran & cabang5. Bot otomatis & Flows6. Broadcast7. Kontak & izin8. Pemantauan, kesehatan & audit9. Langganan & kuota
Bagian 2 — Integrasi (opsional)
A. Kirim pesan (API)B. Terima pesan (Webhook)

1. Mulai cepat

Empat langkah ini juga muncul sebagai daftar centang di halaman depan dashboard Anda, dan hilang sendiri begitu semuanya beres.

  1. Hubungkan WhatsApp. Sambungkan nomor WhatsApp Business Anda lewat jendela resmi Meta di halaman Hubungkan WhatsApp. Nomor tetap milik Anda — Wazent tidak memindahkannya.
  2. Aktifkan langganan. Pilih paket di halaman Langgananagar tim bisa mengirim & membalas pesan.
  3. Undang tim CS. Buat akun untuk CS/agen di halaman Tim, atur perannya dan cabang mana yang boleh mereka tangani.
  4. Kirim pesan uji. Kirim satu pesan ke nomor Anda sendiri untuk membuktikan sambungan sudah jalan.

2. Inbox — kerja harian CS

Inbox adalah tempat tim Anda bekerja setiap hari. Semua percakapan dari semua nomor dan semua cabang masuk ke satu layar — tak perlu lagi berpindah HP atau browser.

2.1 Pembagian chat — anti balasan dobel

Tiap percakapan menunjukkan siapa yang menanganinya: "Belum ditangani" atau "Dipegang [nama CS]". CS bisa mengambil percakapan, dan supervisor bisa menugaskannya ke anggota lain. Rekan satu tim melihat status yang sama, sehingga dua orang tidak membalas chat yang sama.

2.2 Membalas

  • Balasan teks biasa.
  • Foto, video, dokumen, dan pesan suara — dikirim maupun diterima.
  • Balasan Cepat — jawaban yang sering dipakai, disiapkan sekali lalu dipilih dari composer. Dikelola supervisor di Balasan Cepat, tapi tombolnya tersedia untuk semua CS.
  • Pesan interaktif — kirim pilihan bertombol supaya pelanggan tinggal menekan, bukan mengetik.
  • Flow — kirim formulir interaktif WhatsApp (lihat bagian Bot otomatis & Flows).
  • Template — dipakai saat window 24 jam tutup (lihat bagian berikutnya).

2.3 Hal lain yang perlu diketahui

  • Pesan masuk muncul otomatis tanpa perlu menyegarkan halaman.
  • Riwayat percakapan tersimpan dan tetap bisa dibuka serta diekspor walau langganan sedang tidak aktif.
  • Chat baru bisa dikirim sebagai notifikasi ke Telegram tiap CS — lihat bagian 8.

3. Window 24 jam & template

Ini aturan Meta, bukan batasan Wazent — dan ini alasan paling sering kenapa sebuah chat tiba-tiba tidak bisa dibalas dengan teks biasa. Semua CS sebaiknya memahaminya.

3.1 Aturannya

Anda hanya boleh mengirim pesan bebas (teks/media) dalam 24 jam sejak pelanggan terakhir membalas. Setiap balasan pelanggan me-reset jendela 24 jam itu.

3.2 Kapan boleh apa

  • Window terbuka → pesan bebas (teks/media) boleh.
  • Window tutup, atau pelanggan belum pernah chat → pesan bebas ditolak; wajib template.
  • Template selalu boleh — termasuk untuk memulai percakapan.

3.3 Yang Anda lihat di Inbox

Tiap percakapan menampilkan status window-nya. Saat masih terbuka: "Pelanggan membalas dalam 24 jam terakhir — kamu bisa kirim pesan teks biasa." Saat sudah lewat, composer mengarahkan Anda memakai template. Wazent memeriksanya sebelum pesan diteruskan ke Meta, jadi Anda mendapat penjelasan yang jelas — bukan kode error mentah.

3.4 Solusinya: template

Buat dan ajukan template di halaman Template. Template harus disetujui Meta lebih dulu (prosesnya asinkron — status berubah dari PENDING menjadi APPROVED atau REJECTED). Sesudah disetujui, template bisa dipakai kapan saja tanpa terpengaruh window.

3.5 Lewat API

Bila Anda mengirim lewat API, window yang tutup dijawab 409 window_closed — bukan error mentah Meta (131047):

{
  "error": "window_closed",
  "message": "Window 24 jam sudah tutup. Pelanggan harus membalas dulu, atau kirim pakai pesan template (type: \"template\").",
  "window": { "open": false, "expires_at": null }
}

expires_at = waktu kedaluwarsa window bila ada percakapan; null bila pelanggan belum pernah chat.

4. Tim, peran & cabang

4.1 Tiga peran

PeranUntuk siapaYang bisa diakses
OwnerPemilik akun bisnisSemuanya — termasuk Tim, Langganan, API Keys, Webhook, dan Log Audit.
ManagerSupervisor tim CSInbox, Kontak, Broadcast, Balasan Cepat, Bot, Flows, Pemantauan & Kesehatan Akun, Log Pesan, Hubungkan WhatsApp.
Agen (CS)CS yang membalas chatInbox, Template, Pengaturan akun sendiri, Notifikasi Telegram.

Owner membuat akun CS di halaman Tim, lalu memberikan sandi sementara kepada CS untuk login pertama.

4.2 Cabang

Punya beberapa outlet? Buat cabang, tugaskan tiap nomor WhatsApp ke cabangnya, lalu tentukan agen mana yang boleh menangani cabang mana. Agen hanya melihat percakapan cabang yang menjadi tanggung jawabnya; manager dan owner melihat semuanya.

4.3 Kuota akun CS

  • Tiap nomor WhatsApp berbayar sudah termasuk 3 akun CS. Punya 3 nomor berarti 9 akun CS.
  • Akun owner tidak dihitung — 1 nomor berarti owner plus 3 CS.
  • Kuota dihitung dari akun yang aktif. Kalau ada CS yang keluar, hapus akunnya dan kuotanya langsung bebas untuk penggantinya.
  • Butuh lebih banyak? Tambah akun dari halaman Langganan — sekali bayar, berlaku selamanya, tidak ikut siklus perpanjangan.

5. Bot otomatis & Flows

5.1 Bot balas otomatis

Bot Otomatis membalas pertanyaan umum tanpa menunggu CS — berguna di luar jam kerja atau saat chat menumpuk. Anda menyusun alurnya sendiri di kanvas bot, per nomor WhatsApp.

5.2 Jawaban AI dengan data Anda sendiri

Bot bisa dibantu AI supaya menjawab lebih luwes, dengan sumber data milik Anda:

  • Google Sheets — mis. daftar harga atau stok, cukup perbarui isinya di spreadsheet.
  • API sendiri — bot mengambil data dari sistem Anda saat menjawab.

Keduanya boleh aktif bersamaan. Bila salah satu sumber sedang bermasalah, bot tetap menjawab dari sumber yang lain.

5.3 Serah-terima ke CS

Begitu percakapan perlu sentuhan manusia, bot menyerahkannya ke CS. Setelah CS diam beberapa saat (lamanya bisa Anda atur), bot mengambil alih lagi — jadi pelanggan tidak menggantung.

5.4 Flows

Flows adalah formulir interaktif resmi WhatsApp: pelanggan mengisi form di dalam chat (mis. pendaftaran atau pemesanan) tanpa dilempar ke browser. Flow bisa dikirim otomatis oleh bot atau manual oleh CS dari Inbox.

6. Broadcast

Broadcast mengirim pesan ke banyak pelanggan sekaligus lewat template resmi yang sudah disetujui Meta.

  • Penyaring izin otomatis. Pelanggan yang menolak promosi atau masuk daftar blokir tidak akan dikirimi — dan itu diperiksa saat pesan benar-benar dikirim, bukan hanya saat antrean dibuat. Jadi pelanggan yang berhenti berlangganan di tengah proses tetap terlindungi.
  • Nomor ganda disaring. Satu pelanggan menerima satu pesan, walau nomornya tercantum berkali-kali.
  • Hormati batas Meta. Akun baru punya batas kirim harian yang rendah dan akan naik seiring reputasi nomor Anda membaik. Mengirim melebihi batas berisiko menurunkan mutu nomor — lihat Kesehatan Akun.

7. Kontak & izin

Kontak adalah direktori pelanggan Anda. Isinya terkumpul sendiri dari percakapan yang masuk — tidak perlu diketik manual.

  • Nama pelanggan bisa Anda perbaiki sendiri, dan nama itu ikut tampil di Inbox serta notifikasi.
  • Tag & segmen untuk mengelompokkan pelanggan.
  • Izin (opt-in/opt-out) tercatat per pelanggan, dipakai otomatis sebagai penyaring saat broadcast.
  • Daftar blokir untuk nomor yang tidak boleh dikirimi sama sekali.

8. Pemantauan, kesehatan & audit

8.1 Mutu layanan tim

Pemantauan menunjukkan kecepatan balasan tim dan chat yang belum tertangani — supervisi berdasar angka, bukan tebak-tebakan.

8.2 Kesehatan nomor

Kesehatan Akun merangkum sinyal dari Meta untuk tiap nomor: mutu (quality rating), batas kirim, dan apakah nomor sedang bisa dipakai mengirim. Mutu yang turun adalah peringatan dini sebelum Meta membatasi nomor Anda.

8.3 Riwayat & jejak

  • Log Pesan — riwayat semua pesan (masuk, balasan CS, bot, broadcast, API) dengan penyaring dan ekspor CSV.
  • Log Audit — khusus owner: jejak aksi akun, keamanan, dan data (siapa mengundang siapa, siapa mengubah apa). Tidak bisa diubah atau dihapus.

8.4 Notifikasi Telegram

Tiap CS bisa menautkan akun Telegram-nya di halaman Notifikasi Telegram supaya chat masuk terkirim sebagai notifikasi — berguna saat dashboard tidak sedang dibuka.

9. Langganan & kuota

  • Biaya dihitung per nomor WhatsApp yang Anda pakai. Tambah atau kurangi jumlah nomor kapan saja dari halaman Langganan.
  • Mengganti nomor di dalam jumlah yang sudah dibayar tidak dikenai biaya tambahan.
  • Kuota akun CS mengikuti jumlah nomor (lihat bagian 4).
  • Pembayaran diproses Midtrans; langganan aktif otomatis setelah pembayaran dikonfirmasi, dan faktur PDF dikirim ke email Anda.
  • Langganan tidak diperpanjang otomatis. Anda akan diingatkan di dashboard sebelum masa aktif habis.

Biaya percakapan WhatsApp tidak termasuk. Meta menagihkannya langsung ke akun WhatsApp Business Anda sendiri sesuai tarif resmi mereka — Wazent tidak menambahkan markup di atasnya. Kalau langganan habis, pengiriman berhenti sementara, tetapi percakapan, kontak, dan riwayat tetap bisa dibuka dan diekspor.

A. Kirim Pesan (API)

Bagian ini opsional — hanya diperlukan bila tim teknis Anda ingin menyambungkan sistem sendiri (mis. toko online atau ERP) ke WhatsApp. Memakai dashboard saja tidak membutuhkan API key.

A1. Base URL

Semua permintaan dikirim ke alamat berikut:

https://api.wazent.id

A2. Autentikasi

Sertakan API key Anda di header Authorization. Buat & kelola key di halaman API Keys (perlu login).

Authorization: Bearer WAZENT_API_KEY_ANDA

A3. Kirim teks

POST /v1/messages/send — body (JSON):

{
  "to": "6281234567890",
  "type": "text",
  "message": "Halo dari Wazent!"
}

type opsional untuk teks (default text). Tambahkan "preview_url": true untuk menampilkan pratinjau link. Contoh dengan curl:

curl -X POST https://api.wazent.id/v1/messages/send \
  -H "Authorization: Bearer WAZENT_API_KEY_ANDA" \
  -H "Content-Type: application/json" \
  -d '{"to":"6281234567890","type":"text","message":"Halo dari Wazent!"}'

A4. Kirim media

Tipe image, video, audio, dan document dikirim lewat url (https, publik) — Meta yang mengambil file dari URL tersebut.

{
  "to": "6281234567890",
  "type": "image",
  "url": "https://contoh.com/promo.jpg",
  "caption": "Promo bulan ini!"
}
{
  "to": "6281234567890",
  "type": "document",
  "url": "https://contoh.com/invoice.pdf",
  "filename": "invoice-1234.pdf",
  "caption": "Faktur Anda"
}
{
  "to": "6281234567890",
  "type": "audio",
  "url": "https://contoh.com/voice.ogg"
}
  • caption — opsional untuk image/video/document (maks 1024 karakter). Tidak berlaku untuk audio.
  • filename — opsional, hanya untuk document.

A5. Kirim template

Pesan template selalu boleh dikirim — termasuk untuk memulai percakapan (lihat bagian 3). Pakai nama template yang sudah disetujui Meta.

{
  "to": "6281234567890",
  "type": "template",
  "template": {
    "name": "order_update",
    "language": "id",
    "components": [
      { "type": "body", "parameters": [ { "type": "text", "text": "1234" } ] }
    ]
  }
}

language = kode bahasa Meta (mis. id, en_US). components opsional (untuk parameter), diteruskan apa adanya ke Meta.

A6. Respons sukses

{
  "status": "sent",
  "to": "6281234567890",
  "type": "image",
  "message_id": "wamid.HBgN..."
}

A7. Kode error

HTTPerrorArti
401unauthorizedAPI key tidak ada / tidak valid / sudah di-revoke.
402subscription_inactiveLangganan tidak aktif.
402subscription_expiredLangganan sudah kedaluwarsa.
400no_whatsappBelum ada WhatsApp yang terhubung.
400bad_requestBody bukan objek JSON, atau JSON rusak.
400unsupported_type"type" di luar text/image/video/audio/document/template.
400invalid_toNomor tujuan salah (harus digit 8–15, format internasional).
400invalid_messageTeks kosong atau lebih dari 4096 karakter.
400invalid_url'url' media bukan https valid / terlalu panjang.
400invalid_captionCaption >1024 karakter, atau caption pada audio.
400invalid_filename'filename' pada tipe non-document / terlalu panjang.
400invalid_template'template.name'/'language' salah, atau 'components' bukan array.
409window_closedWindow 24 jam tutup — kirim pakai template (lihat bagian 3).
429rate_limitedTerlalu banyak permintaan; tunggu sesuai header Retry-After.
502send_failedMeta menolak pengiriman (lihat pesan detail).

A8. Batas permintaan (rate limit)

  • Per API key: maksimal 600 permintaan / 60 detik.
  • Per IP hanya saat autentikasi gagal: 5 / 10 detik (anti brute-force — pemakaian normal tidak menyentuh batas ini).
  • Jika melebihi batas: 429 rate_limited + header Retry-After (detik untuk menunggu).

A9. Cek status layanan

GET /health — untuk memastikan layanan hidup.

{ "ok": true, "service": "wazent-api" }

B. Terima Pesan (Webhook)

B1. Atur tujuan webhook

Di halaman Webhook dashboard: isi URL webhook (https) dan Generate signing secret (whsec_…— salin & simpan). Setiap pesan masuk dari pelanggan akan diteruskan (POST) ke URL itu, ditandatangani agar bisa Anda verifikasi.

B2. Format payload

Wazent mengirim POST dengan body JSON berikut:

{
  "event": "message",
  "phone_number_id": "1191635700691087",
  "conversation_id": "0e6f3b2a-....-uuid",
  "from": "6281234567890",
  "message": {
    "id": "wamid.HBgN...",
    "type": "text",
    "content": "Halo, saya mau tanya",
    "raw": { "...": "objek message mentah dari Meta (fidelity penuh)" }
  },
  "window": { "open": true, "expires_at": "2026-06-18T12:00:00.000Z" },
  "timestamp": "2026-06-18T11:00:00.000Z"
}
FieldArti
phone_number_idID nomor WABA bisnis (tujuan pesan masuk).
conversation_idID percakapan di Wazent (stabil per pelanggan).
fromNomor pelanggan pengirim.
message.contentIsi teks bila ada; null untuk tipe non-teks.
message.rawObjek message asli dari Meta (untuk media, lokasi, dll).
windowStatus window 24 jam saat pesan diterima (lihat bagian 3).

B3. Verifikasi tanda tangan

Tiap request membawa header X-Wazent-Signature: sha256=<hex> = HMAC-SHA256 atas raw body (string mentah, sebelum di-parse) memakai webhook_secret Anda. Hitung ulang lalu bandingkan secara timing-safe. ⚠️ Wajib pakai raw body — bukan hasil serialisasi ulang JSON.

Node.js (Express):

const crypto = require("crypto");

// Simpan raw body:
// app.use(express.json({ verify: (req, _res, buf) => { req.rawBody = buf; } }));

function verifyWazent(rawBody, header, secret) {
  const expected =
    "sha256=" + crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
  const a = Buffer.from(header || "");
  const b = Buffer.from(expected);
  return a.length === b.length && crypto.timingSafeEqual(a, b);
}

// app.post("/webhook", (req, res) => {
//   if (!verifyWazent(req.rawBody, req.get("X-Wazent-Signature"), SECRET))
//     return res.sendStatus(401);
//   res.sendStatus(200); // balas cepat, proses async
// });

PHP:

<?php
$raw = file_get_contents('php://input');
$header = $_SERVER['HTTP_X_WAZENT_SIGNATURE'] ?? '';
$expected = 'sha256=' . hash_hmac('sha256', $raw, $secret);

if (hash_equals($expected, $header)) {
  http_response_code(200); // sah — balas cepat
} else {
  http_response_code(401);
}

B4. Praktik baik

  • Balas 2xx secepatnya; proses berat lakukan asinkron.
  • Tangani kemungkinan kiriman ganda secara idempoten lewat message.id (wamid).
DokumentasiKebijakan PrivasiKebijakan PenggunaanHapus Data
© 2026 Wazent

WhatsApp dan logo WhatsApp adalah merek dagang Meta Platforms, Inc. Wazent adalah platform independen yang memakai WhatsApp Business API resmi dari Meta, dan tidak berafiliasi dengan atau diendorse oleh WhatsApp/Meta.