Ana içeriğe atla
Giden webhook’lar, sistemlerinizin API’yi yoklamadan Flowella’daki olaylara tepki vermesini sağlar. Her webhook’un bir URL’si, bir imzalama gizli anahtarı ve bir olay türleri listesi vardır. Bu olaylardan biri gerçekleştiğinde Flowella, URL’ye imzalı bir JSON POST isteği gönderir. Webhook’ları uygulamada Settings → Webhooks altından (Giden webhook’ları ekleme ve yönetme sayfasına bakın) veya webhook API’siyle yönetebilirsiniz. Bu sayfa, Flowella’nın ne gönderdiğine ilişkin referanstır.

Olay türleri

Bir webhook eklerken bu olayları işaretleyin veya API ile bir webhook oluştururken bunları events içinde iletin. Kişi olayları yalnızca bu tek kişilik API çağrıları için tetiklenir. POST /v1/contacts/bulk-upsert için, gelen mesajlarla oluşturulan kişiler için veya uygulamada yapılan ya da HubSpot’tan senkronize edilen değişiklikler için tetiklenmez.
Bilinen sorun: optout.created, kişi bir anahtar kelime gönderse de siz POST /v1/opt-outs çağrısı yapsanız da bir kişinin bir WhatsApp numarasındaki ilk abonelikten çıkması için tetiklenmez. Şu anda yalnızca yeniden abone olmuş bir kişi tekrar abonelikten çıktığında tetiklenir. Her abonelikten çıkmayı yakalamak için buna güvenmeyin: abonelikten çıkma kayıtlarını GET /v1/opt-outs (kapsam contacts:read) ile listeleyin.
Flowella ayrıca uygulamada Send test event seçeneğini belirlediğinizde veya POST /v1/webhooks/{id}/test çağrısı yaptığınızda webhook.test gönderir. Bu olaya abone olamazsınız. data değeri { "test": true, "sentAt": "<ISO 8601 time>" } şeklindedir.
Tek bir giden mesaj iki message.sent olayı oluşturabilir: biri Flowella mesajı Meta’ya teslim ettiğinde, diğeri Meta mesajı gönderildi olarak bildirdiğinde. İkisinin üst düzey id değerleri farklıdır. Bunları aynı mesaja bağlamak için data.messageId kullanın.

İstek biçimi

Flowella her olayı şu başlıklarla bir HTTP POST olarak gönderir: Flowella başka özel başlık göndermez. Olay türü ve kimliği gövdededir.

Gövde

Her webhook’un, webhook API’si tarafından payloadVersion olarak döndürülen bir yük sürümü vardır. Sürüm 1 her webhook için varsayılandır ve bunu değiştirmek için uygulamada veya API’de bir ayar yoktur. İki sürüm şu zarfları kullanır:
Flowella, data değeri 256 KB’tan büyük olan bir olayı göndermez.

Webhook imzalarını doğrulama

Her isteğe güvenmeden önce imzasını kontrol edin. Flowella, X-Flowella-Signature değerini şöyle hesaplar:
  • Algoritma: SHA-256 ile HMAC.
  • Anahtar: tam olarak kaydedildiği şekliyle, UTF-8 metin olarak imzalama gizli anahtarı. API tarafından oluşturulan bir gizli anahtar whsec_ önekini içerir.
  • Mesaj: Flowella’nın gönderdiği şekliyle, bayt bayt ham istek gövdesi. Başka hiçbir şey imzalanmaz: imzada zaman damgası veya URL yoktur.
  • Çıktı: sha256= öneki olmadan, 64 karakterlik küçük harfli onaltılık değer.
Doğrulamak için ham gövde üzerinde aynı HMAC’i hesaplayın ve sabit zamanlı bir karşılaştırmayla başlıkla karşılaştırın. API ile yapılan bir döndürmeden sonraki 24 saat boyunca istek iki başlığı da taşır: başlıklardan biri elinizdeki bir gizli anahtarla eşleşiyorsa isteği kabul edin.
İmzayı, herhangi bir ara katman yazılımı gövdeyi ayrıştırmadan veya yeniden biçimlendirmeden önce ham gövde üzerinde hesaplayın. Çerçeveniz JSON’u ayrıştırır ve siz onu yeniden serileştirirseniz baytlar değişir ve imza eşleşmez.

Yanıtlar, yeniden denemeler ve zaman aşımları

Flowella birden fazla olayı aynı anda teslim eder, bu nedenle olaylar sırasız ulaşabilir. Sıra önemliyse created_at veya occurred_at kullanın. İmza doğrulanır doğrulanmaz bir 2xx durumuyla yanıt verin, ardından olayı arka planda işleyin. Yeniden denemelerin uygulamada nasıl göründüğü için Yeniden denemeler ve geri çekilme bölümüne bakın.

Yinelenen olayları ayıklama

Uç noktanız aynı olayı birden fazla kez alabilir: uç noktanız zaman aşımına uğradığı halde isteği yine de işlediğinde yapılan bir yeniden deneme veya API üzerinden bir yeniden oynatma. Yinelenenleri üst düzey id değerine göre ayıklayın:
  1. İşlediğiniz her olayın id değerini saklayın.
  2. Gelen bir id zaten saklanmışsa 200 ile yanıt verin ve başka bir şey yapmayın.
  3. Saklanan kimlikleri en az teslimatları yeniden oynatabileceğiniz süre boyunca tutun.
Yinelenenleri data.messageId değerine göre ayıklamayın. message.sent ve message.delivered gibi aynı mesajla ilgili farklı olaylar bu değeri paylaşır.

Olay akışı

Olay akışı, webhook’lara çekme tabanlı bir alternatiftir. GET /v1/events, hiçbir webhook’un abone olmadığı olaylar dahil son 7 güne ait olayları döndürür. events:read kapsamını gerektirir. type (tek bir tür veya virgülle ayrılmış bir liste), occurredAfter ve occurredBefore ile filtreleyin ve limit ve cursor ile sayfalandırın. Her öğede id, type, occurredAt, version, correlationId ve data bulunur. id, webhook gövdesindeki id ile eşleşir; böylece uç noktanız çalışmadığı dönemdeki boşlukları doldurmak için akışı kullanabilirsiniz.

Webhook’ları API ile yönetme

Tüm webhook uç noktaları, webhooks:manage kapsamına sahip bir API anahtarı veya OAuth erişim token’ı gerektirir. Uygulamada oluşturulan anahtarlar bu kapsama sahiptir. Kimlik doğrulama için API girişi sayfasına bakın. Webhook nesneleri id, name, url, events, isActive, consecutiveFailures, signingSecretPrefix (mevcut gizli anahtarın ilk 8 karakteri), payloadVersion, lastTriggeredAt, disabledAt, createdAt ve updatedAt alanlarını içerir. API üzerinden yönetilen webhook’lar için birkaç kural geçerlidir:
  • İmzalama gizli anahtarını API üzerinden seçemezsiniz. POST /v1/webhooks, whsec_ ile başlayan bir anahtar oluşturur ve bunu signingSecret olarak bir kez döndürür.
  • Yeniden oynatmalar başarısızlık sayacına dahil edilmez ve sayacı sıfırlamaz. Flowella bir yeniden oynatmayı yalnızca webhook etkinken ve o olay türüne hâlâ abone iken teslim eder.
  • URL, uygulamadakiyle aynı URL kurallarına uymalıdır.

Bir imzalama gizli anahtarını döndürme

Bir gizli anahtarın sızdığını düşündüğünüzde veya düzenli bir programla anahtarı döndürün. Döndürme, uygulamada gizli anahtarını kendiniz yazdığınız webhook’lar dahil, gizli anahtarı olan her webhook için çalışır.
1

Yeni bir gizli anahtar isteyin

Döndürme uç noktasını çağırın ve yanıttaki signingSecret değerini saklayın. Flowella bunu yalnızca bir kez döndürür.
2

24 saat boyunca iki gizli anahtarı da kabul edin

Yeni teslimatlar X-Flowella-Signature içinde yeni gizli anahtarla ve X-Flowella-Signature-Previous içinde eski gizli anahtarla imzalanır. Hâlâ eski gizli anahtarı kullanan bir işleyici, Webhook imzalarını doğrulama bölümündeki örnekte olduğu gibi iki başlığı da kontrol ederse çalışmaya devam eder.
3

Yeni gizli anahtara geçin

İşleyicinizi 24 saat içinde yeni gizli anahtarla güncelleyin. Bundan sonra Flowella X-Flowella-Signature-Previous göndermeyi bırakır.
Uygulamada New signing secret ile gizli anahtarı değiştirmenin örtüşme süresi yoktur: eski gizli anahtar hemen çalışmayı durdurur.

Yerel olarak test etme

Webhook’ları kendi bilgisayarınızda almak için yerel sunucunuzu ngrok veya Cloudflare Tunnel gibi herkese açık bir tünel üzerinden dışarıya açın. Uç nokta olarak tünelin herkese açık URL’sini kullanın. Ardından ihtiyaç duyduğunuzda istek göndermek için Send test event seçeneğini kullanın. Flowella yerel ve özel adresleri reddeder, bu nedenle bir localhost URL’si çalışmaz.

İlgili

Webhook'ları uygulamada yönetme

Uç noktalar ekleyin, test olayları gönderin ve teslimat günlüğünü okuyun.

API girişi

Kimlik doğrulama, kapsamlar, hız sınırları ve hatalar.

API anahtarları

Webhook API’si için ihtiyacınız olan anahtarı oluşturun.

Geliştirici merkezi

Son API istekleri, hızlı başlangıç kılavuzları ve API sandbox.
Son değiştirilme tarihi 24 Ekim 2026