OmniStream Docs
  • Dokumentasi
  • Developer
  • API Reference
Memulai
Hubungkan Channel
Fitur Utama
CRM
Broadcast & Campaign
AI & Otomasi
Tim & Laporan
Pengaturan
    Billing & LanggananKustomisasi Data & KontenProfil PenggunaGanti Kata SandiPengumuman (Announcements)Outgoing Webhooks
Troubleshooting
Pengaturan

Outgoing Webhooks

Ringkasan

Outgoing Webhooks memungkinkan admin menghubungkan OmniStream ke sistem eksternal — CRM pihak ketiga, helpdesk, spreadsheet, Zapier, atau integrasi kustom — dengan cara berlangganan event yang terjadi di platform. Setiap event yang cocok dengan daftar langganan akan menghasilkan sebuah HTTP POST request ke URL yang Anda tentukan, lengkap dengan payload JSON dan signature HMAC-SHA256 untuk verifikasi.

Halaman pengaturan berada di rute /outgoing-webhooks.

Hak akses: Outgoing webhooks hanya dapat dikelola oleh supervisor dan admin.

Event types yang didukung

OmniStream v1 mem-publish enam event utama (plus contact.created opsional). Setiap webhook berlangganan ke satu atau lebih event:

Event TypeDipicu saat
message.receivedPesan masuk (inbound) tersimpan di database
message.sentPesan keluar (outbound) berhasil dikirim
message.statusStatus pesan keluar berubah (sent → delivered → read atau failed)
conversation.createdPercakapan baru dibuat di sistem
conversation.resolvedStatus percakapan diubah menjadi resolved
conversation.assignedPercakapan ditugaskan ke agent (baik otomatis maupun manual)

Enam event di atas adalah kontrak publik — admin tidak perlu mengaktifkannya satu per satu di backend; cukup berlangganan lewat UI. Jika subsistem memproduksi event yang tidak berlangganan oleh satupun webhook, backend tidak akan menuliskan delivery row (efisiensi).

Headers yang dikirim

Setiap delivery POST request menyertakan header berikut:

HeaderNilaiCatatan
Content-Typeapplication/jsonPayload selalu JSON
X-Omnistream-Eventmis. message.receivedMemudahkan routing di sisi penerima tanpa parsing body
X-Omnistream-SignatureHMAC-SHA256 hex-encoded dari seluruh body menggunakan secret webhookUntuk verifikasi autentisitas

Contoh verifikasi di sisi penerima (Node.js):

Code
import crypto from 'node:crypto'; function verify(body, signatureHeader, secret) { const expected = crypto .createHmac('sha256', secret) .update(body) .digest('hex'); // Gunakan timingSafeEqual untuk mencegah timing attack const a = Buffer.from(signatureHeader); const b = Buffer.from(expected); return a.length === b.length && crypto.timingSafeEqual(a, b); }

Retry & exponential backoff

Jika endpoint penerima mengembalikan status non-2xx atau timeout, dispatcher akan melakukan retry dengan exponential backoff. Delay setiap attempt berkembang dengan pengali 4: 30 * 4^(attempt-1) detik.

Perilaku default (max_attempts = 3)

Secara default, dispatcher mencoba mengirim 3 kali total (2 retries):

AttemptWaktu eksekusiJika gagal
1Segera setelah event munculTunggu 30 detik (formula: 30 * 4^0 = 30)
230 detik setelah attempt 1 gagalTunggu 120 detik (formula: 30 * 4^1 = 120)
3120 detik setelah attempt 2 gagalattempt >= max_attempts → permanent failure

Menaikkan max_attempts

max_attempts dapat dikonfigurasi per-webhook lewat pengaturan webhook di UI. Berikut referensi delay untuk attempt lanjutan:

AttemptDelay sebelum attempt berikutnyaFormula
130 detik30 * 4^0
2120 detik (2 menit)30 * 4^1
3480 detik (8 menit)30 * 4^2
41920 detik (32 menit)30 * 4^3
57680 detik (~2 jam)30 * 4^4

Dengan default max_attempts = 3, attempt 3 adalah yang terakhir dan delay 480 detik tidak dipakai.

Retry manual

Admin dapat melihat delivery history per-webhook di panel Activity Log dan menekan tombol Retry manual jika endpoint sudah pulih. Granularitas minimum delay efektif adalah 30 detik.

Langkah-langkah

Membuat webhook baru

  1. Buka /outgoing-webhooks dari sidebar.
  2. Klik + New Webhook.
  3. Isi form:
    • Name — label internal, mis. Zapier Integration Production
    • URL — endpoint HTTPS tujuan
    • Secret — string rahasia untuk HMAC signature (simpan juga di sisi penerima)
    • Events — pilih satu atau lebih dari 6 event type
    • Is Active — centang untuk mengaktifkan
  4. Klik Save. Backend memanggil POST /api/outgoing-webhooks (tag Outgoing Webhooks).

Menguji webhook

  1. Klik ikon Play di baris webhook.
  2. Backend akan mengirim payload dummy ke URL dan menampilkan hasil (status code, body, durasi).
  3. Periksa sisi penerima apakah signature cocok.

Memeriksa riwayat delivery

  1. Klik ikon Eye atau buka tab Activity Log.
  2. Daftar delivery menampilkan: timestamp, event type, URL, status code, attempt count, dan body respons.
  3. Filter berdasarkan status (pending, success, failed, cancelled) tersedia di atas tabel.
  4. Klik baris untuk mengembang (expand) dan melihat payload lengkap.

Menonaktifkan atau menghapus

  1. Ikon pensil untuk mengedit (mis. menambah/menghapus event dari langganan).
  2. Ikon trash untuk menghapus permanent. Delivery history yang belum dieksekusi akan di-cancel.

Screenshot halaman outgoing webhooks

Endpoint (tag Outgoing Webhooks)

AksiEndpoint
List webhookGET /api/outgoing-webhooks
DetailGET /api/outgoing-webhooks/{id}
Buat webhookPOST /api/outgoing-webhooks
Update webhookPUT /api/outgoing-webhooks/{id}
Hapus webhookDELETE /api/outgoing-webhooks/{id}
Test webhookPOST /api/outgoing-webhooks/{id}/test
List delivery historyGET /api/outgoing-webhooks/{id}/deliveries
Retry delivery manualPOST /api/outgoing-webhooks/deliveries/{id}/retry
List event typesGET /api/outgoing-webhooks/event-types

Skema lengkap di API Reference — Outgoing Webhooks.

Praktik terbaik

  • Gunakan HTTPS, bukan HTTP, untuk URL tujuan.
  • Selalu verifikasi X-Omnistream-Signature sebelum memproses payload — ini satu-satunya cara memastikan payload berasal dari OmniStream.
  • Balas cepat di sisi penerima (≤ 1 detik) dan lakukan pemrosesan lama di background queue Anda sendiri, untuk menghindari timeout yang memicu retry.
  • Simpan secret di environment variable, bukan di source code.
  • Monitor failed deliveries — > 5% gagal menandakan endpoint atau jaringan tidak stabil.

Rute terkait

  • Activity Logs — audit perubahan konfigurasi webhook
Last modified on August 4, 2026
Pengumuman (Announcements)FAQ
On this page
  • Ringkasan
  • Event types yang didukung
  • Headers yang dikirim
  • Retry & exponential backoff
    • Perilaku default (max_attempts = 3)
    • Menaikkan max_attempts
    • Retry manual
  • Langkah-langkah
    • Membuat webhook baru
    • Menguji webhook
    • Memeriksa riwayat delivery
    • Menonaktifkan atau menghapus
  • Endpoint (tag Outgoing Webhooks)
  • Praktik terbaik
  • Rute terkait
Javascript