> ## 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.

# Web push webhook'ları

> Kullanıcılar web push bildirimlerini görüntülediğinde, tıkladığında veya kapattığında gerçek zamanlı bildirimler almak için HTTP webhook'larını kurun. Chrome, Firefox ve Safari tarayıcı desteği için örneklerle eksiksiz kılavuz.

## Genel bakış

Web Push Webhook'ları, kullanıcılar push bildirimlerinizle etkileşime girdiğinde gerçek zamanlı HTTP POST bildirimleri almanızı sağlar. Bir bildirim görüntülendiğinde, tıklandığında veya kapatıldığında, OneSignal otomatik olarak bildirim verilerini ve özel parametreleri belirttiğiniz webhook URL'sine gönderir.

<Warning>
  Journey webhook'ları için [Journey webhook'ları](./journeys-webhook) sayfamıza bakın.
</Warning>

**Temel Faydalar:**

* Bildirim etkileşimini gerçek zamanlı olarak izleyin
* Kullanıcı etkileşimlerine dayalı otomatik iş akışlarını tetikleyin
* Bildirim verilerini analitik platformunuzla senkronize edin
* Bildirim olayları için özel iş mantığı uygulayın

## Tarayıcı desteği

| Tarayıcı | Platform Desteği        | Kullanılabilir Webhook Olayları             |
| -------- | ----------------------- | ------------------------------------------- |
| Chrome   | macOS, Windows, Android | Tüm olaylar (görüntüleme, tıklama, kapatma) |
| Firefox  | macOS, Windows, Android | Görüntüleme ve tıklama olayları             |
| Safari   | Desteklenmiyor          | Yok                                         |

## Kullanılabilir webhook olayları

### notification.willDisplay

Bir bildirim kullanıcının ekranında göründükten hemen sonra tetiklenir.

**Kullanım senaryoları:** Teslimat oranlarını izleyin, gösterim verilerini kaydedin, takip kampanyalarını tetikleyin

### notification.clicked

Bir kullanıcı bildirim gövdesine veya herhangi bir eylem düğmesine tıkladığında tetiklenir.

**Kullanım senaryoları:** Etkileşim oranlarını izleyin, dönüşüm olaylarını tetikleyin, kullanıcıları belirli içeriğe yönlendirin

### notification.dismissed

Bir kullanıcı bir bildirimi aktif olarak kapattığında veya otomatik olarak sona erdiğinde tetiklenir.

**Tarayıcı desteği:** Yalnızca Chrome
**Kullanım senaryoları:** Kapatma oranlarını izleyin, bildirim zamanlamasını optimize edin, bildirim içeriğini A/B test edin

**Önemli:** Bildirim gövdesine veya eylem düğmelerine tıklamak kapatma webhook'unu tetiklemez.

## Kurulum yöntemleri

<Tabs>
  <Tab title="Kontrol Paneli Yapılandırması (Çoğu Kullanıcı İçin Önerilir)">
    <Steps>
      <Step>
        OneSignal kontrol panelinizde **Ayarlar > Web**'e gidin
      </Step>

      <Step>
        "Webhook'ları etkinleştir" anahtarını etkinleştirin
      </Step>

      <Step>
        İzlemek istediğiniz her olay için webhook URL'lerinizi girin
      </Step>
    </Steps>

    <Frame caption="OneSignal kontrol paneli ayarlarınızda webhook'ları etkinleştirin">
      <img src="https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/eb3347d-image.png?fit=max&auto=format&n=Xl2NHJvxakrK4JbL&q=85&s=c6c064fe350777ee479e0a22eb8a7ea0" width="1822" height="656" data-path="images/docs/eb3347d-image.png" />
    </Frame>
  </Tab>

  <Tab title="Özel Kod Entegrasyonu">
    Mevcut `OneSignal.init()` yönteminize webhook yapılandırması ekleyin:

    ```javascript theme={null}
    // Mevcut OneSignal başlatmanıza ekleyin - init'i iki kez çağırmayın
    OneSignal.init({
      // Diğer mevcut ayarlarınız buraya
      webhooks: {
        cors: false, // Önerilir: özel başlıklara ihtiyacınız olmadıkça false olarak bırakın
        'notification.willDisplay': 'https://yoursite.com/webhook/display',
        'notification.clicked': 'https://yoursite.com/webhook/click',
        'notification.dismissed': 'https://yoursite.com/webhook/dismiss' // Yalnızca Chrome
      }
    });
    ```
  </Tab>
</Tabs>

<Info>Webhook URL'lerinizin HTTPS olduğundan emin olun (Chrome'un güvenlik politikaları tarafından gereklidir).</Info>

## CORS yapılandırması

`cors` ayarı, webhook endpoint'inizin hangi başlıkları ve verileri alacağını belirler:

* **`cors: false` (Önerilir):** Daha basit kurulum, sunucunuzda CORS yapılandırması gerekmez
* **`cors: true`:** Ek başlıklar sağlar ancak sunucunuzda CORS desteği gerektirir

**`cors: true` ne zaman kullanılır:**

* `Content-Type: application/json` başlığına ihtiyacınız var
* Daha kolay olay tanımlama için `X-OneSignal-Event` başlığını istiyorsunuz
* Sunucunuz zaten basit olmayan istekler için CORS'u destekliyor

## Webhook istek formatı

### Standart istek (cors: false)

Webhook endpoint'iniz bu yük yapısına sahip bir POST isteği alır:

```json theme={null}
{
  "event": "notification.clicked",
  "notificationId": "ed46884e-0e3f-4373-9e11-e28f27746d3d",
  "heading": "Your notification title",
  "content": "Your notification message",
  "additionalData": {
    "userId": "12345",
    "campaignId": "summer-sale",
    "customField": "customValue"
  },
  "actionId": "buy-now-button",
  "url": "https://yoursite.com/product/123"
}
```

### Gelişmiş istek (cors: true)

Yukarıdaki yükle aynı, artı şu ek başlıklar:

```http theme={null}
Content-Type: application/json
X-OneSignal-Event: notification.clicked
```

## Yük alanı referansı

| Alan             | Tür    | Açıklama                                                               | Her Zaman Mevcut          |
| ---------------- | ------ | ---------------------------------------------------------------------- | ------------------------- |
| `event`          | string | Webhook'u tetikleyen olay türü                                         | ✅                         |
| `notificationId` | string | Benzersiz OneSignal bildirim tanımlayıcısı                             | ✅                         |
| `heading`        | string | Bildirim başlığı                                                       | Yalnızca sağlanmışsa      |
| `content`        | string | Bildirim mesaj gövdesi                                                 | Yalnızca sağlanmışsa      |
| `additionalData` | object | Bildirimle gönderilen özel veriler                                     | Yalnızca sağlanmışsa      |
| `actionId`       | string | Tıklanan eylem düğmesinin ID'si (boş dize = bildirim gövdesi tıklandı) | Yalnızca tıklama olayları |
| `url`            | string | Bildirim için başlatma URL'si                                          | Yalnızca sağlanmışsa      |
| `subscriptionId` | string | OneSignal kullanıcı/abonelik ID'si                                     | Yalnızca CORS etkin       |

## İmplementasyon en iyi uygulamaları

### Webhook endpoint gereksinimleri

**Güvenlik:**

* Yalnızca HTTPS URL'leri kullanın (HTTP URL'leri Chrome tarafından engellenecektir)
* Webhook endpoint'leriniz için uygun kimlik doğrulama/doğrulama uygulayın
* Yüksek hacimli bildirimleri yönetmek için hız sınırlamasını göz önünde bulundurun

**Yanıt gereksinimleri:**

* Başarılı işleme için HTTP 200 durumu döndürün
* Zaman aşımlarını önlemek için 10 saniye içinde yanıt verin
* Yinelenen webhook çağrılarını zarif bir şekilde yönetin (idempotency uygulayın)

### Hata yönetimi

```javascript theme={null}
// Örnek webhook endpoint (Node.js/Express)
app.post('/webhook/notification', (req, res) => {
  try {
    const { event, notificationId, additionalData } = req.body;

    // Gerekli alanları doğrula
    if (!event || !notificationId) {
      return res.status(400).json({ error: 'Missing required fields' });
    }

    // Webhook verilerini işle
    processNotificationEvent(req.body);

    // Her zaman 200 OK ile yanıt ver
    res.status(200).json({ success: true });
  } catch (error) {
    console.error('Webhook processing error:', error);
    res.status(500).json({ error: 'Internal server error' });
  }
});
```

## Yaygın sorunlar ve çözümler

### Webhook'lar tetiklenmiyor

**Olası nedenler:**

* Webhook kodu, OneSignal başlatması olan tüm sayfalarda mevcut değil
* Kullanıcı, eklendikten sonra webhook kodu olan bir sayfayı ziyaret etmedi
* HTTPS gereksinimi karşılanmadı
* Sunucu 200 olmayan durum kodları döndürüyor

**Çözüm:** Webhook yapılandırmasının, bildirimlerin aktif olduğu tüm sayfalarda OneSignal init kodunuza dahil edildiğinden emin olun.

### Webhook'larda eksik veri

**Neden:** Webhook'lar yalnızca webhook yapılandırması aktif olan sayfaları ziyaret eden kullanıcılar için olayları izler.

**Çözüm:** Webhook kodunu yalnızca belirli açılış sayfalarına değil, OneSignal olan tüm sayfalara dağıtın.

### Yinelenen webhook çağrıları

**Neden:** Ağ sorunları veya tarayıcı davranışı yinelenen isteklere neden olabilir.

**Çözüm:** Olayları tekilleştirmek için `notificationId` alanını kullanarak idempotency uygulayın.

## Webhook sınırlamaları

* **Olay başına bir webhook URL'si:** Aynı olay türü için birden fazla webhook URL'si ayarlayamazsınız
* **Yalnızca HTTPS:** HTTP URL'leri tarayıcı güvenlik kısıtlamaları nedeniyle çalışmaz
* **Yalnızca Chrome kapatma izleme:** `notification.dismissed` olayı yalnızca Chrome'da çalışır
* **Sayfa bağımlılığı:** İzlemenin çalışması için kullanıcıların webhook kodu aktif olan sayfaları ziyaret etmesi gerekir

## Webhook'larınızı test etme

1. OneSignal kontrol paneliniz aracılığıyla **bir test bildirimi gönderin**
2. Gelen istekler için **webhook endpoint'inizi izleyin**
3. **Yük yapısının** beklentilerinizle eşleştiğini doğrulayın
4. **Farklı senaryoları test edin:**
   * Bildirim görüntüleme
   * Bildirim gövdesine tıklama
   * Eylem düğmelerine tıklama (yapılandırılmışsa)
   * Bildirimleri kapatma (yalnızca Chrome)

## Sonraki adımlar

Webhook'ları kurduktan sonra, şunları göz önünde bulundurun:

* **Analitik Entegrasyonu:** Webhook verilerini analitik platformunuza iletin
* **Kullanıcı Segmentasyonu:** Etkileşime dayalı kullanıcı segmentleri oluşturmak için webhook olaylarını kullanın
* **Otomatik İş Akışları:** Push bildirim etkileşimlerine dayalı e-posta kampanyalarını veya uygulama bildirimlerini tetikleyin
* **A/B Testi:** Farklı bildirim stratejilerinin etkinliğini ölçmek için webhook verilerini kullanın
