Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.iletiniz.com/llms.txt

Use this file to discover all available pages before exploring further.

İletiniz, webhook teslimatını at-least-once semantiği ile yapar. Geçici hatalar yeniden denenir; kalıcı hatalarda hızlıca pes edilir.

Retry Stratejisi

HTTP yanıtıİletiniz davranışı
2xxBaşarılı. Teslimat finalize edilir.
3xxKalıcı hata. Redirect takip edilmez. Endpoint’i 200 dönecek bir URL’e güncelleyin.
4xxKalıcı hata. Yeniden denenmez. Endpoint kontrat ihlali; logları inceleyin.
5xxGeçici. Aşağıdaki backoff şemasıyla yeniden denenir.
Network/DNS hatasıGeçici. Yeniden denenir.
Timeout (10 sn)Geçici. Yeniden denenir.

Backoff Şeması

Toplam 5 deneme, exponential backoff (taban gecikme 1 sn):
DenemeGecikme (kümülatif)
1Anında
2~1 sn
3~2 sn
4~4 sn
5~8 sn
  1. deneme de başarısız olursa teslimat failed olarak işaretlenir ve consecutive_failures sayacı artar.

Otomatik Deaktivasyon

Bir endpoint ardışık 50 başarısız teslimattan sonra otomatik olarak deaktif edilir. Tipik sebepler:
  • Sunucunuz tamamen kapalı (50 farklı event 5’er kez denendi → çok sayıda başarısızlık).
  • DNS kalıcı olarak yanlış yapılandırılmış.
  • Endpoint yanlışlıkla 4xx döndürüyor (örn. imza doğrulaması her istekte fail).
Bir başarılı teslimat sayacı sıfırlar. Deaktif olan endpoint:
  • Dashboard’da uyarı banner’ı ile gösterilir.
  • Yeni event’ler bu endpoint’e iletilmez.
  • Aktive Et butonu ile yeniden açılana kadar bekler.

Idempotency

Aynı (event, mesaj) çifti yeniden denemelerde aynı id ile gelir. id deterministik üretilir; aynı event aynı mesaj için her zaman aynı 32-karakter hex değerini taşır. Endpoint tarafında uygulanması gereken pratik:
// Redis SET-NX ile tek seferlik kabul
const fresh = await redis.set(`iltz:evt:${event.id}`, "1", "EX", 604800, "NX");
if (!fresh) {
  return res.status(200).end(); // zaten işlenmiş — no-op
}
// ... olayı işle
Veritabanı tarafında unique constraint ile de aynı sonuç alınabilir; sadece aynı id’yi iki kere işlemediğinizden emin olun.

Gözlemlenebilirlik

Dashboard → Webhook’lar → endpoint detay sayfasında:
  • Son 30 günün teslimat listesi
  • HTTP response code dağılımı
  • Response body’nin ilk 1 KB’si (debug amaçlı)
  • Deneme sayacı
  • Manuel Yeniden Dene butonu (başarısız teslimatları kuyruğa yeniden koyar)
Retention: teslimat kayıtları 30 gün boyunca tutulur, sonra otomatik temizlenir.

Endpoint Test Etme

Endpoint’inizi production’a almadan önce test için:
  • Dashboard’da Test Et butonu — sahte bir message.delivered payload’ı imzalı şekilde gönderir.
  • webhook.site gibi bir public catcher ile imza header’larını inceleyin.
  • ngrok ile lokal dev sunucunuzu tünelleyip gerçek event akışını izleyin.
Production endpoint’iniz HTTPS olmalıdır. HTTP URL’leri dashboard’da kabul edilmez. Test/dev için ngrok veya benzeri tünelleyiciler HTTPS sağlar.