Harici bir sistemden stok miktarlarını ayarlama

inventorySetQuantities ile ürün ve lokasyon bazında stoğu ayarlayın; 2026-10’da zorunlu olan changeFromQuantity ve idempotency key dahil.

API
Admin GraphQL API
İşlem
inventorySetQuantities
Erişim yetkisi
write_inventory
Yerini aldığı REST çağrısı
POST /admin/api/inventory_levels/set.json
API sürümü
2026-10
Son kontrol

Kısaca

Stoğu bir ERP’den ya da depo sisteminden ayarlamak için inventorySetQuantities’i name available (ya da on_hand), correction gibi bir reason ve envanter kalemi ile lokasyon başına miktar listesiyle çağırın. 2026-04’ten itibaren her miktar için changeFromQuantity (Shopify’da olmasını beklediğiniz değer ya da kontrolü atlamak için null) ve mutation için bir @idempotent anahtarı zorunludur.

Nasıl kullanılır

  1. Envanter kalemi ID’lerini (her varyantın inventoryItem’ında) ve lokasyon ID’lerini bir kez çekin, SKU’larınızın yanında saklayın.
  2. Her kalem için yeni miktarı ve en son gördüğünüz miktarı changeFromQuantity olarak gönderin.
  3. Her değişiklik için yeni bir idempotency key (UUID) üretip @idempotent ile verin. Başarısız bir isteği aynı anahtarla tekrar deneyin.
  4. userErrors CHANGE_FROM_QUANTITY_STALE dönerse değeri zorlamak yerine güncel seviyeyi okuyup yeniden karar verin.

Kod

inventory-set-quantities.graphql
mutation SetStock($input: InventorySetQuantitiesInput!, $idempotencyKey: String!) {
  inventorySetQuantities(input: $input) @idempotent(key: $idempotencyKey) {
    inventoryAdjustmentGroup {
      reason
      referenceDocumentUri
      changes {
        name
        delta
        quantityAfterChange
      }
    }
    userErrors {
      code
      field
      message
    }
  }
}
inventory-set-quantities.variables.json
{
  "idempotencyKey": "6f1c2b9e-3d4a-4f7e-9b1a-2c3d4e5f6a7b",
  "input": {
    "name": "available",
    "reason": "correction",
    "referenceDocumentUri": "gid://your-erp/StockSync/2026-11-02-0900",
    "quantities": [
      {
        "inventoryItemId": "gid://shopify/InventoryItem/1111111111",
        "locationId": "gid://shopify/Location/1234567890",
        "quantity": 12,
        "changeFromQuantity": 10
      },
      {
        "inventoryItemId": "gid://shopify/InventoryItem/1111111112",
        "locationId": "gid://shopify/Location/1234567890",
        "quantity": 0,
        "changeFromQuantity": 3
      }
    ]
  }
}
inventory-set-quantities.response.json
{
  "data": {
    "inventorySetQuantities": {
      "inventoryAdjustmentGroup": {
        "reason": "Inventory correction",
        "referenceDocumentUri": "gid://your-erp/StockSync/2026-11-02-0900",
        "changes": [
          {
            "name": "available",
            "delta": 2,
            "quantityAfterChange": null
          },
          {
            "name": "on_hand",
            "delta": 2,
            "quantityAfterChange": null
          },
          {
            "name": "available",
            "delta": -3,
            "quantityAfterChange": null
          },
          {
            "name": "on_hand",
            "delta": -3,
            "quantityAfterChange": null
          }
        ]
      },
      "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

  • name yalnızca available ya da on_hand alır. available’ı ayarlamak on_hand’i de aynı fark kadar değiştirir.
  • reason, Shopify’ın değerlerinden biri olmalıdır: correction, cycle_count_available, received, restock gibi. referenceDocumentUri stok geçmişinde görünür.
  • Bu mutation’ı yalnızca stok bilgisinin asıl kaynağı (source of truth) sizin sisteminizse kullanın. Başka bir kanaldaki satış gibi göreli değişiklikler için inventoryAdjustQuantities daha uygundur.
  • changeFromQuantity: null kontrolü kapatır; eşzamanlı güncellemeler birbirinin üzerine yazabilir.

Sık sorulan sorular

Shopify’da stok GraphQL ile nasıl güncellenir?
Kesin bir sayı belirlemek için inventorySetQuantities’i, adet eklemek ya da düşmek için inventoryAdjustQuantities’i kullanın. İkisi de envanter kalemi ve lokasyon bazında çalışır.
changeFromQuantity nedir?
Değişiklikten önce Shopify’da olmasını beklediğiniz miktardır. Farklıysa güncelleme reddedilir; böylece arada gerçekleşen bir satış kaybolmaz.
Neden idempotency key hatası alıyorum?
2026-04 API sürümünden itibaren mutation @idempotent(key: ...) ister. Her değişiklik için yeni, tekrar denemede aynı anahtarı kullanın.
Envanter kalemi ID’sini nerede bulurum?
Her varyantın kendi ID’sine sahip bir inventoryItem’ı vardır. productVariants’ı ya da varyantı ID ile sorgulayıp inventoryItem { id } seçin.
  • 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.