productSet ile ürünü tek seferde oluşturma ya da güncelleme
Harici bir sistemden ürünü tek çağrıda senkronize edin: productSet, ürünü seçenekleri ve varyantlarıyla birlikte handle’a göre oluşturur ya da günceller.
- API
- Admin GraphQL API
- İşlem
- productSet
- Erişim yetkisi
- write_products
- Yerini aldığı REST çağrısı
- POST /admin/api/products.json ve PUT /admin/api/products/{id}.json
- API sürümü
- 2026-10
- Son kontrol
Kısaca
Bir ürünü ERP ya da PIM’den senkronize etmek için productSet’i ürünün tamamıyla çağırın: title, status, productOptions ve variants. Mevcut bir ürünü güncellemek için identifier’a handle ya da ID verin; yeni ürün için boş bırakın. Liste alanları baştan yazılır, yani göndermediğiniz varyantlar silinir. Küçük ürünlerde synchronous: true, büyüklerde asenkron modu kullanın.
Nasıl kullanılır
- Kaynak kaydınızı ProductSetInput’a eşleyin: her seçenek tüm değerleriyle, ardından her kombinasyon için optionValues, sku ve price içeren bir varyant.
- İkinci çalıştırmada kopya oluşmasın, ürün güncellensin diye identifier’a handle (ya da ID veya customId olarak benzersiz bir metafield) verin.
- SyncProduct’ı gönderin. synchronous: true ile ürün yanıtta döner.
- Büyük ürünlerde synchronous: false gönderin ve dönen productSetOperation ID’siyle productOperation sorgusunu takip edin.
Kod
product-set.graphqlmutation SyncProduct($identifier: ProductSetIdentifiers, $input: ProductSetInput!) {
productSet(identifier: $identifier, input: $input, synchronous: true) {
product {
id
handle
title
status
variants(first: 10) {
nodes {
id
sku
price
selectedOptions {
name
value
}
}
}
}
userErrors {
code
field
message
}
}
}
product-set.variables.json{
"identifier": {
"handle": "linen-shirt"
},
"input": {
"title": "Linen shirt",
"handle": "linen-shirt",
"status": "ACTIVE",
"vendor": "Your Brand",
"productType": "Shirts",
"tags": ["summer", "linen"],
"productOptions": [
{
"name": "Size",
"values": [{"name": "S"}, {"name": "M"}, {"name": "L"}]
}
],
"variants": [
{"optionValues": [{"optionName": "Size", "name": "S"}], "sku": "LS-S", "price": "49.00"},
{"optionValues": [{"optionName": "Size", "name": "M"}], "sku": "LS-M", "price": "49.00"},
{"optionValues": [{"optionName": "Size", "name": "L"}], "sku": "LS-L", "price": "52.00"}
]
}
}
product-set.response.json{
"data": {
"productSet": {
"product": {
"id": "gid://shopify/Product/1234567890",
"handle": "linen-shirt",
"title": "Linen shirt",
"status": "ACTIVE",
"variants": {
"nodes": [
{"id": "gid://shopify/ProductVariant/1111111111", "sku": "LS-S", "price": "49.00", "selectedOptions": [{"name": "Size", "value": "S"}]},
{"id": "gid://shopify/ProductVariant/1111111112", "sku": "LS-M", "price": "49.00", "selectedOptions": [{"name": "Size", "value": "M"}]},
{"id": "gid://shopify/ProductVariant/1111111113", "sku": "LS-L", "price": "52.00", "selectedOptions": [{"name": "Size", "value": "L"}]}
]
}
},
"userErrors": []
}
}
}
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
- Liste alanları (variants, productOptions, metafields, collections, files) baştan yazılır: göndermedikleriniz silinir. Diğer alanlar yalnızca gönderirseniz değişir.
- Mağazalarda varsayılan olarak ürün başına en fazla 2048 varyant olabilir.
- Bir bulk operation içinde productSet her zaman senkron çalışır.
- Yalnızca varyantları ya da seçenekleri değiştirecekseniz productVariantsBulkCreate, productVariantsBulkUpdate veya productOption mutation’larını kullanın.
Sık sorulan sorular
- productSet ile productCreate arasındaki fark nedir?
- productCreate ürünün iskeletini ve seçeneklerini oluşturur; varyantlar başka çağrılarla eklenir. productSet ise ürünü varyantlarıyla birlikte alır ve oluşturur ya da günceller; bu da harici bir kaynaktan senkronizasyon için idealdir.
- productSet varyantları siler mi?
- Evet, göndermezseniz siler. variants bir liste alanıdır; sonuç tam olarak gönderdiğiniz listeyle aynı olur.
- Bir ürünü handle’a göre nasıl upsert ederim?
- identifier: { handle: "urun-handle" } verin. Bu handle’a sahip bir ürün yoksa productSet yenisini oluşturur.
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ı.
