# Filtreli webhook aboneliği oluşturma

> Yalnızca gereken webhook’ları alın: webhookSubscriptionCreate ya da shopify.app.toml ile Shopify arama sözdiziminde filtreli bir abonelik oluşturun.

Sayfa: https://lintelagency.com/tr/kaynaklar/graphql/filtreli-webhook-aboneligi

## Kısaca

Bir topic’in yalnızca bazı olaylarını almak için aboneliği webhookSubscriptionCreate ile oluşturun ve webhookSubscription girdisindeki filter alanına, payload alanları üzerinde Shopify arama sözdizimiyle bir ifade yazın; örneğin status:active AND variants.price:>=100. Shopify, filtrenin false olduğu gönderimleri atlar. Uygulamalar aynı aboneliği ve filtreyi shopify.app.toml’da da tanımlayabilir; Shopify bunu her mağazada senkron tutar.

## Bilgiler

- **API:** Admin GraphQL API
- **İşlem:** webhookSubscriptionCreate
- **Yerini aldığı REST çağrısı:** POST /admin/api/webhooks.json
- **Kullanılabilir olduğu sürüm:** Filtreler: 2024-07 API sürümü
- **API sürümü:** 2026-10
- **Son kontrol:** 2 Kasım 2026

## Nasıl kullanılır

1. Topic’i seçin ve filtreyi onun payload’ındaki alanlara göre yazın; iç içe alanlar variants.price gibi noktayla belirtilir.
2. SubscribeToPricedProducts’ı topic, HTTPS uç noktanız ve filtreyle gönderin.
3. Ya da aynı topic, uri ve filtreyi shopify.app.toml’a yazıp uygulamayı deploy edin.
4. Her gönderimin HMAC’ini doğrulayın ve hızlıca yanıt verin; payload’ı bir kuyrukta işleyin.

## Kod

### webhook-subscription-create.graphql

```graphql
mutation SubscribeToPricedProducts($topic: WebhookSubscriptionTopic!, $subscription: WebhookSubscriptionInput!) {
  webhookSubscriptionCreate(topic: $topic, webhookSubscription: $subscription) {
    webhookSubscription {
      id
      topic
      uri
      filter
      format
    }
    userErrors {
      field
      message
    }
  }
}
```

### webhook-subscription-create.variables.json

```json
{
  "topic": "PRODUCTS_UPDATE",
  "subscription": {
    "uri": "https://example.com/webhooks/products",
    "format": "JSON",
    "filter": "status:active AND variants.price:>=100"
  }
}
```

### webhook-subscription-create.response.json

```json
{
  "data": {
    "webhookSubscriptionCreate": {
      "webhookSubscription": {
        "id": "gid://shopify/WebhookSubscription/1234567890",
        "topic": "PRODUCTS_UPDATE",
        "uri": "https://example.com/webhooks/products",
        "filter": "status:active AND variants.price:>=100",
        "format": "JSON"
      },
      "userErrors": []
    }
  }
}
```

### shopify.app.toml

```toml
# The same subscription declared in your app's configuration instead of the API.
# Deploy with `shopify app deploy`; Shopify keeps it in sync on every store.
[webhooks]
api_version = "2026-10"

[[webhooks.subscriptions]]
topics = ["products/update"]
uri = "https://example.com/webhooks/products"
filter = "status:active AND variants.price:>=100"
```

## Sınırlar ve özel durumlar

- Geçersiz bir alan adı ya da tip uyuşmazlığı aboneliği oluşturur ama tüm gönderimleri engeller. Hatalı sözdizimi ise oluşturma anında reddedilir.
- Filtreler büyük/küçük harfe duyarlıdır ve admin aramasından farklı olarak : eşitlik anlamına gelir.
- includeFields de verdiyseniz filtrenin kullandığı her alan bu listede olmalıdır.
- metaobjects/create, update ve delete topic’leri type:size_chart gibi tipi belirten bir filtre ister.
- variants gibi dizi alanlarında, öğelerden biri eşleşmesi filtrenin sağlanması için yeterlidir.

## Sorular

### Shopify webhook’ları nasıl filtrelenir?

Abonelikte filter alanını shopify.app.toml’da ya da webhookSubscriptionCreate ile ayarlayın. Shopify yalnızca payload’ı filtreyle eşleşen olayları gönderir.

### Filtre ekledikten sonra neden hiç webhook gelmiyor?

Payload’da olmayan ya da tipi yanlış bir alana yazılan filtre, tüm gönderimleri sessizce engeller. Alan adlarını o topic’in gerçek bir payload’ıyla karşılaştırın.

### Webhook’lar için API mi yoksa shopify.app.toml mu kullanmalıyım?

Her mağazanın ihtiyaç duyduğu topic’ler için shopify.app.toml daha basittir: Shopify abonelikleri senkron tutar. Çalışma anında mağaza bazında oluşturulan abonelikler için API’yi kullanın.

## Shopify belgeleri

- [Filter webhook deliveries](https://shopify.dev/docs/apps/build/webhooks/delivery-filtering)
- [webhookSubscriptionCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/webhookSubscriptionCreate)

## İlgili içerikler

- [Güvenilir Shopify webhook’ları: yeniden deneme, idempotency, sıra](https://lintelagency.com/tr/blog/guvenilir-shopify-webhooklari)
- [Shopify stoğunu başka bir sistemle senkron tutmak](https://lintelagency.com/tr/blog/shopify-stok-senkronizasyonu)

Lisans: MIT. Kendi mağazanızda da müşteri işlerinizde de ücretsiz kullanabilirsiniz.
