{"id":1639,"date":"2026-09-28T08:48:49","date_gmt":"2026-09-28T08:48:49","guid":{"rendered":"https:\/\/whapi.id\/blog\/?p=1639"},"modified":"2026-09-30T03:36:38","modified_gmt":"2026-09-30T03:36:38","slug":"cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk","status":"publish","type":"post","link":"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/","title":{"rendered":"Cara Membuat Webhook WhatsApp untuk Menerima Pesan Masuk"},"content":{"rendered":"<p>Webhook WhatsApp digunakan untuk menerima data secara otomatis ketika terdapat event baru pada WhatsApp. Untuk pesan masuk, webhook dapat meneruskan informasi pesan dari WhatsApp ke endpoint pada server sehingga aplikasi dapat memproses pesan tanpa melakukan pengecekan secara berkala.<\/p>\n<p>Pada integrasi WhatsApp API, webhook dapat digunakan untuk menerima pesan pelanggan, menjalankan chatbot, menyimpan percakapan ke database, atau meneruskan pesan ke sistem lain.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/whapi.id\/blog\/wp-content\/uploads\/2026\/09\/Cara-Membuat-Webhook-WhatsApp-untuk-Menerima-Pesan-Masuk.jpg\" alt=\"Cara Membuat Webhook WhatsApp untuk Menerima Pesan Masuk\" width=\"1408\" height=\"768\" class=\"alignnone size-full wp-image-1640\" srcset=\"https:\/\/whapi.id\/blog\/wp-content\/uploads\/2026\/09\/Cara-Membuat-Webhook-WhatsApp-untuk-Menerima-Pesan-Masuk.jpg 1408w, https:\/\/whapi.id\/blog\/wp-content\/uploads\/2026\/09\/Cara-Membuat-Webhook-WhatsApp-untuk-Menerima-Pesan-Masuk-300x164.jpg 300w, https:\/\/whapi.id\/blog\/wp-content\/uploads\/2026\/09\/Cara-Membuat-Webhook-WhatsApp-untuk-Menerima-Pesan-Masuk-1024x559.jpg 1024w, https:\/\/whapi.id\/blog\/wp-content\/uploads\/2026\/09\/Cara-Membuat-Webhook-WhatsApp-untuk-Menerima-Pesan-Masuk-768x419.jpg 768w\" sizes=\"(max-width: 1408px) 100vw, 1408px\" \/><\/p>\n<p>Alur dasarnya:<\/p>\n<pre><code class=\"lang-text\">Pesan masuk ke WhatsApp\r\n        \u2193\r\nDevice WhatsApp\r\n        \u2193\r\nAPI Whapi\r\n        \u2193\r\nWebhook\r\n        \u2193\r\n<span class=\"hljs-built_in\">Server<\/span> \/ Aplikasi\r\n        \u2193\r\nProses pesan\r\n`\r\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"IMAGE_URL\" alt=\"Diagram alur webhook WhatsApp untuk menerima pesan masuk dari API Whapi\"><\/p>\n<h2 id=\"apa-itu-webhook-whatsapp-\">Apa Itu Webhook WhatsApp?<\/h2>\n<p>Webhook WhatsApp adalah endpoint HTTP pada server yang menerima data dari API ketika terjadi event tertentu pada WhatsApp.<\/p>\n<p>Berbeda dengan request API biasa yang dikirim oleh aplikasi ke server API, webhook bekerja dari arah sebaliknya. API mengirim HTTP request ke endpoint yang sudah dikonfigurasi ketika event terjadi.<\/p>\n<p>Contohnya, ketika pelanggan mengirim:<\/p>\n<pre><code class=\"lang-text\">Halo, apakah produk <span class=\"hljs-keyword\">A<\/span> masih tersedia?\r\n<\/code><\/pre>\n<p>API dapat mengirim data event tersebut ke webhook:<\/p>\n<pre><code class=\"lang-text\">WhatsApp\r\n   \u2193\r\nAPI Whapi\r\n   \u2193\r\nPOST https:<span class=\"hljs-regexp\">\/\/<\/span>example.com<span class=\"hljs-regexp\">\/webhook\/<\/span>whatsapp\r\n<\/code><\/pre>\n<p>Server kemudian membaca data tersebut dan menjalankan proses yang diperlukan.<\/p>\n<h2 id=\"apa-yang-dibutuhkan-\">Apa yang Dibutuhkan?<\/h2>\n<p>Sebelum membuat webhook, siapkan:<\/p>\n<ol>\n<li>Device WhatsApp yang sudah terhubung ke Whapi.<\/li>\n<li>URL webhook yang dapat menerima request dari internet.<\/li>\n<li>Server atau aplikasi untuk memproses data webhook.<\/li>\n<li>Endpoint HTTP dengan method <code>POST<\/code>.<\/li>\n<li>Logic untuk membaca data pesan yang diterima.<\/li>\n<\/ol>\n<p>Endpoint webhook harus dapat diakses oleh server Whapi. URL seperti <code>http:\/\/localhost:3000\/webhook<\/code> tidak dapat digunakan secara langsung karena hanya dapat diakses dari komputer lokal.<\/p>\n<p>Untuk pengembangan lokal, gunakan server publik sementara atau lingkungan pengujian yang dapat menerima request dari internet.<\/p>\n<h2 id=\"buat-endpoint-webhook\">Buat Endpoint Webhook<\/h2>\n<p>Endpoint webhook merupakan URL yang akan menerima request dari Whapi.<\/p>\n<p>Contoh:<\/p>\n<pre><code class=\"lang-text\">https:<span class=\"hljs-regexp\">\/\/<\/span>example.com<span class=\"hljs-regexp\">\/webhook\/<\/span>whatsapp\r\n<\/code><\/pre>\n<p>Server harus menyediakan route yang menerima HTTP <code>POST<\/code>.<\/p>\n<p>Contoh menggunakan Node.js dan Express:<\/p>\n<pre><code class=\"lang-javascript\">const express = <span class=\"hljs-built_in\">require<\/span>(<span class=\"hljs-string\">'express'<\/span>);\r\n\r\nconst app = express();\r\n\r\napp.use(express.json());\r\n\r\napp.post(<span class=\"hljs-string\">'\/webhook\/whatsapp'<\/span>, <span class=\"hljs-function\"><span class=\"hljs-params\">(req, res)<\/span> =&gt;<\/span> {\r\n  <span class=\"hljs-built_in\">console<\/span>.log(req.body);\r\n\r\n  res.sendStatus(<span class=\"hljs-number\">200<\/span>);\r\n});\r\n\r\napp.listen(<span class=\"hljs-number\">3000<\/span>, <span class=\"hljs-function\"><span class=\"hljs-params\">()<\/span> =&gt;<\/span> {\r\n  <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">'Webhook server berjalan di port 3000'<\/span>);\r\n});\r\n<\/code><\/pre>\n<p>Ketika request masuk ke:<\/p>\n<pre><code class=\"lang-text\">POST <span class=\"hljs-regexp\">\/webhook\/<\/span>whatsapp\r\n<\/code><\/pre>\n<p>data webhook dapat dibaca melalui:<\/p>\n<pre><code class=\"lang-javascript\">req.<span class=\"hljs-keyword\">body<\/span>\r\n<\/code><\/pre>\n<p>Response <code>200 OK<\/code> kemudian dikirim sebagai tanda bahwa request sudah diterima server.<\/p>\n<h2 id=\"konfigurasi-webhook-di-whapi\">Konfigurasi Webhook di Whapi<\/h2>\n<p>Setelah endpoint tersedia, masukkan URL tersebut ke konfigurasi webhook pada Whapi.<\/p>\n<p>URL yang digunakan harus merupakan URL endpoint yang benar-benar menangani request webhook.<\/p>\n<p>Contohnya:<\/p>\n<pre><code class=\"lang-text\">https:<span class=\"hljs-regexp\">\/\/<\/span>example.com<span class=\"hljs-regexp\">\/webhook\/<\/span>whatsapp\r\n<\/code><\/pre>\n<p>Pastikan endpoint:<\/p>\n<ul>\n<li>menggunakan HTTPS pada server production;<\/li>\n<li>dapat diakses dari internet;<\/li>\n<li>menerima HTTP <code>POST<\/code>;<\/li>\n<li>dapat membaca request body;<\/li>\n<li>mengembalikan response <code>2xx<\/code>;<\/li>\n<li>tidak membutuhkan login dashboard untuk menerima request.<\/li>\n<\/ul>\n<p>Konfigurasi webhook kemudian digunakan Whapi untuk mengirim event WhatsApp ke server.<\/p>\n<h2 id=\"menerima-pesan-masuk\">Menerima Pesan Masuk<\/h2>\n<p>Ketika pesan baru diterima, webhook akan mendapatkan data event dari Whapi.<\/p>\n<p>Server tidak perlu melakukan request berulang untuk mengetahui apakah ada pesan baru. Data dikirim ke endpoint ketika event terjadi.<\/p>\n<p>Contoh prosesnya:<\/p>\n<pre><code class=\"lang-text\">Pelanggan mengirim pesan\r\n        \u2193\r\nWhatsApp menerima pesan\r\n        \u2193\r\nWhapi menerima event\r\n        \u2193\r\nWhapi mengirim POST ke webhook\r\n        \u2193\r\nServer membaca request <span class=\"hljs-selector-tag\">body<\/span>\r\n        \u2193\r\nAplikasi memproses pesan\r\n<\/code><\/pre>\n<p>Pada tahap ini, aplikasi dapat menentukan tindakan berdasarkan isi pesan.<\/p>\n<p>Contohnya:<\/p>\n<pre><code class=\"lang-javascript\">app.post(<span class=\"hljs-string\">'\/webhook\/whatsapp'<\/span>, <span class=\"hljs-function\"><span class=\"hljs-params\">(req, res)<\/span> =&gt;<\/span> {\r\n  const data = req.body;\r\n\r\n  <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">'Webhook diterima:'<\/span>, data);\r\n\r\n  <span class=\"hljs-regexp\">\/\/<\/span> Proses data pesan di sini\r\n\r\n  res.sendStatus(<span class=\"hljs-number\">200<\/span>);\r\n});\r\n<\/code><\/pre>\n<p>Jangan menempatkan proses yang sangat berat sebelum mengirim response jika webhook harus diproses dengan cepat. Proses lanjutan seperti penyimpanan database, pemanggilan service lain, atau pengolahan chatbot dapat dipisahkan dari penerimaan request.<\/p>\n<h2 id=\"membaca-isi-pesan\">Membaca Isi Pesan<\/h2>\n<p>Setelah webhook menerima data, struktur payload perlu diperiksa terlebih dahulu untuk mengetahui field yang tersedia.<\/p>\n<p>Contoh sederhana untuk melihat seluruh payload:<\/p>\n<pre><code class=\"lang-javascript\">app.post(<span class=\"hljs-string\">'\/webhook\/whatsapp'<\/span>, <span class=\"hljs-function\"><span class=\"hljs-params\">(req, res)<\/span> =&gt;<\/span> {\r\n  <span class=\"hljs-built_in\">console<\/span>.log(JSON.stringify(req.body, <span class=\"hljs-literal\">null<\/span>, <span class=\"hljs-number\">2<\/span>));\r\n\r\n  res.sendStatus(<span class=\"hljs-number\">200<\/span>);\r\n});\r\n<\/code><\/pre>\n<p>Cara ini berguna saat pertama kali menghubungkan webhook karena struktur data yang diterima dapat dilihat langsung dari log server.<\/p>\n<p>Setelah struktur payload diketahui, field yang diperlukan dapat diambil secara spesifik.<\/p>\n<p>Contohnya:<\/p>\n<pre><code class=\"lang-javascript\"><span class=\"hljs-keyword\">const<\/span> data = req.body;\r\n\r\n<span class=\"hljs-keyword\">const<\/span> messages = data.messages || [];\r\n\r\n<span class=\"hljs-keyword\">for<\/span> (<span class=\"hljs-keyword\">const<\/span> message <span class=\"hljs-keyword\">of<\/span> messages) {\r\n  <span class=\"hljs-built_in\">console<\/span>.log(message);\r\n}\r\n<\/code><\/pre>\n<p>Field yang digunakan harus mengikuti payload webhook yang dikirim oleh versi API yang digunakan.<\/p>\n<h2 id=\"memproses-pesan-setelah-diterima\">Memproses Pesan Setelah Diterima<\/h2>\n<p>Webhook sebaiknya hanya menangani penerimaan event dan meneruskan data ke proses berikutnya.<\/p>\n<p>Contohnya:<\/p>\n<pre><code class=\"lang-javascript\">app.post(<span class=\"hljs-string\">'\/webhook\/whatsapp'<\/span>, <span class=\"hljs-keyword\">async<\/span> (req, res) =&gt; {\r\n  <span class=\"hljs-keyword\">const<\/span> data = req.body;\r\n\r\n  res.sendStatus(<span class=\"hljs-number\">200<\/span>);\r\n\r\n  <span class=\"hljs-comment\">\/\/ Proses pesan setelah request diterima<\/span>\r\n  console.log(<span class=\"hljs-string\">'Event:'<\/span>, data);\r\n});\r\n<\/code><\/pre>\n<p>Pada aplikasi yang lebih besar, data dapat diteruskan ke queue atau service internal.<\/p>\n<p>Contoh alurnya:<\/p>\n<pre><code class=\"lang-text\"><span class=\"hljs-symbol\">Webhook<\/span>\r\n   \u2193\r\n<span class=\"hljs-symbol\">Validasi<\/span> event\r\n   \u2193\r\n<span class=\"hljs-symbol\">Simpan<\/span> <span class=\"hljs-meta\">data<\/span>\r\n   \u2193\r\n<span class=\"hljs-symbol\">Queue<\/span>\r\n   \u2193\r\n<span class=\"hljs-keyword\">Business <\/span>logic\r\n   \u2193\r\n<span class=\"hljs-symbol\">Database<\/span> \/ chatbot \/ CRM\r\n<\/code><\/pre>\n<p>Dengan alur seperti ini, endpoint webhook tetap sederhana meskipun proses setelah pesan diterima cukup banyak.<\/p>\n<h2 id=\"contoh-webhook-untuk-chatbot\">Contoh Webhook untuk Chatbot<\/h2>\n<p>Webhook dapat menjadi pemicu chatbot.<\/p>\n<p>Misalnya pelanggan mengirim:<\/p>\n<pre><code class=\"lang-text\"><span class=\"hljs-attribute\">cek harga<\/span>\r\n<\/code><\/pre>\n<p>Webhook menerima event tersebut dan aplikasi memeriksa isi pesan.<\/p>\n<pre><code class=\"lang-text\"><span class=\"hljs-symbol\">Pesan<\/span> masuk\r\n    \u2193\r\n<span class=\"hljs-symbol\">Webhook<\/span>\r\n    \u2193\r\n<span class=\"hljs-keyword\">Baca <\/span>isi pesan\r\n    \u2193\r\n<span class=\"hljs-string\">\"Cek harga\"<\/span>\r\n    \u2193\r\n<span class=\"hljs-symbol\">Cari<\/span> <span class=\"hljs-meta\">data<\/span> produk\r\n    \u2193\r\n<span class=\"hljs-symbol\">Kirim<\/span> <span class=\"hljs-keyword\">balasan <\/span>WhatsApp\r\n<\/code><\/pre>\n<p>Kode sederhana:<\/p>\n<pre><code class=\"lang-javascript\">app.post(<span class=\"hljs-string\">'\/webhook\/whatsapp'<\/span>, <span class=\"hljs-keyword\">async<\/span> (req, res) =&gt; {\r\n  <span class=\"hljs-keyword\">const<\/span> data = req.body;\r\n\r\n  res.sendStatus(<span class=\"hljs-number\">200<\/span>);\r\n\r\n  <span class=\"hljs-comment\">\/\/ Contoh:<\/span>\r\n  <span class=\"hljs-comment\">\/\/ 1. Ambil pesan dari payload<\/span>\r\n  <span class=\"hljs-comment\">\/\/ 2. Periksa isi pesan<\/span>\r\n  <span class=\"hljs-comment\">\/\/ 3. Tentukan respons<\/span>\r\n  <span class=\"hljs-comment\">\/\/ 4. Kirim balasan melalui API<\/span>\r\n});\r\n<\/code><\/pre>\n<p>Webhook tidak digunakan untuk mengirim balasan secara langsung. Webhook menerima event, sedangkan pengiriman pesan dilakukan melalui endpoint API pengiriman pesan.<\/p>\n<h2 id=\"pastikan-endpoint-menggunakan-https\">Pastikan Endpoint Menggunakan HTTPS<\/h2>\n<p>Untuk server production, gunakan HTTPS.<\/p>\n<p>Contoh:<\/p>\n<pre><code class=\"lang-text\">https:<span class=\"hljs-regexp\">\/\/<\/span>api.example.com<span class=\"hljs-regexp\">\/webhook\/<\/span>whatsapp\r\n<\/code><\/pre>\n<p>Hindari menggunakan endpoint production seperti:<\/p>\n<pre><code class=\"lang-text\">http:<span class=\"hljs-regexp\">\/\/<\/span>api.example.com<span class=\"hljs-regexp\">\/webhook\/<\/span>whatsapp\r\n<\/code><\/pre>\n<p>HTTPS mengenkripsi komunikasi antara server dan client sehingga data webhook tidak dikirim dalam koneksi HTTP biasa.<\/p>\n<h2 id=\"cara-menguji-webhook\">Cara Menguji Webhook<\/h2>\n<p>Setelah webhook dikonfigurasi, kirim pesan ke nomor WhatsApp yang terhubung dengan device Whapi.<\/p>\n<p>Kemudian periksa log aplikasi.<\/p>\n<p>Contoh:<\/p>\n<pre><code class=\"lang-javascript\">app.post(<span class=\"hljs-string\">'\/webhook\/whatsapp'<\/span>, <span class=\"hljs-function\"><span class=\"hljs-params\">(req, res)<\/span> =&gt;<\/span> {\r\n  <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">'Webhook diterima'<\/span>);\r\n  <span class=\"hljs-built_in\">console<\/span>.log(JSON.stringify(req.body, <span class=\"hljs-literal\">null<\/span>, <span class=\"hljs-number\">2<\/span>));\r\n\r\n  res.sendStatus(<span class=\"hljs-number\">200<\/span>);\r\n});\r\n<\/code><\/pre>\n<p>Jika webhook bekerja, log server akan menunjukkan request yang diterima.<\/p>\n<p>Pengujian sebaiknya dilakukan dengan pesan sederhana terlebih dahulu.<\/p>\n<p>Contoh:<\/p>\n<pre><code class=\"lang-text\"><span class=\"hljs-keyword\">Test <\/span>webhook\r\n<\/code><\/pre>\n<p>Setelah event berhasil diterima, lanjutkan dengan proses parsing data dan business logic.<\/p>\n<h2 id=\"jika-webhook-tidak-menerima-pesan\">Jika Webhook Tidak Menerima Pesan<\/h2>\n<p>Beberapa hal perlu diperiksa ketika pesan masuk tetapi endpoint tidak mendapatkan event.<\/p>\n<h3 id=\"url-webhook-salah\">URL Webhook Salah<\/h3>\n<p>Periksa kembali URL yang dimasukkan pada konfigurasi webhook.<\/p>\n<p>Pastikan tidak ada:<\/p>\n<ul>\n<li>typo pada domain;<\/li>\n<li>path yang salah;<\/li>\n<li>port yang tidak dapat diakses;<\/li>\n<li>redirect yang tidak diperlukan.<\/li>\n<\/ul>\n<h3 id=\"server-tidak-bisa-diakses-dari-internet\">Server Tidak Bisa Diakses dari Internet<\/h3>\n<p>Webhook berasal dari server eksternal. Endpoint harus dapat menerima request dari internet.<\/p>\n<p>URL berikut tidak dapat digunakan sebagai endpoint publik:<\/p>\n<pre><code class=\"lang-text\"><span class=\"hljs-symbol\">http:<\/span><span class=\"hljs-comment\">\/\/localhost:3000\/webhook<\/span>\r\n<\/code><\/pre>\n<p>Gunakan domain atau URL publik yang dapat diakses dari luar server.<\/p>\n<h3 id=\"route-tidak-menerima-post\">Route Tidak Menerima POST<\/h3>\n<p>Jika route hanya menerima <code>GET<\/code>, request webhook dengan method <code>POST<\/code> tidak akan diproses.<\/p>\n<p>Contoh yang benar:<\/p>\n<pre><code class=\"lang-javascript\">app.post(<span class=\"hljs-string\">'\/webhook\/whatsapp'<\/span>, <span class=\"hljs-function\"><span class=\"hljs-params\">(req, res)<\/span> =&gt;<\/span> {\r\n  res.sendStatus(<span class=\"hljs-number\">200<\/span>);\r\n});\r\n<\/code><\/pre>\n<h3 id=\"request-body-tidak-dibaca\">Request Body Tidak Dibaca<\/h3>\n<p>Pada Express, pastikan middleware JSON sudah dipasang:<\/p>\n<pre><code class=\"lang-javascript\"><span class=\"hljs-selector-tag\">app<\/span><span class=\"hljs-selector-class\">.use<\/span>(<span class=\"hljs-selector-tag\">express<\/span><span class=\"hljs-selector-class\">.json<\/span>());\r\n<\/code><\/pre>\n<p>Tanpa middleware yang sesuai, data request dapat tidak terbaca sebagaimana mestinya.<\/p>\n<h3 id=\"endpoint-menghasilkan-error\">Endpoint Menghasilkan Error<\/h3>\n<p>Periksa HTTP status code yang dikembalikan endpoint.<\/p>\n<p>Response seperti:<\/p>\n<pre><code class=\"lang-text\"><span class=\"hljs-symbol\">200 <\/span>OK\r\n<\/code><\/pre>\n<p>menunjukkan request diterima.<\/p>\n<p>Sementara:<\/p>\n<pre><code class=\"lang-text\"><span class=\"hljs-symbol\">404 <\/span><span class=\"hljs-keyword\">Not<\/span> Found\r\n<span class=\"hljs-symbol\">500 <\/span>Internal Server <span class=\"hljs-keyword\">Error<\/span>\r\n<\/code><\/pre>\n<p>menunjukkan ada masalah pada URL atau proses server.<\/p>\n<h2 id=\"simpan-data-webhook-ke-database\">Simpan Data Webhook ke Database<\/h2>\n<p>Setelah webhook berhasil menerima event, data pesan dapat disimpan ke database.<\/p>\n<p>Contoh proses:<\/p>\n<pre><code class=\"lang-text\"><span class=\"hljs-type\">Pesan<\/span> masuk\r\n     \u2193\r\n<span class=\"hljs-type\">Webhook<\/span>\r\n     \u2193\r\n<span class=\"hljs-type\">Validasi<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">data<\/span><\/span>\r\n     \u2193\r\n<span class=\"hljs-type\">Simpan<\/span> pesan\r\n     \u2193\r\n<span class=\"hljs-type\">Database<\/span>\r\n<\/code><\/pre>\n<p>Data yang disimpan dapat digunakan untuk:<\/p>\n<ul>\n<li>Riwayat percakapan<\/li>\n<li>CRM<\/li>\n<li>Dashboard customer service<\/li>\n<li>Analisis pesan<\/li>\n<li>Chatbot<\/li>\n<li>Sistem ticketing<\/li>\n<\/ul>\n<p>Jangan langsung menyimpan seluruh payload tanpa memahami struktur datanya. Tentukan field yang memang diperlukan oleh aplikasi.<\/p>\n<h2 id=\"hindari-memproses-event-dua-kali\">Hindari Memproses Event Dua Kali<\/h2>\n<p>Server dapat menerima event yang sama lebih dari sekali dalam kondisi tertentu. Karena itu, aplikasi sebaiknya memiliki mekanisme untuk mengenali event yang sudah diproses.<\/p>\n<p>Salah satu caranya adalah menyimpan ID pesan atau ID event yang tersedia pada payload.<\/p>\n<p>Contoh logika:<\/p>\n<pre><code class=\"lang-text\">Webhook menerima <span class=\"hljs-keyword\">event<\/span>\r\n        \u2193\r\nCek ID pesan\r\n        \u2193\r\nSudah ada di database?\r\n     \u2199        \u2198\r\n   Ya         Tidak\r\n   \u2193            \u2193\r\nAbaikan      Proses\r\n              \u2193\r\n          Simpan ID\r\n<\/code><\/pre>\n<p>Dengan cara ini, pesan yang sama tidak diproses berulang kali oleh aplikasi.<\/p>\n<h2 id=\"webhook-untuk-sistem-produksi\">Webhook untuk Sistem Produksi<\/h2>\n<p>Untuk penggunaan production, endpoint webhook sebaiknya memiliki beberapa lapisan pengamanan dan pemrosesan.<\/p>\n<p>Struktur sederhananya:<\/p>\n<pre><code class=\"lang-text\">                \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n                \u2502 WhatsApp     \u2502\r\n                \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n                       \u2193\r\n                \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n                \u2502 API Whapi    \u2502\r\n                \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n                       \u2193\r\n                \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n                \u2502 Webhook      \u2502\r\n                \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n                       \u2193\r\n              \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n              \u2502 Validasi Event  \u2502\r\n              \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n                       \u2193\r\n              \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n              \u2502 Database \/ Queue\u2502\r\n              \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n                       \u2193\r\n              \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n              \u2502 <span class=\"hljs-keyword\">Business <\/span>Logic  \u2502\r\n              \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n<\/code><\/pre>\n<p>Webhook menjadi pintu masuk event. Setelah data diterima dan divalidasi, aplikasi dapat meneruskannya ke proses lain sesuai kebutuhan.<\/p>\n<h2 id=\"kesimpulan\">Kesimpulan<\/h2>\n<p>Cara membuat webhook WhatsApp untuk menerima pesan masuk dimulai dengan membuat endpoint <code>POST<\/code> yang dapat diakses dari internet, kemudian menghubungkan URL tersebut ke konfigurasi webhook Whapi.<\/p>\n<p>Alurnya:<\/p>\n<pre><code class=\"lang-text\">Pesan WhatsApp\r\n      \u2193\r\nWhapi\r\n      \u2193\r\nEndpoint Webhook\r\n      \u2193\r\nValidasi Payload\r\n      \u2193\r\nDatabase \/ <span class=\"hljs-built_in\">Queue<\/span>\r\n      \u2193\r\nAplikasi\r\n<\/code><\/pre>\n<p>Webhook dapat digunakan untuk menerima pesan masuk secara otomatis dan menghubungkannya dengan chatbot, CRM, database, sistem ticketing, atau aplikasi internal.<\/p>\n<p>Hal terpenting adalah memastikan URL webhook dapat diakses dari internet, route menerima <code>POST<\/code>, request body dapat dibaca, dan endpoint mengembalikan response <code>2xx<\/code> setelah event diterima.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Webhook WhatsApp digunakan untuk menerima data secara otomatis ketika terdapat event baru pada WhatsApp. Untuk pesan masuk, webhook dapat meneruskan [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1640,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[3],"tags":[],"class_list":["post-1639","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cara Membuat Webhook WhatsApp untuk Menerima Pesan Masuk - WHAPI | BLOG<\/title>\n<meta name=\"description\" content=\"Cara membuat webhook WhatsApp untuk menerima pesan masuk melalui API Whapi, mulai dari endpoint, konfigurasi webhook, hingga pengujian pesan.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cara Membuat Webhook WhatsApp untuk Menerima Pesan Masuk - WHAPI | BLOG\" \/>\n<meta property=\"og:description\" content=\"Cara membuat webhook WhatsApp untuk menerima pesan masuk melalui API Whapi, mulai dari endpoint, konfigurasi webhook, hingga pengujian pesan.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/\" \/>\n<meta property=\"og:site_name\" content=\"WHAPI | BLOG\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-28T08:48:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-30T03:36:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/whapi.id\/blog\/wp-content\/uploads\/2026\/09\/Cara-Membuat-Webhook-WhatsApp-untuk-Menerima-Pesan-Masuk.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1408\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Doveriz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Doveriz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/\",\"url\":\"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/\",\"name\":\"Cara Membuat Webhook WhatsApp untuk Menerima Pesan Masuk - WHAPI | BLOG\",\"isPartOf\":{\"@id\":\"https:\/\/whapi.id\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/whapi.id\/blog\/wp-content\/uploads\/2026\/09\/Cara-Membuat-Webhook-WhatsApp-untuk-Menerima-Pesan-Masuk.jpg\",\"datePublished\":\"2026-09-28T08:48:49+00:00\",\"dateModified\":\"2026-09-30T03:36:38+00:00\",\"author\":{\"@id\":\"https:\/\/whapi.id\/blog\/#\/schema\/person\/ca540be71f16cd13214efb59ef58236a\"},\"description\":\"Cara membuat webhook WhatsApp untuk menerima pesan masuk melalui API Whapi, mulai dari endpoint, konfigurasi webhook, hingga pengujian pesan.\",\"breadcrumb\":{\"@id\":\"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/#primaryimage\",\"url\":\"https:\/\/whapi.id\/blog\/wp-content\/uploads\/2026\/09\/Cara-Membuat-Webhook-WhatsApp-untuk-Menerima-Pesan-Masuk.jpg\",\"contentUrl\":\"https:\/\/whapi.id\/blog\/wp-content\/uploads\/2026\/09\/Cara-Membuat-Webhook-WhatsApp-untuk-Menerima-Pesan-Masuk.jpg\",\"width\":1408,\"height\":768,\"caption\":\"Cara Membuat Webhook WhatsApp untuk Menerima Pesan Masuk\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Beranda\",\"item\":\"https:\/\/whapi.id\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cara Membuat Webhook WhatsApp untuk Menerima Pesan Masuk\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/whapi.id\/blog\/#website\",\"url\":\"https:\/\/whapi.id\/blog\/\",\"name\":\"WHAPI | BLOG\",\"description\":\"Blog Resmi Whapi.id Temukan tips praktis, panduan teknis, dan informasi terbaru seputar WhatsApp API, chatbot, serta otomasi bisnis. Ditulis oleh tim ahli untuk membantu meningkatkan pelayanan, efisiensi operasional, dan penjualan bisnis secara berkelanjutan.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/whapi.id\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/whapi.id\/blog\/#\/schema\/person\/ca540be71f16cd13214efb59ef58236a\",\"name\":\"Doveriz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/whapi.id\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2797b0bc9cdfb3ca0fbc22a3708768605e7bee3cfa5ec0b6c98c8511a1378252?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2797b0bc9cdfb3ca0fbc22a3708768605e7bee3cfa5ec0b6c98c8511a1378252?s=96&d=mm&r=g\",\"caption\":\"Doveriz\"},\"description\":\"Saya adalah Developer dan penulis Blog Whapi.id serta Fullstack Developer spesialisasi pengembangan aplikasi berbasis web dan chatbot automation untuk berbagai platform bisnis.\",\"sameAs\":[\"https:\/\/whapi.id\/blog\"],\"url\":\"https:\/\/whapi.id\/blog\/author\/whapi\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cara Membuat Webhook WhatsApp untuk Menerima Pesan Masuk - WHAPI | BLOG","description":"Cara membuat webhook WhatsApp untuk menerima pesan masuk melalui API Whapi, mulai dari endpoint, konfigurasi webhook, hingga pengujian pesan.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/","og_locale":"id_ID","og_type":"article","og_title":"Cara Membuat Webhook WhatsApp untuk Menerima Pesan Masuk - WHAPI | BLOG","og_description":"Cara membuat webhook WhatsApp untuk menerima pesan masuk melalui API Whapi, mulai dari endpoint, konfigurasi webhook, hingga pengujian pesan.","og_url":"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/","og_site_name":"WHAPI | BLOG","article_published_time":"2026-09-28T08:48:49+00:00","article_modified_time":"2026-09-30T03:36:38+00:00","og_image":[{"width":1408,"height":768,"url":"https:\/\/whapi.id\/blog\/wp-content\/uploads\/2026\/09\/Cara-Membuat-Webhook-WhatsApp-untuk-Menerima-Pesan-Masuk.jpg","type":"image\/jpeg"}],"author":"Doveriz","twitter_card":"summary_large_image","twitter_misc":{"Ditulis oleh":"Doveriz","Estimasi waktu membaca":"7 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/","url":"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/","name":"Cara Membuat Webhook WhatsApp untuk Menerima Pesan Masuk - WHAPI | BLOG","isPartOf":{"@id":"https:\/\/whapi.id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/#primaryimage"},"image":{"@id":"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/#primaryimage"},"thumbnailUrl":"https:\/\/whapi.id\/blog\/wp-content\/uploads\/2026\/09\/Cara-Membuat-Webhook-WhatsApp-untuk-Menerima-Pesan-Masuk.jpg","datePublished":"2026-09-28T08:48:49+00:00","dateModified":"2026-09-30T03:36:38+00:00","author":{"@id":"https:\/\/whapi.id\/blog\/#\/schema\/person\/ca540be71f16cd13214efb59ef58236a"},"description":"Cara membuat webhook WhatsApp untuk menerima pesan masuk melalui API Whapi, mulai dari endpoint, konfigurasi webhook, hingga pengujian pesan.","breadcrumb":{"@id":"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/#primaryimage","url":"https:\/\/whapi.id\/blog\/wp-content\/uploads\/2026\/09\/Cara-Membuat-Webhook-WhatsApp-untuk-Menerima-Pesan-Masuk.jpg","contentUrl":"https:\/\/whapi.id\/blog\/wp-content\/uploads\/2026\/09\/Cara-Membuat-Webhook-WhatsApp-untuk-Menerima-Pesan-Masuk.jpg","width":1408,"height":768,"caption":"Cara Membuat Webhook WhatsApp untuk Menerima Pesan Masuk"},{"@type":"BreadcrumbList","@id":"https:\/\/whapi.id\/blog\/cara-membuat-webhook-whatsapp-untuk-menerima-pesan-masuk\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Beranda","item":"https:\/\/whapi.id\/blog\/"},{"@type":"ListItem","position":2,"name":"Cara Membuat Webhook WhatsApp untuk Menerima Pesan Masuk"}]},{"@type":"WebSite","@id":"https:\/\/whapi.id\/blog\/#website","url":"https:\/\/whapi.id\/blog\/","name":"WHAPI | BLOG","description":"Blog Resmi Whapi.id Temukan tips praktis, panduan teknis, dan informasi terbaru seputar WhatsApp API, chatbot, serta otomasi bisnis. Ditulis oleh tim ahli untuk membantu meningkatkan pelayanan, efisiensi operasional, dan penjualan bisnis secara berkelanjutan.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/whapi.id\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":"Person","@id":"https:\/\/whapi.id\/blog\/#\/schema\/person\/ca540be71f16cd13214efb59ef58236a","name":"Doveriz","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/whapi.id\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2797b0bc9cdfb3ca0fbc22a3708768605e7bee3cfa5ec0b6c98c8511a1378252?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2797b0bc9cdfb3ca0fbc22a3708768605e7bee3cfa5ec0b6c98c8511a1378252?s=96&d=mm&r=g","caption":"Doveriz"},"description":"Saya adalah Developer dan penulis Blog Whapi.id serta Fullstack Developer spesialisasi pengembangan aplikasi berbasis web dan chatbot automation untuk berbagai platform bisnis.","sameAs":["https:\/\/whapi.id\/blog"],"url":"https:\/\/whapi.id\/blog\/author\/whapi\/"}]}},"_links":{"self":[{"href":"https:\/\/whapi.id\/blog\/wp-json\/wp\/v2\/posts\/1639","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/whapi.id\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/whapi.id\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/whapi.id\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/whapi.id\/blog\/wp-json\/wp\/v2\/comments?post=1639"}],"version-history":[{"count":3,"href":"https:\/\/whapi.id\/blog\/wp-json\/wp\/v2\/posts\/1639\/revisions"}],"predecessor-version":[{"id":1647,"href":"https:\/\/whapi.id\/blog\/wp-json\/wp\/v2\/posts\/1639\/revisions\/1647"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/whapi.id\/blog\/wp-json\/wp\/v2\/media\/1640"}],"wp:attachment":[{"href":"https:\/\/whapi.id\/blog\/wp-json\/wp\/v2\/media?parent=1639"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/whapi.id\/blog\/wp-json\/wp\/v2\/categories?post=1639"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/whapi.id\/blog\/wp-json\/wp\/v2\/tags?post=1639"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}