Masuk

Webhook

Terima notifikasi real-time saat pesan masuk di akun WhatsApp Anda.

Cara Kerja

Konfigurasikan URL webhook di pengaturan perangkat. Saat pesan diterima, engine mengirim permintaan POST ke URL Anda dengan payload pesan.

Example Handler
const express = require('express');
const app = express();

app.use(express.json());

app.post('/webhook', (req, res) => {
  const { event, node, message } = req.body;

  console.log(`[${event}] from ${node.phone}`);
  console.log(`Message: ${message.content.text}`);

  // ** Return 2xx to acknowledge
  res.status(200).json({ received: true });
});

app.listen(3000);

Payload Webhook

Saat pesan diterima, engine mengirim permintaan POST ke URL webhook Anda.

eventstring
Tipe event. Saat ini: MESSAGE_RECEIVED.
eventAtstring
Timestamp ISO 8601 saat webhook dipicu.
nodeobject
Node WhatsApp yang menerima pesan. Berisi guid dan phone.
messageobject
Payload pesan yang diterima. Berisi id, from, type, content, messagedAt, isGroup.
message.fromobject
Info pengirim dengan jid, name, dan phone.
message.isGroupboolean
Apakah pesan berasal dari grup. Jika true, groupJid akan disertakan.
{
  "event": "MESSAGE_RECEIVED",
  "eventAt": "2026-02-01T10:30:45.123Z",
  "node": {
    "guid": "abc-123-def",
    "phone": "+6281234567890"
  },
  "message": {
    "id": "3EB0ABC123DEF456",
    "from": {
      "jid": "[email protected]",
      "name": "John Doe",
      "phone": "+6289876543210"
    },
    "type": "TEXT",
    "content": {
      "text": "Hello, how are you?"
    },
    "messagedAt": 1706780445,
    "isGroup": false
  }
}

Tipe Pesan

Field message.type menentukan struktur message.content.

TypeField Konten
TEXTtext
IMAGEcaption, mimetype
VIDEOcaption, mimetype
AUDIOmimetype
DOCUMENTfileName, mimetype
STICKERmimetype
REACTIONemoji, reactedMessageId
OTHER(varies)
Content by Type
// TEXT
{ "text": "Hello!" }

// IMAGE
{ "caption": "Photo", "mimetype": "image/jpeg" }

// VIDEO
{ "caption": "Video", "mimetype": "video/mp4" }

// AUDIO
{ "mimetype": "audio/ogg" }

// DOCUMENT
{ "fileName": "report.pdf", "mimetype": "application/pdf" }

// STICKER
{ "mimetype": "image/webp" }

// REACTION
{ "emoji": "๐Ÿ‘", "reactedMessageId": "3EB0..." }

Mekanisme Percobaan Ulang

Webhook yang gagal akan dicoba ulang secara otomatis dengan jeda yang meningkat.

PercobaanJeda
1Segera
23 detik
35 menit
41 jam

Setelah 4 percobaan gagal, webhook ditandai sebagai gagal permanen untuk pesan tersebut.

Respons yang diharapkan dari server Anda
{
  "received": true
}