Suka bingung sama istilah webhook? Tenang aja, konsepnya sebenarnya sederhana. Webhook adalah cara sebuah aplikasi mengirim data secara otomatis ke aplikasi lain begitu suatu kejadian terjadi, biasanya lewat HTTP POST. Kamu tidak perlu terus bertanya ke server, karena server yang akan memberi tahu kamu. Yuk simak di bawah, Kami jelaskan dari dasar sampai cara membuat webhook pertamamu.
Apa Itu Webhook dan Bedanya dengan API Biasa
Webhook juga disebut callback atau reverse API. Istilah ini dipopulerkan Jeff Lindsay lewat tulisan blognya pada 3 Mei 2007. Intinya, webhook adalah URL milik kamu yang siap menerima data dari layanan lain. Saat ada kejadian tertentu, misalnya pesanan baru atau pesan chat masuk, layanan itu mengirim HTTP request ke URL tersebut. Isinya biasanya berformat JSON, kadang XML atau form-data.
Menurut Kami, webhook paling mudah dibayangkan seperti bel pintu. Kamu tidak perlu mengintip jendela setiap menit untuk tahu ada tamu. Begitu bel berbunyi, kamu langsung tahu dan bisa bertindak.
Lalu apa bedanya dengan API biasa? API biasa bekerja dengan pola pull atau request-response, di mana sistemmu yang bertanya lebih dulu. Webhook bekerja dengan pola push atau event-driven, di mana penyedia layanan yang mengirim data saat ada perubahan. Komunikasi API umumnya dua arah, sedangkan webhook berjalan satu arah dari penyedia ke penerima.
Perbandingan Polling dan Webhook
- Polling: sistemmu meminta data secara berkala, misalnya setiap menit. Cocok untuk data yang jarang berubah, tapi boros request.
- Webhook: penyedia layanan mengirim data saat ada perubahan. Cocok untuk notifikasi real-time dan lebih hemat resource.
Hitungannya cukup jelas. Polling tiap menit berarti 1.440 permintaan per hari. Kalau dalam sehari hanya ada 3 pembayaran, sekitar 1.437 permintaan (99,8%) itu terbuang percuma. Jadi, buat kamu yang butuh respons cepat, webhook biasanya pilihan yang lebih pas.
Webhook dibandingkan WebSocket
WebSocket membuka koneksi dua arah yang tetap menyala, cocok untuk aplikasi chat real-time di browser. Webhook tidak menjaga koneksi terus-menerus. Ia hanya aktif saat ada event, sehingga lebih ringan untuk integrasi antar-server, misalnya dari layanan pembayaran ke sistem toko online.
Cara Kerja Webhook dari Event Sampai Data Terkirim
Alurnya bisa dibagi menjadi empat tahap utama yang selalu berulang setiap kali ada event baru.
- Kamu mendaftarkan URL endpoint ke layanan penyedia event, lalu memilih event apa saja yang ingin diterima.
- Kejadian terjadi di layanan tersebut, misalnya ada pesan masuk atau status pembayaran berubah.
- Layanan mengirim HTTP POST berisi payload dan tanda tangan digital di header ke URL kamu.
- Server kamu membalas dengan status 2xx, misalnya 200 OK. Jika balasan gagal, layanan biasanya mencoba mengirim ulang.
Kode respons juga penting untuk dipahami. Status 200 OK berarti data diterima, 400 Bad Request berarti request tidak valid, dan 500 Internal Server Error berarti ada masalah di server kamu. Dengan membaca kode ini, kamu lebih cepat tahu di mana letak masalahnya.
Istilah Dasar yang Perlu Dipahami: URL, Payload, dan Event
URL Endpoint
URL endpoint adalah alamat di server kamu yang menerima request webhook. Biasanya alamat ini memakai HTTPS dengan path seperti /webhook. Satu aplikasi bisa punya banyak endpoint untuk jenis event yang berbeda.
Payload
Payload adalah isi data yang dikirim. Umumnya berupa JSON yang berisi ID event, waktu kejadian, dan detail data. Di layanan chat, payload bisa memuat nomor pengirim dan isi pesan.
Event
Event adalah kejadian yang memicu pengiriman, misalnya message.received atau payment.success. Pengaturan yang menentukan event apa saja yang kamu terima disebut subscription. Jadi, pilih event seperlunya saja supaya sistemmu tidak kebanjiran data.
Cara Membuat Webhook URL Pertama Kamu
Membuat webhook melibatkan dua sisi: endpoint penerima di sistemmu, dan pendaftaran URL di layanan penyedia. Kamu bisa memakai bahasa pemrograman apa saja, prinsipnya tetap sama.
- Siapkan endpoint yang menerima method POST di server kecilmu.
- Pastikan endpoint membalas 200 setelah data berhasil diterima.
- Uji secara lokal menggunakan tunneling seperti ngrok, karena laptop tidak bisa diakses langsung dari internet.
- Daftarkan URL HTTPS di dashboard penyedia, lalu pilih event yang benar-benar dibutuhkan.
Contoh Endpoint dengan Node.js
Dengan Express, kamu cukup mengaktifkan app.use(express.json()), lalu membuat route app.post('/webhook', ...). Di dalamnya, baca isi request lewat req.body, simpan datanya, dan balas dengan res.sendStatus(200). Dengan pola sederhana ini, kamu sudah punya penerima webhook yang berjalan.
Mengirim dan Menerima Data Webhook dengan Contoh Sederhana
Misalnya kamu ingin setiap pesan masuk dicatat ke sistem. Penyedia layanan akan mengirim payload berisi ID event, tipe event, nomor pengirim, dan teks pesan. Di sisi penerima, kamu cukup membaca field tersebut, menyimpannya ke database, lalu membalas 200.
Untuk mengirim data balik, kamu biasanya memakai REST API penyedia dengan method POST dan token autentikasi. Contohnya, sistemmu membaca pesan masuk lewat webhook, lalu mengirim balasan otomatis lewat API. Jadi, webhook dan API bisa dipakai bersamaan dalam satu alur. Beamvia menyediakan messaging REST API dengan webhook bertanda tangan, jadi alur seperti ini bisa kamu rangkai tanpa membangun koneksi dari nol.
Cara Mengecek dan Menguji Webhook dengan Benar
Sebelum dipakai untuk pelanggan sungguhan, uji dulu dengan alat bantu. Beberapa yang sering dipakai antara lain:
- RequestBin untuk melihat isi request yang masuk tanpa menulis kode.
- cURL untuk mengirim request uji langsung dari terminal.
- Postman untuk membuat dan menyimpan koleksi request uji.
- ngrok untuk membuat URL publik sementara yang meneruskan request ke localhost.
- Runscope sebagai alternatif untuk memantau dan menguji request.
Langkah Menguji Secara Lokal
Jalankan server di laptop, buka tunnel dengan ngrok, lalu salin URL HTTPS yang diberikan ke dashboard penyedia. Kirim event uji, lalu cek log di terminal. Jika payload terbaca dengan benar, berarti jalurnya sudah tersambung. Kami sarankan cara ini untuk setiap perubahan kode.
Kalau kamu memakai cURL, kirim request POST dengan header Content-Type application/json dan body JSON sederhana. Cara ini membantu kamu memastikan endpoint menerima format yang benar tanpa harus menunggu event asli.
Mencatat Log dan Membaca Balasan
Pastikan setiap request masuk tercatat di log, lengkap dengan ID event dan status balasan. Dengan begitu, kalau ada masalah, kamu bisa melacak apakah request tidak sampai, gagal diproses, atau dikirim ulang oleh penyedia.
Kesalahan Umum Pemula dan Cara Mengatasinya
Tenang, hampir semua pemula pernah mengalami hal ini. Berikut kesalahan yang paling sering muncul beserta solusinya.
- Endpoint membalas terlalu lambat. Solusinya, pindahkan proses berat ke background queue. Balasan yang lambat bisa memicu retry berulang.
- Event datang dua kali. Ini wajar terjadi karena retry. Solusinya, buat proses idempotent dengan mengecek ID event sebelum memprosesnya.
- URL tidak memakai HTTPS. Banyak penyedia mewajibkannya. Telegram, misalnya, tidak mengizinkan polling dan webhook dipakai bersamaan, dan mode webhook wajib memakai HTTPS.
- Tidak memverifikasi pengirim. Banyak penyedia mengirim tanda tangan di header. Hitung ulang signature dengan secret kamu, lalu tolak request yang tidak cocok.
- Token di URL bocor. URL webhook Discord mengandung token rahasia, jadi jangan dibagikan secara publik.
Mengamankan Endpoint Webhook
Menurut Kami, ada tiga hal yang wajib dicek: validasi atau autentikasi endpoint, log dan retry dengan monitoring, serta pencegahan pemrosesan ganda. Dalam praktiknya, verifikasi HMAC sederhana sudah banyak membantu. Caranya, hitung HMAC SHA256 dari body request menggunakan secret, lalu bandingkan dengan signature di header menggunakan perbandingan yang aman.
Soal keamanan, pandangan sumber berbeda-beda. Ada yang menilai API lebih aman karena punya konfirmasi dan filter, sementara webhook dianggap tanpa filter. Kami sarankan memperlakukan keduanya sama serius, karena kuncinya ada pada verifikasi, bukan pada jenis koneksinya.
Jika Server Penerima Mati
Kalau server penerima mati, penyedia biasanya mencoba mengirim ulang beberapa kali. Namun, setiap penyedia punya aturan retry sendiri, jadi cek dokumentasinya. Kamu juga bisa menyimpan event ke antrean agar tidak hilang saat server sedang bermasalah.
Contoh Penggunaan Webhook untuk Bisnis dan Layanan Pelanggan
Webhook dipakai di banyak skenario, dari toko online sampai tim layanan pelanggan. Berikut contoh yang umum ditemui.
- Payment gateway seperti Midtrans atau Xendit mengirim notifikasi saat pembayaran lunas, sehingga pesanan bisa langsung diproses tanpa cek manual.
- Marketplace dan toko online mengirim data pesanan baru ke sistem gudang atau ekspedisi.
- CRM menerima data dari formulir di website secara otomatis.
- Sistem monitoring mengirim alert ke chat saat server down.
- Layanan chat mengirim pesan masuk ke sistem kamu, misalnya lewat WhatsApp Cloud API.
Untuk WhatsApp Cloud API, verifikasi URL dilakukan lewat request GET dengan parameter hub.challenge. Nilainya harus dikembalikan apa adanya. Detail kecil seperti ini sering luput, padahal menentukan apakah webhook kamu bisa berjalan.
Contoh untuk Tim Customer Service
Buat kamu yang punya tim customer service, webhook membuat pesan pelanggan langsung masuk ke sistem tiket atau dashboard tim. Jadi, tidak ada chat yang terlewat dan tim bisa membalas lebih cepat. Dengan pola ini, satu pesan masuk bisa langsung dibaca tim yang tepat tanpa harus membuka setiap aplikasi chat satu per satu.
Membuat Webhook Discord
Discord juga punya incoming webhook yang sederhana. Buka Server Settings, pilih Integrations, lalu Webhooks. Buat webhook baru, pilih channel tujuan, dan salin Webhook URL. Perlu diingat, URL ini menyimpan token rahasia, jadi jangan dibagikan ke pihak yang tidak perlu.
Gimana? Sudah Lebih Jelas?
Ringkasnya, webhook membuat data mengalir ke sistemmu saat kejadian terjadi, bukan saat kamu memintanya. Mulai dari endpoint sederhana, uji dengan ngrok, lalu kunci dengan verifikasi tanda tangan. Tertarik mencoba? Coba Beamvia gratis dan lihat sendiri bagaimana alur chat bisa tersambung otomatis!
Pertanyaan yang Sering Diajukan (FAQ)
Apa itu webhook?
Webhook adalah URL yang menerima data otomatis dari layanan lain saat suatu kejadian terjadi, biasanya dikirim lewat HTTP POST dalam format JSON.
Apa bedanya webhook dengan API biasa?
API biasa membuat kamu meminta data terlebih dahulu (pull), sedangkan webhook membuat layanan lain mengirim data sendiri saat ada perubahan (push).
Apa itu webhooks?
Webhooks adalah bentuk jamak dari webhook. Istilah ini dipakai saat merujuk pada banyak webhook atau kumpulan konfigurasi endpoint penerimanya.
Bagaimana cara membuat webhook?
Buat endpoint yang menerima request POST di server kamu, uji secara lokal dengan tunneling seperti ngrok, lalu daftarkan URL HTTPS tersebut di dashboard layanan penyedia dan pilih event yang dibutuhkan.
Bagaimana cara mengamankan endpoint webhook?
Verifikasi tanda tangan di setiap request, gunakan HTTPS, balas dengan cepat, dan pastikan proses tetap aman meski event yang sama datang dua kali.
0 komentar
Belum ada komentar. Mulai percakapan.