# Mendapatkan hasil verifikasi dengan webhook

Source: https://help.didit.me/id/integration/webhooks-basics
Updated: 2026-10-12

Didit tidak mengirim email saat status verifikasi berubah. Siapkan webhook di Pengembang, daftarkan tiap event, simpan signing secret, dan verifikasi signature.

Webhook adalah permintaan HTTP yang dikirim Didit ke URL Anda saat ada sesuatu
yang berubah. Tambahkan destinasi di **Pengembang → Webhooks**, subscribe ke
event yang Anda inginkan - **tidak ada wildcard**, daftarkan semuanya satu per
satu - simpan signing secret-nya, dan verifikasi signature-nya sebelum Anda
memproses apa pun.

[Video: Pengantar webhook - Didit Academy](https://www.youtube.com/watch?v=fX03-WEu_EI&t=192)

Didit tidak mengirimkan email saat sesi berpindah ke **In Review** atau **Declined**. Untuk mengetahui persis kapan sebuah status berubah, tanpa harus me-refresh konsol, siapkan webhook - sebuah URL di server Anda yang secara otomatis dikirimi update oleh Didit.

Webhook adalah pola integrasi yang **direkomendasikan**. Melakukan polling ke endpoint keputusan tetap bisa jadi cadangan, tapi lebih lambat, membutuhkan lebih banyak permintaan, dan melewatkan event yang hanya pernah dikirim lewat webhook - perubahan data oleh reviewer, perubahan status transaksi, dan perubahan di level entity.

## Menyiapkannya

1. **Pengembang → Webhooks**

   Buka aplikasi dan lingkungan Live atau Sandbox yang benar, lalu Pengembang dan Webhooks.

2. **Tambahkan endpoint**

   Klik Tambahkan endpoint, isi URL HTTPS dan nama, lalu pilih kejadian. Pertahankan versi v3 yang disarankan kecuali untuk integrasi lama. Tinjau dan konfirmasi.

3. **Simpan rahasia penandatanganan**

   Setiap endpoint memiliki rahasia tanda tangan tersendiri yang disamarkan. Klik Tampilkan dan konfirmasi identitas; rahasia disembunyikan lagi dalam 60 detik. Simpan di konfigurasi server. Hubungi dukungan jika tombol nonaktif. [Pengembang → Webhooks](https://docs.didit.me/integration/webhooks#signature-verification).

4. **Kirim kejadian uji**

   Kirim kejadian uji bertanda tangan untuk memeriksa endpoint, tanda tangan dan penanganan tanpa verifikasi sungguhan.

![Tujuan webhook di konsol Didit dengan peristiwa yang dilanggan dan riwayat pengiriman](https://help.didit.me/screenshots/webhooks-light.webp)

*Setiap tujuan memiliki langganan peristiwa, rahasia penandatanganan, dan log pengiriman sendiri.*

## Event yang bisa Anda subscribe

**Tidak ada wildcard** - daftarkan setiap keluarga event yang Anda inginkan. Menyebarkannya ke beberapa destinasi juga tidak masalah dan sering kali lebih rapi.

| Event | Terpicu saat |
|---|---|
| `status.updated` | Status sesi KYC atau KYB berubah. Yang hampir pasti Anda inginkan |
| `data.updated` | Data verifikasi diedit setelah dibuat - misalnya reviewer mengoreksi sebuah field |
| `user.status.updated` | Pengguna konsolidasi berpindah antara ACTIVE, FLAGGED dan BLOCKED |
| `user.data.updated` | Profil, counter, atau identifier pengguna konsolidasi berubah |
| `business.status.updated` | Status bisnis konsolidasi berubah |
| `business.data.updated` | Data bisnis konsolidasi berubah |
| `transaction.created` | Sebuah transaksi dibuat dan verdict awalnya sudah siap |
| `transaction.status.updated` | Status sebuah transaksi berubah setelahnya |
| `travel_rule.status.updated` | Status pertukaran Travel Rule berubah |

> **Note:** Tidak ada `session.status.updated` atau `kyc.completed`. Jika Anda men-subscribe
> nama yang tidak ada di daftar ini, Anda tidak akan menerima apa pun - dan itu akan
> terlihat persis seperti kegagalan pengiriman. Periksa dulu namanya.

## Yang seharusnya dilakukan endpoint Anda

- **Verifikasi signature-nya sebelum apa pun.** Lakukan HMAC pada body permintaan **mentah** - jangan pernah versi hasil serialize ulang dari JSON yang sudah di-parse, karena menyusunnya kembali menjadi string mengubah byte-nya dan signature-nya tidak akan cocok. Gunakan perbandingan constant-time.
- **Kembalikan 2xx dengan cepat.** Lakukan pekerjaan berat secara asinkron, setelah Anda merespons.
- **Bersifat idempotent.** Gunakan id event, atau kombinasi id sesi + status + jenis webhook sebagai kunci. Percobaan ulang dan duplikat bisa terjadi.
- **Tangani setiap status yang Anda pedulikan**, termasuk yang muncul lama setelah onboarding - sesi yang sudah approved bisa berpindah ke In Review kemudian lewat [pemantauan AML berkelanjutan](https://help.didit.me/id/aml-screening/ongoing-monitoring).
- **Hanya HTTPS.** Endpoint HTTP biasa tidak didukung.

## Percobaan ulang

Untuk respons 5xx atau 404, Didit mencoba lagi dua kali, sekitar satu menit lalu empat menit kemudian. Batas waktu 5 detik atau kegagalan koneksi tidak dicoba lagi otomatis. Gunakan Kirim ulang di Pengiriman setelah perbaikan; kegagalan akhir menghasilkan peringatan.

> **Warning:** Jangan menganggap setiap webhook pasti diterima. Setelah gangguan, kirim ulang atau ambil keputusan setiap sesi yang hasilnya belum Anda terima.

## Di belakang firewall atau WAF

Didit mengirim dari IP statis **18.203.201.92** dengan user agent `DiditWebhook/2.0`. Jika edge Anda memblokir klien yang tidak dikenal - seperti kebijakan default Cloudflare - izinkan IP tersebut untuk hostname penerima, atau pengiriman akan gagal sebelum sampai ke kode Anda.

## Belum punya backend?

Anda tetap bisa memantau hasil secara manual di bagian **Verifications** milik konsol sambil membangunnya, atau gunakan [link verifikasi tanpa kode](https://help.didit.me/id/integration/integration-options) untuk sementara.

## Langkah berikutnya

- Ketika webhook tidak sampai: [ketika webhook tidak pernah sampai](https://help.didit.me/id/integration/webhook-troubleshooting)
- Memahami arti setiap status begitu ia sampai: [apa arti setiap status sesi](https://help.didit.me/id/verification-sessions/session-statuses)
- Referensi teknis lengkap, termasuk contoh kode verifikasi signature: [Webhooks](https://docs.didit.me/integration/webhooks)
