Webhook Nedir, Ne İşe Yarar?

Yazar: Serhat AkdemirYayın: 11 Ağu 2026Güncelleme: 5 Eyl 202619 dk Okuma

Webhook, bir olay gerçekleştiğinde uygulamalar arası gerçek zamanlı veri aktarımı sağlayan HTTP tabanlı bir mekanizmadır. Olay tetiklemeli yapısıyla anlık otomasyon ve veri senkronizasyonu sunar.

Webhook Nedir, Ne İşe Yarar? için öne çıkan görsel
Webhook Nedir, Ne İşe Yarar? için öne çıkan görsel

Webhook, bir olay gerçekleştiğinde uygulamalar arası gerçek zamanlı veri aktarımı sağlayan HTTP tabanlı bir mekanizmadır. Olay tetiklemeli yapısıyla anlık otomasyon ve veri senkronizasyonu sunar. Modern dijital ekosistemlerde uygulamaların birbiriyle hızlı ve sorunsuz konuşması, operasyonel verimliliğin temel belirleyicisidir. Bu noktada geliştiricilerin ve teknik karar vericilerin sıklıkla karşılaştığı Webhook Nedir, Ne İşe Yarar? sorusu, sistemler arası gerçek zamanlı veri entegrasyonunun kapısını aralamaktadır. Bu teknik rehberde, webhook teknolojisinin çalışma prensibini, geleneksel veri çekme yöntemlerinden farkını, veri güvenliği standartlarını ve işletmenizin otomasyon süreçlerinde nasıl kritik bir rol oynadığını derinlemesine inceliyoruz.

Webhook Nedir? Temel Kavramlar ve Tanımı

Modern yazılım mimarilerinde uygulamalar arası olay tabanlı gerçek zamanlı veri akışını simgeleyen editoryal illüstrasyon
Webhook teknolojisi, olay tabanlı mimarinin temel taşıdır.

Yazılım geliştirme ve sistem entegrasyonu süreçlerinde sistemlerin birbiriyle nasıl ve ne zaman haberleşeceği, mimari tasarımın en kritik kararlarından biridir. Webhook, en basit tanımıyla, bir uygulamada belirli bir olay meydana geldiğinde başka bir uygulamaya gerçek zamanlı olarak veri gönderen HTTP tabanlı bir geri çağırma (callback) mekanizmasıdır. Bu yapı, veri sağlayan uygulamanın (provider), veri tüketen uygulamaya (consumer) "bende yeni bir gelişme oldu, bilgileri şunlar" diyerek veri göndermesini sağlar.

Geleneksel mimarilerde bir sistemin diğerindeki veri güncellemelerinden haberdar olması için sürekli sorgulama yapması gerekirken, webhook teknolojisi bu akışı tamamen tersine çevirir. "Don't call us, we'll call you" (Bizi aramayın, biz sizi ararız) prensibine dayanan bu yaklaşım, ağ trafiğini optimize ederken kaynak tüketimini minimuma indirir. Bu yönüyle modern mikroservis mimarilerinin, e-ticaret platformlarının ve bulut tabanlı SaaS araçlarının vazgeçilmez bir parçası haline gelmiştir.

Teknik açıdan bakıldığında, bir webhook entegrasyonu kurmak, alıcı sunucu üzerinde dış dünyaya açık bir HTTP endpoint’i (veri kabul noktası) oluşturmaktan ibarettir. Gönderici sistem, ilgili olay gerçekleştiği anda bu endpoint'e bir HTTP istek paketi gönderir. Bu paket içerisinde olayın detaylarını barındıran veri yükü yer alır. Böylece manuel tetiklemeye ya da zamanlanmış görevlere (cron job) ihtiyaç duymadan, milisaniyeler düzeyinde sistemler arası senkronizasyon sağlanır.

Webhook Kavramının Teknik Özeti

Bir webhook mekanizmasının tam olarak anlaşılabilmesi için olay tabanlı mimari (event-driven architecture) konseptinin kavranması gerekir. Webhook, bu mimarinin HTTP protokolü üzerine inşa edilmiş pratik bir uygulamasıdır. Süreç, sistem üzerinde tanımlanan bir "olay" (event) ile başlar. Bu olay bir e-ticaret sitesinde siparişin tamamlanması, bir SaaS uygulamasında kullanıcının aboneliğini iptal etmesi veya bir kod deposuna yeni bir commit atılması olabilir.

Olay tetiklendiği anda, kaynak uygulama arka planda bir HTTP POST isteği hazırlar. Bu isteğin gövdesinde (body) gönderilecek olan veriler, genellikle JSON (JavaScript Object Notation) formatında yapılandırılır. Gönderici sistem, alıcı sistemin daha önce kendisine bildirdiği webhook URL adresine bu isteği yönlendirir. Alıcı sunucu ise gelen POST isteğini dinler, gövdedeki veriyi parse eder (ayrıştırır) ve kendi iş mantığına (business logic) göre işler.

Bu süreç tamamen asenkron olarak yürütülebilir. Yani gönderici sunucu, alıcı sunucunun veriyi tamamen işlemesini ve uzun süren veritabanı kayıtlarını tamamlamasını beklemek zorunda değildir. Alıcı sunucu, isteği aldığını ve kuyruğa eklediğini belirten bir HTTP 200 veya HTTP 202 "Accepted" durum kodu döndürdüğü anda ağ bağlantısı sonlandırılır. Bu durum, her iki sistemin de performansını ve ayakta kalma süresini (uptime) doğrudan olumlu etkiler.

Neden 'Reverse API' Olarak Adlandırılır?

Geleneksel API (Application Programming Interface) entegrasyonlarında istemci (client), sunucuya (server) istek atarak veri talep eder. Örneğin, muhasebe yazılımınız her saat başı banka API'sine bağlanarak "Yeni bir havale geldi mi?" sorusunu sorar. Bu durum, veri akış yönünün istemciden sunucuya doğru kurulduğu klasik bir "Pull" (Çekme) modelidir.

Webhook mimarisinde ise bu süreç tam tersine döner; bu nedenle literatürde "Reverse API" (Tersine API) terimi kullanılır. Webhook modelinde, veriyi elinde bulunduran sunucu, istemcinin sunucu rolünü üstlendiği bir endpoint'e doğrudan istek atarak veriyi "Push" (İtme) yöntemiyle iletir. Rollerin bu şekilde yer değiştirmesi, entegrasyon tasarımlarında radikal bir değişiklik yaratır.

Reverse API modelinde, istemci artık sorgulayan taraf değil, dinleyen taraftır. Kendi sunucunuzda dışarıya açık bir API ucu yazarsınız ve üçüncü parti servis (örneğin Stripe veya Shopify) bu API ucunun istemcisi haline gelir. Bu mimari yön değişikliği, sadece veri iletim hızını artırmakla kalmaz, aynı zamanda istemci tarafında sürekli istek yönetimi için harcanan işlemci (CPU) ve bellek (RAM) kaynaklarını neredeyse sıfıra indirir.

Webhook'un Sağladığı Temel Avantajlar

Webhook kullanımının işletmelere ve mühendislik ekiplerine sağladığı en somut fayda, gerçek zamanlı veri aktarımı kabiliyetidir. Finansal işlemler, anlık stok güncellemeleri veya müşteri destek bildirimleri gibi gecikmeye tahammülü olmayan süreçlerde, webhook kullanımı milisaniyeler içinde aksiyon alınmasını sağlar. Bu durum, müşteri memnuniyetini doğrudan artıran bir faktördür.

Ağ ve altyapı maliyetleri açısından bakıldığında, gereksiz HTTP trafiğinin engellenmesi çok büyük bir tasarruf sağlar. Geleneksel sorgulama (polling) yönteminde yapılan isteklerin %98.5'i genellikle "yeni veri yok" yanıtıyla sonuçlanır. Webhook ise yalnızca ve yalnızca yeni bir veri oluştuğunda tetiklendiği için ağ bant genişliğini (bandwidth) fuzuli yere işgal etmez ve bulut altyapı faturalarını (AWS, Azure vb.) ciddi oranda düşürür.

Ayrıca, yazılım geliştirme süreçlerinde kod karmaşıklığını azaltır. Sürekli sorgulama yapan döngüler (loops), zamanlanmış görev yöneticileri ve hata durumunda tekrar deneme mekanizmaları kurmak yerine; sadece gelen HTTP POST isteklerini karşılayan temiz bir controller yazmak yeterlidir. Bu, teknik borçlanmayı (technical debt) azaltarak yazılım ekiplerinin daha esnek ve bakımı kolay kod tabanları oluşturmasına olanak tanır.

Webhook Nasıl Çalışır? Adım Adım İşleyiş Süreci

Kaynak sistemden hedef sisteme doğru akan veri paketlerini ve HTTP durum kodlarını içeren editoryal teknik illüstrasyon
Olay tetiklendiği anda hazırlanan veri paketi, HTTP POST protokolüyle güvenli bir şekilde hedef sunucuya iletilir.

Bir webhook mekanizmasının arka plandaki çalışma düzeni, standart web teknolojileri üzerine kuruludur. Bu süreç, karmaşık protokoller yerine doğrudan HTTP protokolünün esnekliğini ve evrenselliğini kullanır. Entegrasyonun sağlıklı çalışabilmesi için gönderici ve alıcı tarafların önceden belirlenmiş kurallar çerçevesinde anlaşmış olması gerekir.

Süreç, veri kaynağında (örneğin bir ödeme geçidinde) bir durum değişikliği oluştuğunda başlar. Bu durum değişikliği, sistemin kendi içinde tanımlı kurallara göre bir "olay" olarak etiketlenir. Olay oluştuktan sonra, sistem bu olaya ait tüm meta verileri ve güncel bilgileri bir araya getirerek bir veri paketi oluşturur ve hedef adrese doğru yola çıkarır.

Alıcı sunucu ise bu isteği karşılayıp, gelen verinin kaynağını doğruladıktan sonra hızlı bir şekilde "mesaj alındı" yanıtı döner. Arka planda ise alınan bu veri ile ne yapılacağına karar veren iş mantığı devreye girer. Tüm bu sürecin sağlıklı ilerlemesi için her adımın optimize edilmesi ve olası kesintilere karşı dayanıklı tasarlanması şarttır.

Olay Tetikleyicisi (Event Trigger) Nedir?

Olay tetikleyicisi (trigger), bir sistemde durum değişikliğine yol açan ve bir webhook gönderimini başlatan spesifik aksiyondur. Yazılım dünyasında her şey bir olay olarak tanımlanabilir. Ancak kaynakların verimli kullanılması adına yalnızca kritik ve dış sistemleri ilgilendiren olaylar tetikleyici olarak belirlenir.

Örneğin, bir CRM (Müşteri İlişkileri Yönetimi) sisteminde şu olaylar birer tetikleyici olabilir:

  • contact.created (Yeni bir müşteri kaydı oluşturulduğunda)

  • deal.updated (Bir satış fırsatının aşaması değiştiğinde)

  • ticket.resolved (Bir destek talebi çözümlendiğinde)

Bu tetikleyiciler, veri sağlayıcı platformun veritabanı katmanında gerçekleşen CRUD (Create, Read, Update, Delete) işlemlerine sıkı sıkıya bağlıdır. Bir veri satırı güncellendiğinde veya silindiğinde, veritabanı tetikleyicileri (database triggers) ya da uygulama katmanındaki event dispatcher mekanizmaları devreye girerek ilgili webhook kuyruğunu besler. İşletmeler için doğru tetikleyicileri seçmek, gereksiz veri gürültüsünü önlemek adına hayati önem taşır.

HTTP POST İstekleri ve Payload Yapısı

Tetikleyici devreye girdiğinde, kaynak sistem alıcı sisteme göndereceği paketi hazırlar. Bu paket, HTTP protokolünün standart POST metodunu kullanır. POST metodunun tercih edilmesinin nedeni, URL limitlerine takılmadan büyük miktarda veriyi (body) güvenli ve yapılandırılmış bir şekilde taşıyabilmesidir.

Bu veri gövdesine payload (veri yükü) adı verilir. Günümüzde payload yapısı neredeyse standart olarak JSON formatında tasarlanır. Aşağıda, tipik bir e-ticaret sipariş oluşturma olayına ait örnek bir JSON payload yapısı yer almaktadır:

{
  "event": "order.created",
  "timestamp": 1718123456,
  "data": {
    "order_id": "ORD-2026-9948",
    "customer": {
      "id": "cust_88319",
      "email": "[email protected]"
    },
    "totals": {
      "subtotal": 1250.00,
      "tax": 250.00,
      "currency": "TRY",
      "grand_total": 1500.00
    },
    "items": [
      {
        "sku": "SaaS-ENT-01",
        "quantity": 1,
        "price": 1250.00
      }
    ]
  }
}

Bu payload, alıcı sunucuya ulaştığında doğrudan parse edilerek veritabanına yazılabilir veya başka bir otomasyon zincirini tetiklemek üzere işlenebilir. Payload'un boyutu, içerdiği nesne derinliğine göre değişmekle birlikte, ağ performansını olumsuz etkilememesi adına genellikle birkaç kilobaytı geçmeyecek şekilde optimize edilir.

Webhook URL Yapılandırması ve Kayıt

Bir webhook’un çalışabilmesi için gönderici sistemin, veriyi nereye göndereceğini bilmesi gerekir. Bu hedef adrese webhook URL adı verilir. Alıcı sistemin geliştiricileri, kendi sunucularında dışarıdan gelecek HTTP POST isteklerini karşılayacak dinamik bir URL rotası (route) tanımlarlar.

Bu URL'in aşağıdaki kriterleri karşılaması zorunludur:

  • Erişilebilirlik: URL, yerel ağda (localhost) kalmamalı, internet üzerinden genel (public) erişime açık olmalıdır.

  • Protokol: Güvenlik nedeniyle kesinlikle şifrelenmiş HTTPS protokolünü kullanmalıdır. HTTP üzerinden gönderilen payload verileri, aradaki üçüncü şahıslar tarafından kolayca dinlenebilir.

  • Performans: Gelen isteği en geç 3-5 saniye içinde yanıtlayabilecek altyapıya sahip olmalıdır.

URL hazırlandıktan sonra, veri sağlayıcı platformun geliştirici paneline girilerek kayıt işlemi yapılır. Bu kayıt esnasında hangi olayların bu URL’e gönderileceği seçilir ve sistemler arasındaki güvenliği doğrulamak için kullanılacak olan "Secret Key" (Gizli Anahtar) alınır. Artık iki sistem arasındaki köprü kurulmuştur.

SÜREÇ ADIMLARI

Adım Adım Webhook Yapılandırma Süreci

Kendi sisteminizde bir webhook alıcısı oluşturmak için aşağıdaki sıralı adımları takip edebilirsiniz.

01

Hedef URL'i Hazırlayın

Sunucunuzda dış dünyaya açık, SSL sertifikasına (HTTPS) sahip ve HTTP POST isteklerini kabul eden bir endpoint oluşturun.

02

Tetiklenecek Olayı Seçin

Veri sağlayıcı platformda (örn. Stripe, Shopify) hangi olayın (payment, order vb.) bu URL'e gönderileceğini belirleyin.

03

Webhook'u Kaydedin ve Test Edin

Sağlayıcı arayüzüne URL'inizi kaydederek ngrok gibi yerel tünelleme araçlarıyla test istekleri gönderip doğruluğunu kontrol edin.

Webhook ve API Polling Arasındaki Farklar

API Polling ile Webhook çalışma mantıklarını yan yana karşılaştıran şık editoryal diyagram
API Polling sürekli istek atarak sunucuyu yorarken, Webhook yalnızca olay anında tek bir istek gönderir.

Sistemler arası veri senkronizasyonu sağlamak istendiğinde iki temel yaklaşım öne çıkar: Webhook ve API Polling (Sorgulama). İşletme sahipleri ve teknik karar vericiler için bu iki yöntem arasındaki mimari farkları anlamak, hem geliştirme maliyetlerini optimize etmek hem de sistem kararlılığını korumak adına kritik bir öneme sahiptir.

Geleneksel entegrasyonlar genellikle polling modeline dayanır. Ancak ölçek büyüdükçe bu modelin sürdürülebilirliği azalır. Webhook ise modern, esnek ve olay odaklı bir alternatif sunarak ağ kaynaklarının sadece gerektiğinde kullanılmasını garanti eder. İki yöntemin çalışma mantığı, verimlilik oranları ve maliyet yapıları taban tabana zıt özellikler gösterir.

Hangi yöntemin seçileceği, entegre edilecek sistemlerin kabiliyetlerine, verinin ne kadar hızlı aktarılması gerektiğine ve mevcut bütçeye göre değişiklik gösterir. Yanlış mimari seçimi, ay sonunda beklenmedik sunucu faturalarıyla karşılaşılmasına ya da kritik veri güncellemelerinin kaçırılmasına yol açabilir.

Polling Yöntemi Nasıl Çalışır?

API Polling, bir istemcinin belirli zaman aralıklarıyla (örneğin her 10 saniyede bir, her saat başı) sunucuya "Yeni bir veri var mı?" şeklinde HTTP istekleri göndermesi sürecidir. Sunucu, veri olsa da olmasa da bu isteğe bir yanıt dönmek zorundadır. Eğer yeni bir durum yoksa sunucu boş bir liste ya da "değişiklik yok" (HTTP 304 Not Modified) yanıtı döndürür.

Bu yöntem ikiye ayrılır:

  • Short Polling (Kısa Sorgulama): İstemci sürekli ve agresif bir şekilde istek atar. Sunucu hemen yanıt verir ve bağlantıyı kapatır. Bu döngü durmaksızın tekrarlanır.

  • Long Polling (Uzun Sorgulama): İstemci istek atar, ancak sunucu yeni bir veri oluşana kadar bağlantıyı açık tutar. Veri oluştuğunda yanıt döner, bağlantı kapanır ve istemci hemen yeni bir uzun süreli istek başlatır.

Short polling yöntemi, özellikle yüksek trafikli sistemlerde sunucu üzerinde devasa bir yük oluşturur. Her bir HTTP isteği; TCP el sıkışması (handshake), SSL/TLS şifre çözme işlemleri ve veritabanı sorguları gibi yüksek CPU maliyeti olan süreçleri tetikler. Çoğu zaman bu isteklerin çok büyük bir kısmı boş döneceği için ciddi bir işlem gücü israfı yaşanır.

Gerçek Zamanlılık ve Verimlilik Kıyaslaması

Gerçek zamanlılık (real-time) boyutu ele alındığında, API polling yöntemi doğası gereği her zaman bir gecikme (latency) barındırır. Eğer sorgulama aralığınız 5 dakika ise, yeni oluşan bir veri size en iyi ihtimalle birkaç saniye, en kötü ihtimalle ise tam 5 dakika sonra ulaşacaktır. Sorgulama aralığını saniyelere indirmek ise sunucunuzun çökmesine davetiye çıkarabilir.

Webhook mimarisinde ise veri aktarımı neredeyse anlıktır. Olay kaynak sistemde tamamlandığı mikro saniyede HTTP POST isteği yola çıkar. Bu sayede gecikme süresi sadece ağ iletim hızıyla sınırlı kalır. Gerçek zamanlı veri aktarımı gerektiren borsa verileri, kurye takip sistemleri veya canlı sohbet uygulamalarında polling kullanımı teknik olarak yetersiz kalmaktadır.

Verimlilik açısından bakıldığında, yapılan araştırmalar polling isteklerinin ortalama %95'ten fazlasının boş döndüğünü göstermektedir. Webhook ise yalnızca %100 oranında anlamlı ve işlenecek veri taşır. Bu durum, ağ bant genişliğinin korunması, log dosyalarının şişmemesi ve sunucu kaynaklarının verimli dağıtılması anlamına gelir.

Hangi Durumda Hangisi Kullanılmalı?

Her ne kadar webhook daha modern ve verimli bir teknoloji olarak öne çıksa da, bazı senaryolarda API polling kullanımı kaçınılmaz veya daha mantıklı olabilir. Karar verme aşamasında sistemlerin mimari sınırları göz önünde bulundurulmalıdır.

Aşağıdaki durumlarda API Polling tercih edilmelidir:

  • Güvenlik Duvarı Sınırlamaları: Alıcı sistem dış dünyaya kapalı, korunaklı bir yerel ağda (on-premise) çalışıyorsa ve dışarıdan HTTP isteği alamıyorsa (inbound portlar kapalıysa).

  • Veri Sıklığının Aşırı Yüksek Olması: Saniyede binlerce verinin üretildiği durumlarda, her veri için ayrı bir webhook tetiklemek sunucuyu kilitleyebilir. Bunun yerine dakikada bir kez toplu (bulk) veri çekmek daha sağlıklıdır.

  • Kaynak Sistem Desteği: Entegre olunan eski (legacy) sistemlerin webhook gönderme yeteneği bulunmuyorsa.

Aşağıdaki durumlarda ise kesinlikle Webhook kullanılmalıdır:

  • Anlık Reaksiyon Gereksinimi: Stok bittiğinde satışı durdurmak, ödeme alındığında dijital ürünü anında teslim etmek gibi durumlarda.

  • Düşük ve Düzensiz Veri Akışı: Gün içinde ne zaman geleceği belli olmayan seyrek verilerin takibinde sunucuyu boşuna yormamak adına.

  • SaaS Entegrasyonları: Modern bulut sistemlerinin (Stripe, HubSpot, Slack, Zapier) birbirine bağlanmasında standart entegrasyon yöntemi olarak.

KriterAPI PollingWebhook
İletişim ModeliPull (Çekme - İstemci başlatır)Push (İtme - Sunucu başlatır)
Gerçek ZamanlılıkGecikmeli (Sorgu periyoduna bağlı)Anlık (Milisaniyeler içinde)
Kaynak TüketimiYüksek (Sürekli gereksiz istekler)Çok Düşük (Sadece olay anında)
Güvenlik YapılandırmasıKolay (İçeri doğru port açmak gerekmez)Orta (Endpoint koruması ve SSL gerekir)
Hata ToleransıKolay (Bir sonraki sorguda telafi edilir)Zor (Gelişmiş retry mekanizmaları gerektirir)

İletişim Modeli

API Polling

Pull (Çekme - İstemci başlatır)

Webhook

Push (İtme - Sunucu başlatır)

Gerçek Zamanlılık

API Polling

Gecikmeli (Sorgu periyoduna bağlı)

Webhook

Anlık (Milisaniyeler içinde)

Kaynak Tüketimi

API Polling

Yüksek (Sürekli gereksiz istekler)

Webhook

Çok Düşük (Sadece olay anında)

Güvenlik Yapılandırması

API Polling

Kolay (İçeri doğru port açmak gerekmez)

Webhook

Orta (Endpoint koruması ve SSL gerekir)

Hata Toleransı

API Polling

Kolay (Bir sonraki sorguda telafi edilir)

Webhook

Zor (Gelişmiş retry mekanizmaları gerektirir)

Popüler Webhook Kullanım Alanları ve Senaryoları

Webhook teknolojisinin teorik altyapısının ötesinde, pratik iş dünyasındaki karşılıkları işletmelerin operasyonel hızını belirler. Günümüzde kullandığımız birçok popüler dijital hizmetin arkasında, farkında olmasak da kusursuz çalışan bir webhook ağı bulunur. Bu teknoloji, departmanlar arası süreçleri ve farklı yazılımları birbirine bağlayan dijital bir yapıştırıcı görevi görür.

Özellikle e-ticaret, finansal teknolojiler (FinTech), pazarlama otomasyonları ve yazılım geliştirme süreçleri, webhook kullanımının en yoğun olduğu alanlardır. Bu entegrasyonlar sayesinde insan hatası minimize edilir, manuel veri girişi ihtiyacı ortadan kalkar ve iş süreçleri 7/24 kesintisiz ve otonom bir şekilde yürütülür.

Sistemlerin birbiriyle entegre çalışması, sadece zamandan tasarruf sağlamaz, aynı zamanda operasyonel şeffaflığı ve veri tutarlılığını da en üst seviyeye çıkarır. Farklı departmanların kullandığı araçlar (CRM, ERP, muhasebe yazılımları) tek bir olay tetikleyicisiyle aynı anda güncellenebilir.

Ödeme Sistemlerinde Bildirim Alımı

Finansal işlemlerde güvenlik ve doğruluk her şeyden önce gelir. Stripe, PayPal, Iyzico veya Paytr gibi ödeme geçitleri üzerinden yapılan işlemlerde webhook kullanımı zorunludur. Bir müşteri web sitenizden kredi kartıyla alışveriş yaptığında, işlem banka tarafında 3D Secure doğrulamasına yönlendirilir.

Bu süreçte müşteri tarayıcı sekmesini kapatabilir, interneti kesilebilir veya yönlendirme esnasında sistemsel bir hata oluşabilir. Eğer sisteminizi sadece müşterinin sitenize geri dönme senaryosuna (frontend redirect) göre tasarlarsanız, ödemesi alındığı halde siparişi "beklemede" kalan mağdur müşterilerle karşılaşırsınız.

Ödeme geçitleri bu sorunu çözmek için webhook kullanır. Ödeme banka tarafından onaylandığı anda, ödeme kuruluşu sizin sunucunuza arkadan (server-to-server) doğrudan bir HTTP POST isteği gönderir. Bu istekte ödemenin başarıyla tamamlandığı bilgisi yer alır. Sunucunuz bu doğrulamayı aldığı anda, müşterinin tarayıcıda ne yaptığına bakılmaksızın siparişi onaylar ve faturayı keser. Bu yapı, veri kaybı ve finansal mutabakat hatalarını tamamen engeller.

E-Ticaret Stok ve Sipariş Senkronizasyonu

Çok kanallı (Omnichannel) satış yapan e-ticaret işletmeleri için stok doğruluğu hayati önem taşır. Hem kendi Shopify veya WooCommerce sitenizden, hem de Trendyol, Amazon gibi pazaryerlerinden aynı anda satış yapıyorsanız, stokların anlık olarak senkronize edilmesi gerekir. Aksi takdirde, elde olmayan bir ürünün satılması (overselling) gibi operasyonel krizler kaçınılmaz olur.

Webhook’lar bu karmaşık süreci şu şekilde otomatikleştirir:

  • Sipariş Oluşumu: Kendi sitenizde bir ürün satıldığı anda Shopify bir orders/create webhook'u tetikler.

  • ERP Güncellemesi: Bu webhook, şirketinizin merkez ERP (örn. SAP veya Logo) sistemine anında ulaşır ve ilgili ürünün stok adedini bir azaltır.

  • Pazaryeri Senkronizasyonu: ERP sistemi de aldığı bu güncellemeyle eş zamanlı olarak Trendyol ve Amazon API'lerine stok güncelleme isteği göndererek diğer mağazalardaki ilanları günceller.

Tüm bu süreçlerin manuel yapılması veya saatlik sorgulamalarla yürütülmesi operasyonel hızı yavaşlatır. Webhook sayesinde, bir kanalda gerçekleşen satışın diğer tüm kanallara yansıması saniyeler sürer. Bu da işletmenizi prestij kaybından ve cezai müeyyidelerden korur.

Yazılım Geliştirme (CI/CD) ve Otomasyon

Yazılım mühendisliği ekipleri için de webhook'lar iş akışlarının merkezinde yer alır. Sürekli Entegrasyon ve Sürekli Dağıtım (CI/CD) süreçlerinin tamamı bu teknoloji sayesinde otonom hale getirilmiştir. Geliştiriciler yazdıkları kodları GitHub, GitLab veya Bitbucket gibi merkezi depolara (repository) gönderdiklerinde süreç başlar.

Kod deposuna yapılan bir git push aksiyonu, anında bir webhook tetikler. Bu webhook, Vercel, Netlify, Jenkins veya AWS CodePipeline gibi dağıtım (deployment) sunucularına "Yeni kod geldi, derlemeye başla" talimatını iletir. Testler otomatik olarak koşulur, kod derlenir ve hata yoksa canlı sunucuya aktarılır.

Aynı zamanda, bu dağıtımın durumu (başarılı veya başarısız olduğu) başka bir webhook ile yazılım ekibinin kullandığı Slack veya Microsoft Teams kanalına bildirim olarak düşer. Böylece geliştiriciler tarayıcıda sürekli ekran yenilemek zorunda kalmadan, tüm operasyonel süreci tek bir iletişim kanalı üzerinden canlı olarak takip edebilirler.

Webhook Güvenliği: Verilerinizi Nasıl Korursunuz?

HTTPS protokolü ve HMAC dijital imzaları ile korunan güvenli bir sunucu ağını gösteren editoryal illüstrasyon
Güvenli bir webhook altyapısı, yetkisiz erişimleri ve veri manipülasyonunu engellemek için çok katmanlı koruma gerektirir.

Webhook'ların en büyük avantajı olan "dış dünyaya açık HTTP endpoint'leri kullanma" özelliği, aynı zamanda en büyük güvenlik riskini de beraberinde getirir. Sunucunuzda oluşturduğunuz ve internete açtığınız bir URL adresini kötü niyetli kişiler keşfedebilir. Bu durumda, sunucunuza sahte (fake) payload göndererek sisteminizde ödeme yapılmış gibi gösterebilir veya veritabanınıza yetkisiz kayıtlar ekleyebilirler.

Bu nedenle, siber güvenlik standartlarına uygun bir webhook altyapısı kurmak teknik bir lüks değil, yasal (KVKK, GDPR, PCI-DSS) ve operasyonel bir zorunluluktur. Alıcı sunucu, kapısını çalan her HTTP isteğine güvenmemeli; gelen isteğin gerçekten iddia edilen kaynaktan gelip gelmediğini ve yolda tahrif edilip edilmediğini sıkı bir şekilde denetlemelidir.

Güvenli bir mimari oluşturmak için birden fazla savunma hattının (defense-in-depth) bir arada kullanılması önerilir. Sadece şifrelemeye veya sadece IP kısıtlamasına güvenmek, modern siber tehditler karşısında yetersiz kalacaktır. Aşağıdaki güvenlik katmanlarının eksiksiz uygulanması, sistem bütünlüğünüzü korumanın temel şartıdır.

İmza Doğrulama (Signature Verification)

İmza doğrulama, webhook güvenliğinin altın standardıdır. Bu yöntem, gelen verinin kaynağının doğruluğunu (authenticity) ve verinin yolda değiştirilmediğini (integrity) matematiksel olarak garanti eder. Süreç, Hash-based Message Authentication Code (HMAC) algoritması kullanılarak yürütülür.

İmza doğrulama süreci şu şekilde çalışır:

  1. Ortak Sır (Shared Secret): Webhook kaydı esnasında, sağlayıcı platform size yalnızca sizin ve onun bileceği gizli bir karakter dizisi (secret key) verir.

  2. İmzalama (Signing): Sağlayıcı, isteği göndermeden önce ham payload içeriğini bu gizli anahtar ile (genellikle SHA256 kullanarak) şifreler ve benzersiz bir imza (hash) üretir. Bu imzayı HTTP başlığına (örn. X-Hub-Signature-256 veya Stripe-Signature) ekler.

  3. Doğrulama (Verification): Sunucunuz isteği aldığında, gelen ham gövdeyi (raw body) kendi elindeki gizli anahtar ile aynı algoritmayı kullanarak yeniden şifreler. Kendi ürettiği imza ile HTTP başlığında gelen imzayı karşılaştırır.

Eğer iki imza birebir eşleşiyorsa, istek güvenilirdir. Tek bir karakter bile yolda değişmiş olsa imzalar eşleşmeyecek ve sunucunuz bu isteği HTTP 401 Unauthorized koduyla reddedecektir. Bu süreçte zaman aşımı saldırılarını (replay attacks) önlemek için imza başlığına eklenen zaman damgası (timestamp) kontrolleri de mutlaka yapılmalıdır.

SSL/TLS ve HTTPS Kullanımı

Sistemler arasındaki tüm veri trafiğinin şifrelenmesi, temel ağ güvenliğinin birinci kuralıdır. Webhook URL adresleriniz kesinlikle şifrelenmemiş HTTP protokolünü kullanmamalı, her zaman güncel TLS (en az TLS 1.2, tercihen TLS 1.3) standartlarına sahip HTTPS protokolü üzerinden çalışmalıdır.

Eğer HTTPS kullanılmazsa, istemci ile sunucu arasındaki yönlendiriciler (routers), internet servis sağlayıcıları veya aynı ağdaki saldırganlar veriyi düz metin (plain text) olarak okuyabilirler. Bu durum, kişisel verilerin korunması kanunları (KVKK/GDPR) kapsamında da çok ciddi yasal yaptırımlara ve idari para cezalarına yol açabilir.

Sunucunuzda geçerli bir SSL sertifikası bulundurmak bu doğrultuda zorunludur. Günümüzde Let's Encrypt gibi güvenilir otoriteler aracılığıyla ücretsiz ve otomatik yenilenen SSL sertifikaları kolaylıkla kurulabilmektedir. Ayrıca sunucu tarafında zayıf şifreleme algoritmalarının (cipher suites) devre dışı bırakılması ve güvenli TLS yapılandırmalarının aktif edilmesi önerilir.

IP Whitelisting (Güvenli IP Listeleme)

IP Whitelisting, alıcı sunucunuza sadece belirli, önceden tanımlanmış IP adreslerinden gelen istekleri kabul etmesi yönünde kural koyma işlemidir. Bu işlem genellikle sunucu düzeyinde (Nginx, Apache yapılandırmasıyla) veya bulut sağlayıcınızın güvenlik duvarı (Firewall, AWS Security Groups) katmanında gerçekleştirilir.

Örneğin, Stripe veya Shopify gibi büyük sağlayıcılar, webhook gönderdikleri IP adreslerinin listesini resmi dokümantasyonlarında güncel olarak yayınlarlar. Sunucunuzun güvenlik duvarına "Sadece bu IP'lerden gelen 443 portu isteklerine izin ver, diğerlerini doğrudan engelle" kuralı ekleyerek saldırı yüzeyini önemli ölçüde daraltabilirsiniz.

Ancak bu yöntemin operasyonel zorlukları vardır. Sağlayıcılar yeni sunucular devreye aldığında IP adres listelerini güncelleyebilirler. Bu güncellemeleri dinamik olarak takip edip güvenlik duvarınızı otomatik güncelleyen bir mekanizmanız yoksa, meşru webhook isteklerinin engellenmesi ve sisteminizin kesintiye uğraması riskiyle karşılaşırsınız. Bu nedenle IP listeleme tek başına değil, imza doğrulama ile birlikte yardımcı bir güvenlik katmanı olarak kullanılmalıdır.

Hata Yönetimi ve Yeniden Deneme (Retry) Politikaları

Hata veren HTTP isteklerinin otomatik olarak kuyruk mekanizmasına yönlendirilmesini simgeleyen editoryal teknik çizim
Sistemsel kesintilerde veri kaybını önlemek için asenkron kuyruk ve yeniden deneme (retry) mekanizmaları kullanılmalıdır.

Dağıtık sistemlerin ve API entegrasyonlarının en temel gerçeği, ağ üzerindeki her bileşenin her an hata verebileceğidir. Alıcı sunucunuzda anlık bir veritabanı kilitlenmesi yaşanabilir, sunucu aşırı yükten dolayı geçici olarak yanıt vermeyebilir veya arada bir ağ kesintisi oluşabilir. İyi tasarlanmış bir webhook mimarisi, bu olası arızalara karşı esnek (resilient) olmalı ve veri kaybına izin vermemelidir.

Hata yönetimi hem gönderici (provider) hem de alıcı (consumer) tarafında ayrı ayrı ele alınmalıdır. Gönderici sistem, karşı taraftan olumlu bir yanıt alamadığında akıllıca tasarlanmış yeniden deneme (retry) algoritmalarını devreye sokmalıdır. Alıcı sistem ise gelen istekleri hızlıca güvenli bir kuyruğa aktararak kendi içindeki yükü ve olası hataları izole etmelidir.

Aksi takdirde, tek bir sistemsel kesintide yüzlerce siparişin onaylanmaması, kullanıcıların yetkilendirilmemesi ve veri senkronizasyonunun tamamen bozulması gibi operasyonel felaketlerle karşı karşıya kalınır. Hata yönetiminin doğru planlanması, sistemin genel ayakta kalma süresini ve güvenilirliğini doğrudan tayin eder.

HTTP Durum Kodlarını Takip Etmek

Sistemler arasındaki mutabakatın dili HTTP durum kodlarıdır. Bir webhook gönderildiğinde, alıcı sunucunun vereceği yanıtın durum kodu, işlemin başarılı olup olmadığını göndericiye anlatır. Webhook mimarisinde bu kodların standartlara uygun kullanımı son derece kritiktir.

  • HTTP 200 / 201 / 202 (Başarılı): Göndericiye "Mesajı aldım, sorun yok" mesajı iletilir. Gönderici bu isteği başarılı olarak işaretler ve döngüyü kapatır.

  • HTTP 4xx (İstemci Hataları): Genellikle alıcı sunucuda kaynağın bulunamadığını (404), yetkilendirme hatası olduğunu (401) veya payload formatının geçersiz olduğunu (422) gösterir.

  • HTTP 5xx (Sunucu Hataları): Alıcı sunucunun çöktüğünü, veritabanına erişemediğini veya kod tarafında beklenmeyen bir hata (500 Internal Server Error) oluştuğunu gösterir.

Alıcı geliştiricilerin yaptığı en büyük hatalardan biri, gelen istekte bir iş mantığı hatası (business logic error) oluştuğunda bile HTTP 500 dönmektir. Eğer veri başarıyla alınmış ancak içerideki bir kuraldan dolayı işlenememişse, HTTP 200 veya 202 dönerek işlem kendi loglarında hata olarak kaydedilmelidir. Sunucu hatası (5xx) dönüldüğünde, gönderici sistem bunu geçici bir kesinti sanarak aynı hatalı isteği defalarca yeniden gönderecek ve sunucunuzu gereksiz yere meşgul edecektir.

Başarısız İstekler İçin Kuyruk Yönetimi

Alıcı sunucunuza saniyede yüzlerce webhook isteğinin geldiği bir kampanya dönemini hayal edin. Eğer gelen her isteği eş zamanlı (synchronous) olarak işlemeye kalkarsanız; veritabanı bağlantı sınırları aşılacak, işlemci tüketimi tavan yapacak ve sunucunuz gelen isteklere zamanında yanıt veremeyerek çökecektir.

Bu durumun önüne geçmek için asenkron mimari kurulmalıdır. Alıcı endpoint, gelen isteğin imzasını hızlıca doğruladıktan sonra, payload verisini doğrudan bir mesaj kuyruğuna (Message Queue - örn. RabbitMQ, Redis, BullMQ, Amazon SQS) fırlatmalı ve göndericiye saniyeler içinde "HTTP 202 Accepted" yanıtını dönmelidir.

Kuyruğa alınan mesajlar, arka planda çalışan ve "Worker" adı verilen hafif işlemciler tarafından sırayla ve sunucunun kaldırabileceği bir hızda işlenir. Bu sayede, dışarıdan gelen ani trafik dalgalanmaları sunucunuzu çökertmez; sadece kuyruktaki bekleme süresini biraz uzatır. Bu yaklaşım, sistemin ölçeklenebilirliği (scalability) açısından en temel tasarım kalıbıdır.

Zaman Aşımı (Time-out) Sorunları

Çoğu webhook sağlayıcısı, gönderdikleri HTTP istekleri için çok katı zaman aşımı (time-out) süreleri uygular. Örneğin Stripe, sunucunuzdan 10 saniye içinde yanıt alamazsa bağlantıyı keser ve isteği başarısız sayar. Shopify için bu süre genellikle 5 saniyedir.

Eğer sizin kodunuz webhook geldiğinde arka planda şu işlemleri yapıyorsa zaman aşımına uğramanız neredeyse kesindir:

  • PDF fatura oluşturup buluta yüklemek.

  • Başka bir üçüncü parti API'ye (örn. kargo firması API'sine) bağlanıp veri almak.

  • Müşteriye e-posta veya SMS göndermek.

Bu tür uzun süren işlemler asla webhook istek döngüsünün içinde senkron olarak yapılmamalıdır. Webhook endpoint'inin tek bir görevi olmalıdır: Gelen veriyi doğrula, kuyruğa yaz ve HTTP 200 dön. Kargo API'sine bağlanmak veya e-posta göndermek gibi ağır işler, kuyruktaki worker'lar tarafından arka planda asenkron olarak tamamlanmalıdır. Bu kurala uymak, zaman aşımı hatalarını tamamen ortadan kaldırır.

Sıkça Sorulan Sorular

Webhook nedir ve ne işe yarar?

Webhook, bir sistemde belirli bir olay gerçekleştiğinde başka bir uygulamaya HTTP POST isteği aracılığıyla gerçek zamanlı veri gönderen bir otomasyon mekanizmasıdır. Sürekli veri sorgulamaya gerek kalmadan sistemlerin birbiriyle anlık olarak senkronize olmasını sağlar.

Webhook ile API arasındaki temel fark nedir?

Klasik API entegrasyonlarında istemci sunucudan veri çekmek (pull) için sürekli istek atar; webhook'ta ise sunucu veri oluştuğunda istemciye doğrudan veri gönderir (push). Webhook bu yönüyle tersine çalışan bir API mimarisidir.

Webhook güvenliği nasıl sağlanır?

Güvenlik için HTTPS şifrelemesi kullanılmalı, gelen isteklerin gövdesi HMAC imza doğrulama (signature verification) yöntemiyle kontrol edilmeli ve kaynak sunucunun IP adresleri güvenlik duvarı üzerinden listelenmelidir.

Webhook istekleri neden başarısız olur?

Alıcı sunucunun geçici olarak kapalı olması, veritabanı kilitlenmeleri, ağ gecikmeleri veya alıcı sunucunun yanıt vermekte gecikerek zaman aşımı (time-out) süresini aşması gibi nedenlerle başarısızlık yaşanabilir.

Başarısız olan bir webhook isteğine ne olur?

Stripe veya Shopify gibi profesyonel sağlayıcılar, başarısız istekler için üstel geri çekilme (exponential backoff) algoritması kullanarak belirli aralıklarla (örn. 48 saat boyunca) yeniden deneme (retry) istekleri gönderir.

Webhook payload'u nedir?

Payload, olay gerçekleştiğinde gönderici sunucu tarafından hazırlanan ve alıcı sunucuya gönderilen veri yüküdür. Günümüz standartlarında bu veri genellikle JSON formatında yapılandırılmış nesnelerden oluşur.

İdempotency (Tekrarlanabilirlik) webhook entegrasyonlarında neden önemlidir?

Ağdaki gecikmeler nedeniyle aynı webhook isteği sunucunuza birden fazla kez ulaşabilir. İdempotency kontrolleri, aynı benzersiz ID'ye sahip bir isteğin veritabanında mükerrer işlemlere veya çift ödemelere yol açmasını engeller.

Webhook entegrasyonlarını yerel bilgisayarımda (localhost) nasıl test edebilirim?

Yerel bilgisayarınız dış dünyaya kapalı olduğu için doğrudan webhook alamazsınız. ngrok veya Hookdeck gibi güvenli tünelleme araçlarını kullanarak yerel sunucunuzu geçici olarak dış dünyaya açık bir HTTPS adresine bağlayabilir ve testlerinizi yapabilirsiniz.

Son Adım

Dijital projenizi bugün planlayalım

Web, yazılım, e-ticaret, mobil uygulama, entegrasyon, SEO veya GEO ihtiyacınızı net bir kapsama dönüştürelim.

Webhook Nedir, Ne İşe Yarar? | Webizm