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
- Topic’i seçin ve filtreyi onun payload’ındaki alanlara göre yazın; iç içe alanlar variants.price gibi noktayla belirtilir.
- SubscribeToPricedProducts’ı topic, HTTPS uç noktanız ve filtreyle gönderin.
- Ya da aynı topic, uri ve filtreyi shopify.app.toml’a yazıp uygulamayı deploy edin.
- Her gönderimin HMAC’ini doğrulayın ve hızlıca yanıt verin; payload’ı bir kuyrukta işleyin.
Kod
webhook-subscription-create.graphqlmutation 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.
Shopify belgeleri
- 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ı.
