> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Journey webhook'ları

> Journey adımlarından harici sunuculara HTTP istekleri gönderin, Liquid sözdizimi ile kullanıcı verileri kullanarak kişiselleştirin, yeniden deneme mantığı ve hata ayıklama araçlarıyla.

Journey Webhook'ları, bir Journey adımından sunucularınıza veya herkese açık erişilebilir herhangi bir endpoint'e HTTP istekleri gönderir. HTTP yöntemini, URL'yi, başlıkları ve gövde içeriğini yapılandırırsınız. İstekler, [Liquid sözdizimi](./using-liquid-syntax) kullanılarak kullanıcıya özgü verilerle kişiselleştirilebilir, böylece Journey olaylarını CRM'ler, analiz platformları veya özel backend'lerle gerçek zamanlı olarak senkronize edebilirsiniz.

## Gereksinimler

* Erişim için [OneSignal satış ekibiyle iletişime geçin](https://onesignal.com/contact).
* URL veya IP adresi geçerli ve HTTP veya HTTPS üzerinden erişilebilir olmalıdır.
* Uç noktalar **genel olarak yönlendirilebilir** olmalıdır — bir güvenlik duvarının arkasında veya localhost'ta olmamalıdır.
* Alan adlarının geçerli bir üst düzey alan adı olmalıdır (`.com`, `.org`, `.net` vb.).

<Warning>
  Journey webhook'ları OneSignal API'lerini çağıramaz. Yalnızca harici sistemlere veri göndermek için tasarlanmıştır.
</Warning>

***

## Kurulum

Journey'niz oluşturulduktan sonra şu adımları izleyin:

1. OneSignal panosunda **Data > Webhooks**'a gidin.
2. Yeni bir webhook oluşturmak için tıklayın.
3. Şunları tanımlayın:
   * **HTTP yöntemi** (genellikle `POST`)
   * **Hedef URL**
   * **Özel başlıklar** (örneğin, kimlik doğrulama token'ları)
   * **Gövde içeriği** (düz metin veya JSON, isteğe bağlı olarak Liquid kullanarak)

<Frame caption="Webhook yapılandırma ekranı">
  <img src="https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/f4bb77a-Screenshot_2023-04-20_at_9.24.03_PM.png?fit=max&auto=format&n=Xl2NHJvxakrK4JbL&q=85&s=79005b0332776e4703954789fe40c5ea" alt="HTTP yöntemi, URL, başlıklar ve gövde alanları bulunan webhook kurulum formu" width="1038" height="926" data-path="images/docs/f4bb77a-Screenshot_2023-04-20_at_9.24.03_PM.png" />
</Frame>

### İzin verilmeyen başlıklar

Aşağıdaki başlıkları ayarlayamazsınız:

* `content-length`
* `referer`
* `metadata-flavor`
* `x-google-metadata-request`
* `host`
* `x-onesignal` ile başlayan herhangi bir başlık

### Webhook'ları test etme

Uç noktanızı curl gibi bir araç kullanarak manuel olarak da test edebilirsiniz:

```bash theme={null}
curl -X POST https://yourserver.com/webhook \
  -H "Content-Type: application/json" \
  -d '{ "user_id": "abc123" }'
```

Bu, endpoint'i bir Journey'ye eklemeden önce erişilebilir ve çalışır durumda olduğunu doğrular.

***

## Kişiselleştirme

Tüm webhook alanları [Liquid sözdizimini](./using-liquid-syntax) destekler, bu da istek içine kullanıcı ve abonelik verilerini dinamik olarak eklemenize olanak tanır.

Kullanılabilir özelliklerin tam listesi için [Mesaj kişiselleştirme](./message-personalization)'ye bakın.

### Kullanıcı verisi referansı

`user` nesnesinden aşağıdaki özellikler, Liquid sözdizimi aracılığıyla webhook alanlarında kullanılabilir:

| Özellik      | Tür    | Kullanım                            | Testte Mevcut mu? |
| ------------ | ------ | ----------------------------------- | ----------------- |
| OneSignal ID | String | `{{ user.onesignal_id }}`           | ✅                 |
| External ID  | String | `{{ user.external_id }}`            | ✅                 |
| Tags         | Object | `{{ user.tags.your_tag_key_here }}` | ❌                 |
| Language     | String | `{{ user.language }}`               | ✅                 |

<Warning>
  Etiketler, aktif bir Journey dışında webhook'ları test ederken kullanılamaz. Canlıya geçmeden önce davranışı doğrulamak için [Test abonelikleri](./test-users)'ni kullanın.
</Warning>

***

## Bir Journey'ye webhook ekleme

1. Webhook'unuzu oluşturduktan ve test ettikten sonra Journey'nizi açın.
2. Gerektiğinde bir **Webhook adımı** ekleyin.
3. Daha önce yapılandırdığınız webhook'u seçin.

Bir kullanıcı bu adıma her ulaştığında, webhook kişiselleştirilmiş verileriyle tetiklenir.

<Frame caption="Bir Journey içinde webhook adımı">
  <img src="https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/7e6782f-Screenshot_2023-04-20_at_3.54.09_PM.png?fit=max&auto=format&n=0qspEXXeJ8zJbkJ-&q=85&s=e017a2eff865b6de671a34b71c437332" alt="Mesaj adımları arasında bağlı bir webhook adımı içeren Journey canvas'ı" width="664" height="1058" data-path="images/docs/7e6782f-Screenshot_2023-04-20_at_3.54.09_PM.png" />
</Frame>

***

## Hata ayıklama ve günlükler

### Webhook istatistikleri

Webhook'unuzun nasıl performans gösterdiğini görüntülemek için webhook'un **Stats** sekmesine gidin. Bu şunları içerir:

* Gönderilen toplam olay sayısı
* Yanıt süresi trendleri
* Durum kodu dağılımı

<Frame caption="Olay sayısı ve yanıt sürelerini gösteren webhook istatistikleri">
  <img src="https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/f0cfcb8-small-Screenshot_2023-04-21_at_9.04.57_AM.png?fit=max&auto=format&n=Xl2NHJvxakrK4JbL&q=85&s=f4514d8cecf78831bd55019cfce61b9b" alt="Olay sayısı, yanıt süresi trendleri ve durum kodu dağılımını içeren webhook istatistikleri sekmesi" width="1185" height="1007" data-path="images/docs/f0cfcb8-small-Screenshot_2023-04-21_at_9.04.57_AM.png" />
</Frame>

### Günlükler sekmesi

Daha ayrıntılı içgörüler için Günlükler sekmesi şunları görüntüler:

* Son istek/yanıt verileri
* Durum kodları ve hata mesajları
* Başlıklar ve yükler (uygulanabilir olduğunda)

<Frame caption="İstek ve yanıt ayrıntılarını gösteren webhook günlükleri">
  <img src="https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/729c24f-Screenshot_2023-04-20_at_9.27.31_PM.png?fit=max&auto=format&n=jBdBk5XvQR5eKOks&q=85&s=3923dcf3fbf2975e27b5f158a1442824" alt="Son istekler, durum kodları ve yükleri içeren webhook günlükleri sekmesi" width="2130" height="1264" data-path="images/docs/729c24f-Screenshot_2023-04-20_at_9.27.31_PM.png" />
</Frame>

***

## Yeniden deneme mantığı ve devre dışı bırakma davranışı

OneSignal, kurtarılabilir hatalar için başarısız webhook isteklerini yeniden dener (örneğin `429 Too Many Requests`). Yeniden denemeler, girişimler arasında artan gecikmeler kullanır.

Yeniden denemeler tekrar tekrar başarısız olursa, webhook **kalıcı olarak başarısız** olarak işaretlenir ve başka deneme yapılmaz.

### Otomatik devre dışı bırakma

Bir webhook sürekli olarak başarısız olursa, OneSignal daha fazla sorunu önlemek için onu devre dışı bırakır. Yöneticiler, devre dışı bırakmadan önce ve sonra e-posta uyarıları ve bir pano başlığı alır. Kök nedeni belirleyin ve yeniden etkinleştirmeden önce webhook'u test edin.

Uç noktanız Journey'nizin ürettiği olay hacmini işleyebilmelidir. API'nizin ihtiyaç duyduğu işlem hacmini tahmin etmek için uygulamanızın mesaj gönderme hacmini inceleyin.

### Performans rehberliği

* Yavaş veya aşırı yüklenmiş uç noktalar (özellikle `429` yanıtları döndürenler) otomatik devre dışı bırakmayı tetikleyebilir.
* Zaman aşımlarını önlemek için olayları hızla kaydedin ve ek işlemleri erteleyin.
* Hacim, kullanıcı etkinliğiyle ölçeklenir — uç noktanızın zirve işlem hacmini kaldırabildiğinden emin olun.
* Gelen olayları tekilleştirmek için `event.id` değerini (başlık veya gövdede mevcut) kullanın.

### Güvenilirlik en iyi uygulamaları

* **Önce kendi sunucunuz üzerinden yönlendirin**, doğrudan üçüncü taraf hizmetlere değil. Bu size günlük kaydı, kimlik doğrulama, kısıtlama ve kuyruğa alma üzerinde kontrol sağlar. Üçüncü taraf hizmetler, hacim artışları sırasında istekleri hız sınırlayabilir veya engelleyebilir ve OneSignal bu sınırları yönetmez.
* **Ani artışları planlayın.** Webhook yürütme, kullanıcılar adıma ulaştığında hemen gerçekleşir. Birçok kullanıcı bir webhook adımına aynı anda ulaşırsa, OneSignal hız sınırlaması olmadan bir HTTP istek patlaması gönderir. Webhook'ları güvenilir bir şekilde alan, hız sınırları veya toplu işleme uygulayan ve istekleri üçüncü taraf hizmetlerinize uygun şekilde yönlendiren hafif bir API katmanı veya kuyruğa alma proxy'si oluşturmayı düşünün.
* **Üçüncü taraf API sınırlarını inceleyin.** Slack, Twilio ve Segment gibi popüler araçlar genel HTTP API'leri sunar, ancak kendi hız sınırları, kimlik doğrulama gereksinimleri ve hata işleme yapıları vardır. Doğrudan bağlanmadan önce belgelerini kontrol edin.

***

## Webhook'unuzu güvence altına alma

İsteklerin OneSignal'den geldiğini doğrulamak için özel bir yetkilendirme başlığı ekleyin (örneğin, `Authorization: Bearer GIZLI_TOKEN_UNUZ`) ve isteği kabul etmeden önce sunucu tarafında doğrulayın.

***

## SSS

### Webhook'ları OneSignal API'lerini çağırmak için kullanabilir miyim?

Hayır. Journey Webhook'ları yalnızca harici sistemlere veri göndermek için tasarlanmıştır. OneSignal API'lerini çağıramazlar. Journey olaylarına dayalı olarak OneSignal verilerini güncellemek için, webhook'u kendi sunucunuz üzerinden yönlendirin ve sunucunuzun OneSignal API'sini çağırmasını sağlayın.

### Webhook'um neden otomatik olarak devre dışı bırakıldı?

OneSignal, daha fazla sorunu önlemek için sürekli başarısız olan webhook'ları devre dışı bırakır. Hata ayrıntıları (durum kodları, yanıt gövdeleri) için **Günlükler** sekmesini kontrol edin, kök nedeni düzeltin ve yeniden etkinleştirmeden önce webhook'u test edin. Yaygın nedenler arasında uç nokta kesintileri, kimlik doğrulama hataları ve hız sınırlaması yer alır.

### Webhook olaylarını nasıl tekilleştiririm?

Benzersiz olayları tanımlamak için `event.id` değerini (başlık veya istek gövdesinde mevcut) kullanın. İşlenmiş olay ID'lerini sunucunuzda depolayın ve tüm kopyaları atlayın. Yeniden denemeler aynı olayı birden fazla kez teslim ediyorsa bu özellikle önemlidir.

### OneSignal webhook isteklerini hız sınırlıyor mu?

Hayır. OneSignal, kullanıcılar adıma ulaştığında hız sınırlaması olmadan webhook isteklerini hemen gönderir. Birçok kullanıcı aynı anda bir webhook adımına ulaşırsa, uç noktanız bir istek patlaması alır. Zirve hacmi kaldırabilmek için uç noktanızı oluşturun veya istekleri ara belleğe almak ve toplu işlemek için bir kuyruğa alma proxy'si kullanın.

### Journey başlatmadan webhook'ları test edebilir miyim?

Evet. Örnek istek göndermek için webhook yapılandırmasındaki **Test** düğmesini kullanın. [Etiketlerin](./add-user-data-tags) test isteklerinde mevcut olmadığını unutmayın — tam doğrulama için canlı bir Journey'de [test abonelikleri](./test-users) kullanın.

***

## İlgili sayfalar

<Columns cols={2}>
  <Card title="Journey'lere genel bakış" icon="route" href="./journeys-overview">
    Journey'lere giriş ve çok kanallı iş akışlarının nasıl çalıştığı.
  </Card>

  <Card title="Journey eylemleri" icon="code-branch" href="./journeys-actions">
    Bekleme adımları, dallanma mantığı, zaman pencereleri ve bölünmüş yollar ekleyin.
  </Card>

  <Card title="Liquid sözdizimi" icon="code" href="./using-liquid-syntax">
    OneSignal mesajları ve webhook'larında Liquid şablonu için tam referans.
  </Card>

  <Card title="Mesaj kişiselleştirme" icon="user-pen" href="./message-personalization">
    Etiketler, Liquid ve dinamik içerik dahil tüm kişiselleştirme yöntemlerine genel bakış.
  </Card>
</Columns>
