EN Demo isteyin Ücretsiz Başlayın
Ana sayfa › Blog › Bir paketin anatomisi

CRM webhook nasıl kurulur: bir paketin anatomisi, imzadan teslimat günlüğüne

O Ohana360 Ekibi • 15 Ekim 2026 • 12 dk okuma
Ohana360 Kurulum ekranındaki webhook teslimat günlüğünü ve imzalı JSON paketini gösteren blog kapak görseli

CRM webhook kurmak, bir kayıt oluşturulduğunda, güncellendiğinde ya da silindiğinde kaydın JSON olarak sizin verdiğiniz adrese anında gönderilmesini sağlamaktır. Ohana360'ta bu iş Kurulum > Webhook'lar ve API ekranında dört adımda biter: ad, hedef adres, obje ve olay seçilir; imza anahtarı dış sisteme kaydedilir; Test Gönder ile deneme paketi yollanır; sonuç Teslimatlar tablosunda okunur.

Ohana360, satış, servis ve finans kayıtlarını tek veritabanında tutan bir iş bulutudur; webhook, bu bulutun dışarıya haber verme yoludur. Özellik listesi yerine tek bir paketi izliyoruz. Özel mobilya üreten Boran Mobilya'nın satış sorumlusu Selin Arda 15 Ekim sabahı "Vadi Konakları showroom" fırsatını Kazanıldı aşamasına çekti. Beş saniye içinde muhasebe yazılımına bağlı bir Make senaryosuna imzalı bir paket ulaştı ve orada fatura taslağı açıldı. Aşağıda o paketin anatomisi, sonra aynı sabahın teslimat günlüğünden beş teşhis.

Bir webhook paketinin anatomisi: dört başlık, beş alan Boran Mobilya'nın fırsatı Kazanıldı'ya çekildi; 5 saniye içinde muhasebe adresine bu paket gitti. GİDEN İSTEK • 15 EKİ 2026 11:41:12 POST https://hook.make.com/p3x9… Content-Type: application/json X-Ohana-Signature: sha256=9f2c41…e7b0 User-Agent: Ohana360-Webhook/1.0 GÖVDE (JSON) { "event": "record.updated", "obj": "opportunity", "record": { "id": "006K3V9Q2RT1AAA", "name": "Vadi Konakları showroom", "stage": "Closed Won", "amount": 480000, "accountId": "001M7Q2…", "owner": "Selin Arda", "cf_proje_kodu": "VK-2026-18", … }, "orgId": 27, "sentAt": "2026-10-15T08:41:12+00:00" } 1 Olay üç değerden biridir record.created, record.updated ya da record.deleted. Hangi alanın değiştiği yazmaz. 2 Kayıt tam gider Özel alanlar (cf_) dahil kaydın son hali. Eski değer (prev) pakete girmez. 3 İmza gövdeyle hesaplanır HMAC-SHA256(gövde, imza anahtarı). Karşı taraf aynı hesabı yapıp karşılaştırır. 4 Saat UTC'dir sentAt +00:00 ile gelir; Türkiye saati için üç saat eklenir. 5 Cevap 5 saniyede gelmeli Bağlantı 3 sn, toplam 5 sn. 2xx alınır; başka her kod kırmızı satır, tekrar yok.

Webhook nedir, Ohana360'ta nerede kurulur?

Webhook, Ohana360'ın bir kayıt olayında dış sisteme kendiliğinden POST isteği atmasıdır; dış sistemin Ohana360'a sorması gereken REST API'nin tersidir. Kurulum > Entegrasyonlar > Webhook'lar ve API ekranında Yeni Webhook düğmesi beş alanlı bir pencere açar ve Boran Mobilya'nın ilk webhook'u iki dakikada kuruldu:

Kaydet'ten sonra satır listede Aktif rozeti, obje çipi ve olay çipleriyle görünür; satırdaki kutu webhook'u göndermeden pasife alır. Ekranın üstünde dört sayaç durur: aktif webhook, başarılı teslim, başarısız teslim ve olay türleri. Aynı sayılar Kurulum > Otomasyonlar ve Entegrasyonlar sayfasındaki Dış Sistemler kartında "Webhook Teslimleri (başarılı / toplam)" olarak da okunur. Webhook ekranını yalnız Kurulum'a girebilen yönetici kullanır; Test Gönder ve Teslimatlar sunucuda yönetici kontrolünden geçer.

Bir webhook paketinin içinde ne var?

Paket, dört başlık ve beş alanlı bir JSON gövdeden oluşur: event, obj, record, orgId ve sentAt. Yukarıdaki görsel Selin'in fırsatı için giden paketin kendisidir; satır satır okuyalım.

  1. POST satırı ve Content-Type. Paket her zaman POST ile ve application/json gövdeyle gider; sorgu parametresi ya da form alanı yoktur.
  2. X-Ohana-Signature. sha256= önekiyle gövdenin HMAC-SHA256 imzası. Bir sonraki bölümün konusu.
  3. User-Agent. Ohana360-Webhook/1.0. Sunucu günlüklerinde paketi ayırt etmenin en kolay yolu budur.
  4. event. record.created, record.updated ya da record.deleted. Paket hangi alanın değiştiğini söylemez; Kazanıldı'ya çekilen fırsat da, tutarı düzeltilen fırsat da record.updated ile gelir. Karşı taraf record.stage alanına bakarak karar verir.
  5. obj. Kaydın obje adı: opportunity, lead, case, account, contact, invoice ya da cobj_ ile başlayan özel obje anahtarı. Değerler arayüz dilinden bağımsızdır.
  6. record. Kaydın son hali, bütün alanlarıyla: ad, aşama, tutar, sahip, şirket bağlantısı ve cf_ ile başlayan özel alanlar. Aşama verisi Türkçe arayüzde Kazanıldı görünse de pakette "Closed Won" olarak gider, çünkü fırsat aşamaları veride İngilizce saklanır. Eski değer pakete girmez; silme olayında ise kaydın silinmeden önceki hali gönderilir.
  7. orgId ve sentAt. Org numarası ve UTC zaman damgası. Make senaryosu paketi 08:41 UTC, yani Türkiye saatiyle 11:41'de aldı.

Gövde her yazımda sunucuda üretilir; tarayıcıdaki uygulama paketi görmez ve imza anahtarına dokunmaz. Bu yüzden Selin'in bilgisayarı kapansa da teslim yapılır: yazım veritabanına işlenir, yanıt Selin'e döner, paket ondan sonra gönderilir.

Paketin gerçekten Ohana360'tan geldiği nasıl doğrulanır?

Ohana360, paketin ham gövdesini webhook'un imza anahtarıyla HMAC-SHA256'dan geçirir ve sonucu X-Ohana-Signature başlığına yazar; karşı taraf aynı anahtarla aynı hesabı yapar ve iki değeri karşılaştırır. Boran Mobilya'nın muhasebe tarafında çalışan küçük bir Node servisi bunu tek satırla yapıyor: gövdenin HMAC'ini hesaplar, sha256= önekini atıp başlıkla kıyaslar, eşit değilse paketi 401 ile reddeder.

Ohana360 Kurulum ekranında Webhook'lar ve API sayfası: dört sayaç, iki webhook satırı, beş satırlık Teslimatlar tablosu ve açık Yeni Webhook penceresi
Boran Mobilya'nın Webhook'lar ve API ekranı: üstte dört sayaç, ortada iki webhook ve Teslimatlar tablosu, sağda imza anahtarı hazır gelen Yeni Webhook penceresi.

İmza hesabı ham gövdeyle yapılır; JSON'u önce ayrıştırıp yeniden yazan bir servis boşluk ve alan sırası değiştiği için farklı bir sonuç bulur ve her paketi reddeder. Anahtar değiştiğinde iki taraf birlikte güncellenir: Yenile düğmesi Ohana360'taki anahtarı değiştirir, dış sistemdeki kopya elle yenilenir. Make ve Zapier gibi araçlar imzayı kendiliğinden doğrulamaz; o senaryolarda adres gizli tutulur ve istenirse senaryo içinde bir HMAC adımı eklenir. Kurulumu denemenin yolu Test Gönder'dir: event değeri ping, obj değeri test ve "Ohana360 webhook testi" adlı tek kayıtla imzalı bir paket gider, sonuç saniyeler içinde toast olarak ve Teslimatlar'da ilk satır olarak görünür.

Hangi kaydetmeler webhook üretir, hangileri üretmez?

Webhook, kaydı veritabanına işleyen her yoldan üretilir: ekranda Kaydet, satır içi düzenleme, toplu güncelleme, içe aktarma, REST API yazımı, Web-to-Lead ve Web-to-Case formu. Sunucu eski ve yeni kopyayı karşılaştırıp olay listesini çıkarır; aynı liste takip bildirimlerini ve alan geçmişini de besler. Boran Mobilya'nın bir haftası:

Yazım yoluWebhookNot
Selin kanbanda kartı Kazanıldı sütununa sürüklediGiderrecord.updated, Fırsat
Sitedeki Web-to-Lead formu aday açtıGiderrecord.created, Müşteri Adayı; atama kuralı önce çalışır, pakette sahip dolu gelir
Muhasebe API ile faturanın durumunu Ödendi yaptıGiderrecord.updated, Fatura; API yazımı da olaydır
Zamanlanmış akış her sabah 09:00'da bir alanı güncellediGitmezzamanlanmış akışın kendi alan güncellemesi kayıt olayı üretmez; akışa Webhook Çağır aksiyonu eklenirse gider
420 satırlık Excel içe aktarımı tek seferde yüklendiKısmenistek başına en çok 20 teslim; ilk 20 olay gider, kalanı günlükte görünmez
Test GönderGiderevent ping, obj test

Yirmi sınırı, dış sistemi bir içe aktarmada yüzlerce istekle boğmamak içindir; toplu veri taşımada webhook yerine aktarım bittikten sonra REST API ile listeleme kullanılır. Paket yalnız aktif ve geçerli adresli webhook'lara gider; pasife alınan webhook için olay üretilmez ve sonradan açılınca geriye dönük gönderim yapılmaz.

Koşullu gönderim nasıl yapılır: Kurulum webhook'u mu, akış aksiyonu mu?

Kurulum'daki webhook tanımı obje ve olay seçer ama koşul almaz; "yalnız kazanılınca gönder" gibi bir kural için Kurulum > Akışlar'da kayıt tetikli akış kurulur ve aksiyon olarak Webhook Çağır seçilir. Selin ilk hafta Fırsat objesinde Güncelleme olayını açık bırakmıştı; muhasebe her tutar düzeltmesinde paket aldı ve Make senaryosu record.stage alanına bakarak eleme yapmak zorunda kaldı. İkinci hafta iki yolu ayırdı:

Aksiyon sunucuda koşar: akış tarayıcıda tetiklense bile paket sunucu tarafından imzalanıp gönderilir ve koşu Kurulum > Akışlar > Koşu Geçmişi'nde 90 gün görünür. Zamanlanmış akışta da aynı aksiyon vardır; "üç gün Beklemede kalan siparişleri her sabah dış sisteme bildir" bu yolla kurulur. Akışın koşul ve aksiyon mantığı otomatik hatırlatma rehberinde anlatılıyor.

Teslimat günlüğü nasıl okunur?

Teslimatlar tablosu sunucunun yaptığı her gönderimi zaman, olay, obje, adres ve HTTP koduyla listeler; yeşil rozet 2xx alındı demektir, kırmızı rozet ise adres yanlış, servis kapalı, imza reddedilmiş ya da 5 saniyede cevap gelmemiş demektir. Org başına son 100 teslim saklanır, ekranda son 50 gösterilir ve Yenile düğmesiyle tazelenir. Boran Mobilya'nın 15 Ekim sabahında beş satır vardı:

Teslimat günlüğü: beş satır, beş teşhis Boran Mobilya'nın 15 Ekim sabahı. Yeşil rozet 2xx demektir; diğer her kod ve bağlantısızlık kırmızı satırdır. ZAMAN OLAY OBJE HEDEF ADRES SONUÇ 1 11:41 Güncelleme Fırsat hook.make.com/p3x9… HTTP 200 2 11:42 Oluşturma Müşteri Adayı hooks.slack.com/services/T0… HTTP 404 3 11:50 Güncelleme Fırsat api.muhasebe-ornek.com/ohana HTTP 401 4 12:05 Silme Kişi hook.make.com/p3x9… hata 5 12:12 ping test boranmobilya.com/webhook HTTP 301 1 Alındı: Make senaryosu paketi aldı, muhasebede fatura taslağı açıldı. Yapılacak bir şey yok. 2 Adres yok: Slack'teki gelen webhook silinmiş; yeni adres alınıp Düzenle ile URL değiştirilir. 3 İmza reddedildi: muhasebe tarafındaki anahtar eski; Kopyala ile güncel anahtar tekrar kaydedilir. 4 Cevap gelmedi: 5 saniyede yanıt yok ya da bağlantı kurulamadı; servis kapalı. Paket tekrar gönderilmez. 5 Yönlendirme: http adresi https'e yönlendiriyor, Ohana360 yönlendirmeyi izlemez; adres https ile yazılır.

Günlük bir teşhis aracıdır, kurtarma aracı değil. Gönderilen gövde ve karşı tarafın cevap metni saklanmaz; satır yalnız kodu gösterir. Başarısız teslim yeniden denenmez ve zil bildirimi üretmez, webhook da kendiliğinden kapanmaz; 404 veren Slack adresi düzeltilene kadar her yeni aday kırmızı satır yazar. Kaçan kaydı dış sisteme almanın yolu, kaydı REST API ile tekrar okumaktır. Adres uzunluğu günlükte 300 karakterle kesilir; karşılaştırma yaparken adresin başına bakılır.

Dış sistem Ohana360'a veri yazacaksa ne kullanılır?

Ters yön REST API'dir: kullanıcı menüsü > API Anahtarları'ndan ohk_ ile başlayan bir anahtar üretilir ve her istek Authorization: Bearer başlığıyla gider. Boran Mobilya'nın muhasebe yazılımı faturayı kestiğinde Ohana360'taki fatura kaydını PATCH ile günceller; aynı ekran iki yönü de yönetir.

Mağaza siparişleri için ayrı bir gelen uç vardır: POST /api/commerce/order, Bearer anahtarıyla sipariş numarasına göre kaydı açar ya da günceller; WooCommerce, Shopify ve ikas için hazır bağlayıcılar pazaryeri sipariş rehberinde. Satış tarafındaki kayıt yapısı Satış360 sayfasında.

Dahil değil: webhook'un yapmadıkları

İlk webhook kurulurken neler kontrol edilir?

Beş dakikalık bir kontrol listesi, ilk kırmızı satırı ve ilk döngüyü önler. Boran Mobilya'nın listesi:

  1. Adres https ile mi yazıldı? http adresi https'e yönlendiriyorsa teslim 301 ile düşer.
  2. Test Gönder yeşil mi? Ping paketi 2xx almadan gerçek olaylar açılmaz.
  3. İmza dış sisteme kaydedildi mi? Anahtar yenilendiyse iki taraf da güncel mi?
  4. Olay seçimi dar mı? Yalnız kazanılan fırsat gerekiyorsa Kurulum webhook'u değil, koşullu akış ve Webhook Çağır.
  5. Geri yazan sistem kendi yazdığını tanıyor mu? API ile dönen her yazım yeni bir olaydır.
  6. Günlüğe kim bakacak? Başarısız teslim bildirim üretmediği için haftada bir Teslimatlar ve Otomasyonlar ve Entegrasyonlar sayacı kontrol edilir.

Bundan sonra okuyun