Perilaku provider webhook

Apa yang dilakukan setiap pengirim saat endpoint Anda lambat atau mati, dan bagaimana pengirim menandatangani apa yang dikirimnya. Setiap klaim di sini punya sumber, dan kolom yang sumbernya tidak kami temukan dibiarkan kosong, bukan diisi angka yang terdengar masuk akal.

Kolom tanda tangan

Diverifikasi dengan verifier yang berfungsi untuk setiap provider, dibuktikan oleh test suite. Spesifikasi yang salah dibaca membuat tes gagal, alih-alih ikut dirilis.

terakhir diperiksa 2026-08-20

Kolom pengiriman

Diambil dari dokumentasi milik masing-masing vendor, bukan dari tulisan pihak lain. Sumber ditautkan di setiap baris.

terakhir diperiksa 2026-08-06

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.

ProviderBatas waktu responsPercobaan ulangBerhenti / menonaktifkan
Slacksumber3 detik3 percobaan ulang: langsung, setelah 1 menit, setelah 5 menitLangganan event dinonaktifkan jika lebih dari 95% upaya gagal dalam 60 menit
LINEsumber2 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 diungkapkanDapat menangguhkan pengiriman webhook jika server bot terus gagal menerimanya; ambang batasnya tidak dipublikasikan
Xerosumber5 detik

200 dalam 5 detik, tanpa body dan tanpa cookie; 401 jika tanda tangannya salah

belum diverifikasibelum diverifikasi
Discordsumber3 detik

Endpoint interaksi harus mengirim respons awal dalam 3 detik

belum diverifikasibelum diverifikasi
Shopifysumber5 detik

1 detik untuk terhubung, 5 detik untuk seluruh permintaan

8 percobaan ulang selama 4 jamLangganan yang dibuat lewat Admin API dihapus setelah 8 kegagalan berturut-turut, disertai email peringatan ke kontak developer darurat aplikasi tersebut
Paddlesumber5 detikLive: hingga 60 upaya selama sekitar 2 hari, sekitar 10 pada jam pertama dan sekitar 45 pada hari pertama. Sandbox: 3 upaya dalam sekitar 2 menitbelum diverifikasi
HubSpotsumber5 detik

Berlaku untuk seluruh batch, yang dapat berisi hingga 100 notifikasi

Hingga 10 upaya yang tersebar selama 24 jambelum diverifikasi
GitHubsumber10 detikTidak ada. GitHub tidak mengirim ulang pengiriman yang gagal secara otomatisTidak ada penonaktifan. Pengiriman tetap dapat dikirim ulang secara manual selama 3 hari, lalu catatannya hilang
Meta (Instagram, Facebook, Threads)sumbertidak dipublikasikanDicoba ulang dengan frekuensi yang makin jarang selama 36 jam, lalu dibuang. WhatsApp Cloud API mencoba ulang hingga 7 haribelum diverifikasi
Twiliosumber15 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 ulangbelum diverifikasi
Stripesumbertidak 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 jamEndpoint dinonaktifkan setelah terus gagal, dengan email pemberitahuan lebih dulu. Event tetap ada di Events API selama 30 hari
Svix (Clerk, Resend)sumbertidak dipublikasikan8 upaya: langsung, 5 detik, 5 menit, 30 menit, 2 jam, 5 jam, 10 jam, 10 jam. Setelah itu, operational webhook message.attempt.exhaustedEndpoint dinonaktifkan setelah semua upaya gagal selama 5 hari
WooCommercesumbertidak 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 diverifikasiWebhook 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.

ProviderAlgoritmaPayload bertanda tanganEncodingHeaderToleransi
SlackHMAC-SHA256v0:{timestamp}:{body}hexx-slack-signature = v0=hex5 menit
LINEHMAC-SHA256raw bodybase64x-line-signature = base64tidak ada
XeroHMAC-SHA256raw bodybase64x-xero-signature = base64tidak ada
DiscordEd25519{timestamp}{body}hexx-signature-ed25519 + x-signature-timestamptidak ada
ShopifyHMAC-SHA256raw bodybase64x-shopify-hmac-sha256tidak ada
PaddleHMAC-SHA256{timestamp}:{body}hexpaddle-signature = ts=X;h1=hex5 detik
HubSpotHMAC-SHA256POST{decodedUrl}{body}{timestamp}base64x-hubspot-signature-v35 menit
GitHubHMAC-SHA256raw bodyhexx-hub-signature-256 = sha256=hextidak ada
Meta (Instagram, Facebook, Threads)HMAC-SHA256raw bodyhexx-hub-signature-256 = sha256=hextidak ada
TwilioHMAC-SHA1full URL + form params sorted by keybase64x-twilio-signaturetidak ada
StripeHMAC-SHA256{timestamp}.{body}hexstripe-signature = t=X,v1=hex5 menit
Svix (Clerk, Resend)HMAC-SHA256{id}.{timestamp}.{body}base64svix-signature = v1,base645 menit
WooCommerceHMAC-SHA256raw bodybase64x-wc-webhook-signaturetidak ada
Lemon SqueezyHMAC-SHA256raw bodyhexx-signature + x-event-nametidak ada
PayPalRSA-SHA256{txId}|{txTime}|{webhookId}|{crc32(body)}base64paypal-transmission-sig + 4 moretidak ada
SendGridECDSA P-256{timestamp}{body}base64x-twilio-email-event-webhook-signaturetidak ada
LinearHMAC-SHA256raw bodyhexlinear-signaturetidak ada
SentryHMAC-SHA256raw body, no timestamphexsentry-hook-signaturetidak ada
IntercomHMAC-SHA1raw bodyhexx-hub-signature = sha1=hextidak ada
VercelHMAC-SHA1raw bodyhexx-vercel-signaturetidak 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