Selain mengirim pesan, Anda juga bisa menerima event dari Kirimin secara real-time — pesan masuk, perubahan status device, hingga hasil akhir blast — lewat webhook. Berikut cara setup dan mengamankannya.
Buka Dashboard → API Keys → Webhook, isi URL endpoint di server Anda yang siap menerima POST request, misalnya https://tokoanda.com/webhook/kirimin. Kirimin akan otomatis membuatkan webhook secret untuk menandatangani setiap request.
| Event | Kapan Terjadi |
|---|---|
message.received | Ada pesan masuk ke device yang terhubung |
session.connected | Device berhasil terhubung (setelah scan QR) |
session.disconnected | Device terputus dari WhatsApp |
Semua event dikirim dengan struktur body yang konsisten:
{
"event": "message.received",
"timestamp": "2026-08-22T09:15:00+00:00",
"account_id": 42,
"data": {
"session_id": "u42_default",
"message_id": "3EB0C767D...",
"from": "628123456789@s.whatsapp.net",
"body": "Halo, saya mau tanya soal produk",
"type": "text",
"is_group": false
}
}
Setiap request juga menyertakan header berikut:
Content-Type: application/json X-Kirimin-Event: message.received X-Kirimin-Signature: sha256=6b6f8f1c9a... X-Kirimin-Delivery-Id: wh_64f9a2b1c3e4d User-Agent: Kirimin-Webhook/1.0
Agar endpoint Anda tidak menerima request palsu, selalu verifikasi header X-Kirimin-Signature menggunakan webhook secret sebelum memproses payload:
Route::post('/webhook/kirimin', function (Illuminate\Http\Request $request) {
$secret = config('services.kirimin.webhook_secret');
$body = $request->getContent();
$expected = 'sha256=' . hash_hmac('sha256', $body, $secret);
$signature = $request->header('X-Kirimin-Signature');
if (!hash_equals($expected, $signature)) {
return response()->json(['error' => 'invalid_signature'], 401);
}
$event = $request->input('event');
$data = $request->input('data');
if ($event === 'message.received') {
// Contoh: simpan ke tabel percakapan / trigger auto-reply
\App\Models\IncomingMessage::create([
'from' => $data['from'],
'body' => $data['body'],
]);
}
return response()->json(['success' => true]);
});
hash_equals(), bukan == atau ===, untuk membandingkan signature — ini mencegah celah timing attack pada proses verifikasi.Karena webhook memberi tahu setiap pesan masuk, Anda bisa membalasnya otomatis dengan memanggil endpoint /send di dalam handler yang sama:
if ($event === 'message.received' && !$data['is_group']) {
$phone = str_replace('@s.whatsapp.net', '', $data['from']);
app(\App\Services\KiriminService::class)->sendText(
$phone,
'Terima kasih, pesan Anda kami terima. Tim kami akan segera membalas.'
);
}
Trial gratis 7 hari, semua fitur unlimited aktif — API Key bisa langsung dipakai dari dashboard.
Daftar Gratis Sekarang →