Perilaku pengiriman
Baca kolom batas waktu respons lebih dulu. Pengirim paling ketat yang mengirim ke Anda adalah batasan Anda yang sebenarnya, bukan pengirim yang paling familier.
| Provider | Batas waktu respons | Percobaan ulang | Berhenti / menonaktifkan |
|---|---|---|---|
| Slacksumber | 3 detik | 3 percobaan ulang: langsung, setelah 1 menit, setelah 5 menit | Langganan event dinonaktifkan jika lebih dari 95% upaya gagal dalam 60 menit |
| LINEsumber | 2 detik Dihitung sebagai request_timeout jika server bot belum menjawab dalam 2 detik | Webhook redelivery, nonaktif secara default (aktifkan di pengaturan Messaging API channel tersebut); jumlah dan intervalnya tidak diungkapkan | Dapat menangguhkan pengiriman webhook jika server bot terus gagal menerimanya; ambang batasnya tidak dipublikasikan |
| Xerosumber | 5 detik 200 dalam 5 detik, tanpa body dan tanpa cookie; 401 jika tanda tangannya salah | belum diverifikasi | belum diverifikasi |
| Discordsumber | 3 detik Endpoint interaksi harus mengirim respons awal dalam 3 detik | belum diverifikasi | belum diverifikasi |
| Shopifysumber | 5 detik 1 detik untuk terhubung, 5 detik untuk seluruh permintaan | 8 percobaan ulang selama 4 jam | Langganan yang dibuat lewat Admin API dihapus setelah 8 kegagalan berturut-turut, disertai email peringatan ke kontak developer darurat aplikasi tersebut |
| Paddlesumber | 5 detik | Live: hingga 60 upaya selama sekitar 2 hari, sekitar 10 pada jam pertama dan sekitar 45 pada hari pertama. Sandbox: 3 upaya dalam sekitar 2 menit | belum diverifikasi |
| HubSpotsumber | 5 detik Berlaku untuk seluruh batch, yang dapat berisi hingga 100 notifikasi | Hingga 10 upaya yang tersebar selama 24 jam | belum diverifikasi |
| GitHubsumber | 10 detik | Tidak ada. GitHub tidak mengirim ulang pengiriman yang gagal secara otomatis | Tidak ada penonaktifan. Pengiriman tetap dapat dikirim ulang secara manual selama 3 hari, lalu catatannya hilang |
| Meta (Instagram, Facebook, Threads)sumber | tidak dipublikasikan | Dicoba ulang dengan frekuensi yang makin jarang selama 36 jam, lalu dibuang. WhatsApp Cloud API mencoba ulang hingga 7 hari | belum diverifikasi |
| Twiliosumber | 15 detik Dapat dikonfigurasi. rt (read timeout) default 15000ms (maks. 15000), ct (connect) default 5000ms (maks. 10000), tt (total) default 15000ms | Dapat dikonfigurasi: rc 0 sampai 5, default 1. rp menentukan kegagalan mana yang dicoba ulang | belum diverifikasi |
| Stripesumber | tidak dipublikasikan Stripe tidak memublikasikan angkanya. Dokumentasinya hanya meminta Anda mengembalikan 2xx sebelum logika yang lambat. 20 detik adalah angka acuan yang dipakai komunitas | Backoff eksponensial hingga 3 hari dalam mode live. Sandbox: 3 upaya selama beberapa jam | Endpoint dinonaktifkan setelah terus gagal, dengan email pemberitahuan lebih dulu. Event tetap ada di Events API selama 30 hari |
| Svix (Clerk, Resend)sumber | tidak dipublikasikan | 8 upaya: langsung, 5 detik, 5 menit, 30 menit, 2 jam, 5 jam, 10 jam, 10 jam. Setelah itu, operational webhook message.attempt.exhausted | Endpoint dinonaktifkan setelah semua upaya gagal selama 5 hari |
| WooCommercesumber | tidak dipublikasikan Pengiriman dimasukkan ke antrean Action Scheduler dan dijalankan oleh WP-Cron, sehingga webhook baru berangkat saat halaman berikutnya dimuat, bukan saat event terjadi | belum diverifikasi | Webhook dinonaktifkan setelah lebih dari lima kegagalan pengiriman berturut-turut |
Dua baris layak dibaca dua kali. GitHub sama sekali tidak mencoba ulang, jadi pengiriman yang gagal hilang kecuali seseorang mengirimnya ulang dalam tiga hari. Paddle menempatkan sekitar 10 dari 60 upayanya di jam pertama dan sekitar 45 di hari pertama, dan itu jauh lebih menyiksa handler yang sekadar lambat dibanding kurva Stripe.
Skema tanda tangan
Kolom payload bertanda tangan adalah kolom yang paling sering membuat orang membuang waktu berjam-jam. Apa pun selain raw body berarti Anda tidak bisa hanya meng-hash body permintaan.
| Provider | Algoritma | Payload bertanda tangan | Encoding | Header | Toleransi |
|---|---|---|---|---|---|
| Slack | HMAC-SHA256 | v0:{timestamp}:{body} | hex | x-slack-signature = v0=hex | 5 menit |
| LINE | HMAC-SHA256 | raw body | base64 | x-line-signature = base64 | tidak ada |
| Xero | HMAC-SHA256 | raw body | base64 | x-xero-signature = base64 | tidak ada |
| Discord | Ed25519 | {timestamp}{body} | hex | x-signature-ed25519 + x-signature-timestamp | tidak ada |
| Shopify | HMAC-SHA256 | raw body | base64 | x-shopify-hmac-sha256 | tidak ada |
| Paddle | HMAC-SHA256 | {timestamp}:{body} | hex | paddle-signature = ts=X;h1=hex | 5 detik |
| HubSpot | HMAC-SHA256 | POST{decodedUrl}{body}{timestamp} | base64 | x-hubspot-signature-v3 | 5 menit |
| GitHub | HMAC-SHA256 | raw body | hex | x-hub-signature-256 = sha256=hex | tidak ada |
| Meta (Instagram, Facebook, Threads) | HMAC-SHA256 | raw body | hex | x-hub-signature-256 = sha256=hex | tidak ada |
| Twilio | HMAC-SHA1 | full URL + form params sorted by key | base64 | x-twilio-signature | tidak ada |
| Stripe | HMAC-SHA256 | {timestamp}.{body} | hex | stripe-signature = t=X,v1=hex | 5 menit |
| Svix (Clerk, Resend) | HMAC-SHA256 | {id}.{timestamp}.{body} | base64 | svix-signature = v1,base64 | 5 menit |
| WooCommerce | HMAC-SHA256 | raw body | base64 | x-wc-webhook-signature | tidak ada |
| Lemon Squeezy | HMAC-SHA256 | raw body | hex | x-signature + x-event-name | tidak ada |
| PayPal | RSA-SHA256 | {txId}|{txTime}|{webhookId}|{crc32(body)} | base64 | paypal-transmission-sig + 4 more | tidak ada |
| SendGrid | ECDSA P-256 | {timestamp}{body} | base64 | x-twilio-email-event-webhook-signature | tidak ada |
| Linear | HMAC-SHA256 | raw body | hex | linear-signature | tidak ada |
| Sentry | HMAC-SHA256 | raw body, no timestamp | hex | sentry-hook-signature | tidak ada |
| Intercom | HMAC-SHA1 | raw body | hex | x-hub-signature = sha1=hex | tidak ada |
| Vercel | HMAC-SHA1 | raw body | hex | x-vercel-signature | tidak ada |
Gunakan data ini
Tabel yang sama tersedia sebagai JSON di /providers.json, dengan lisensi CC BY 4.0. Salin, sematkan, koreksi. Jika ada angka yang salah atau vendor mengubah sesuatu, buka issue di repo dan kami akan memperbaikinya di sini.
Atribusi: AnyHook, Referensi Perilaku Provider Webhook, https://anyhook.net/id/providers
Tempat setiap angka dibahas
- GitHub tidak mencoba ulang, dan catatannya kedaluwarsa dalam tiga hari
- Tiga detik dari Slack, dan ambang penonaktifan 95%
- 60 upaya Paddle dibandingkan kurva Stripe
- Timeout Twilio yang dapat dikonfigurasi, dan mengapa percobaan ulang default tidak pernah berjalan
- eventId HubSpot didokumentasikan sebagai tidak dijamin unik
- Memverifikasi tanda tangan, provider demi provider