Webhook
Webhook Voxpanda mengirim POST JSON bertanda tangan ke URL Anda saat sesuatu terjadi di workspace, misalnya post terbit, komentar baru, atau balasan otomatis. Pakai untuk menghubungkan Voxpanda ke Zapier, Make, n8n, CRM, atau server Anda sendiri. Pemilik dan admin mengelola webhook di API & MCP, bagian Webhook.
Tambah webhook
- Buka API & MCP di menu.
- Di Webhook, isi URL endpoint. Harus diawali
https://. - Isi Keterangan agar tim tahu fungsi endpoint ini.
- Centang Kejadian yang Anda perlukan.
- Pilih Tambah webhook.
- Salin rahasia penandatangan. Diawali
whsec_dan hanya ditampilkan sekali.
Kirim uji mengantrekan kejadian webhook.test agar Anda bisa mengecek penerima sebelum kejadian sungguhan datang.
Kejadian
| Kejadian | Dikirim saat |
|---|---|
post.published |
post tayang di sebuah kanal |
post.failed |
post gagal terbit setelah semua percobaan ulang |
comment.received |
ada komentar baru di post Anda |
message.received |
ada DM baru |
mention.received |
brand Anda disebut atau di-tag |
automation.triggered |
otomasi kata kunci cocok dengan komentar atau DM, beserta hasilnya (terkirim, terkirim sebagian, gagal, atau dilewati) dan alasannya |
video.ready |
video vertikal selesai dirender |
repurpose.done |
pekerjaan repurpose selesai menulis post |
Bentuk pengiriman
Setiap pengiriman adalah POST dengan isi JSON:
{
"id": "6f1c0d6e-1d1a-4b51-9d0e-3f1a5c0d9e21",
"event": "comment.received",
"created_at": "2026-10-25T04:05:19Z",
"workspace_id": "…",
"brand_id": "…",
"data": { "platform": "instagram", "kind": "comment", "author": "sari", "text": "Harganya berapa?" }
}
Permintaan membawa tiga header:
Voxpanda-Event: nama kejadian.Voxpanda-Delivery: id pengiriman. Tetap sama saat Voxpanda mencoba ulang, jadi pakai untuk menyaring duplikat.Voxpanda-Signature:t=<waktu unix>,v1=<tanda tangan>.
Verifikasi tanda tangan
Tanda tangan adalah HMAC-SHA256 dalam hex dari teks t.body: nilai t, titik, lalu isi permintaan apa adanya. Kuncinya adalah rahasia whsec_ lengkap. Tolak permintaan yang lebih tua dari 5 menit.
import crypto from 'node:crypto';
function verify(secret, rawBody, header) {
const parts = Object.fromEntries(header.split(',').map((p) => p.split('=')));
if (Math.abs(Date.now() / 1000 - Number(parts.t)) > 300) return false;
const mac = crypto.createHmac('sha256', secret).update(`${parts.t}.${rawBody}`).digest('hex');
return mac.length === parts.v1.length && crypto.timingSafeEqual(Buffer.from(mac), Buffer.from(parts.v1));
}
Pakai isi permintaan persis seperti yang diterima. Mengurai JSON lalu mencetaknya lagi mengubah byte sehingga tanda tangan tidak cocok.
Balas dengan cepat
Balas dengan status 2xx apa pun dalam 10 detik. Voxpanda tidak mengikuti redirect dan hanya membaca maksimal 4 KB balasan Anda. Kerjakan proses yang lama setelah membalas.
Coba ulang dan mati otomatis
| Percobaan | Kapan |
|---|---|
| 1 | langsung |
| 2 | 1 menit kemudian |
| 3 | 5 menit kemudian |
| 4 | 30 menit kemudian |
| 5 | 2 jam kemudian |
| 6 | 6 jam kemudian |
Setelah percobaan keenam gagal, pengiriman ditandai Menyerah. Bila sebuah endpoint gagal 25 kali berturut-turut, Voxpanda mematikannya dan menampilkan alasannya. Perbaiki penerima, lalu pilih Aktifkan. Hitungan gagal kembali ke nol.
Ganti rahasia
Pilih Rahasia baru untuk membuat rahasia penandatangan baru. Rahasia lama langsung tidak berlaku, jadi segera perbarui penerima Anda.
Pertanyaan
Paket Voxpanda mana yang punya webhook?
Webhook ada di setiap workspace aktif. Setiap workspace bisa punya sampai 5 endpoint webhook, dan hanya pemilik dan admin yang bisa menambahkannya.
Apa yang terjadi kalau server saya mati?
Voxpanda mencoba lagi pengiriman yang gagal 5 kali, setelah 1 menit, 5 menit, 30 menit, 2 jam, dan 6 jam. Setelah 25 pengiriman gagal berturut-turut, endpoint mati sendiri sampai Anda mengaktifkannya lagi.
Bisakah webhook diarahkan ke alamat lokal?
Tidak. URL harus https di port 443. Alamat seperti localhost, .local, .internal, dan rentang IP privat ditolak saat disimpan dan dicek lagi sebelum setiap pengiriman.
Bisakah saya melihat apa yang dikirim Voxpanda?
Bisa. Riwayat di setiap endpoint menampilkan 50 pengiriman terakhir dari 30 hari terakhir beserta kejadian, status HTTP, lama waktu, dan galat, dan Kirim lagi mengantrekan salinannya.