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.

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

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.

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
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
{
  "topic": "PRODUCTS_UPDATE",
  "subscription": {
    "uri": "https://example.com/webhooks/products",
    "format": "JSON",
    "filter": "status:active AND variants.price:>=100"
  }
}
webhook-subscription-create.response.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
# 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"

Lintel tarafından yazıldı. MIT lisansı: kendi mağazanızda da müşteri işlerinizde de ücretsiz kullanabilirsiniz.

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.

Sık sorulan 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.
  • Gösterilen tarihte, 2026-10 sürümünün Admin veya Storefront API şemasıyla doğrulandı. İstek adresinizdeki sürümü kontrol edin.
  • Örneklerdeki ID’ler ve mağaza adresleri yer tutucudur. Kendi değerlerinizle değiştirin.
  • Admin API çağrıları uygulamanızdan bir erişim anahtarı (access token) ister. Admin API anahtarını asla vitrine ya da temaya koymayın.
  • MIT lisansı. Kodu kendi mağazanızda da müşteri işlerinizde de kullanabilirsiniz.

Mağazanız için kurulmasını, test edilmesini ve bakımını isterseniz: API entegrasyonları.

Geliştirmek istediğiniz bir şey mi var? Gelin, birlikte konuşalım.

Aynı anda sınırlı sayıda proje alıyoruz.

Gencer KarakayaShopify mühendisi

Proje özetinizi bir mühendis okur; size e-postayla yanıt veririz.