Bir indirim Function’ını otomatik indirim olarak etkinleştirme

İndirim Function’ınızı discountAutomaticAppCreate ile mağazada etkinleştirin: function handle, indirim sınıfları, birleşme kuralları ve JSON ayar metafield’ı.

API
Admin GraphQL API
İşlemler
shopifyFunctions, discountAutomaticAppCreate
Erişim yetkisi
write_discounts
API sürümü
2026-10
Son kontrol

Kısaca

Deploy edilmiş bir indirim Function’ı, onu kullanan bir indirim oluşturulana kadar hiçbir şey yapmaz. Etkinleştirmek için discountAutomaticAppCreate’i bir title, startsAt, Function’ın functionHandle’ı, etkilediği discountClasses (PRODUCT, ORDER ya da SHIPPING) ve combinesWith ile çağırın. Ayarları indirime JSON bir metafield olarak verin; Function bunu input sorgusunda okur. Kodlu indirim için discountCodeAppCreate’i kullanın.

Nasıl kullanılır

  1. Uygulamayı indirim Function’ıyla birlikte deploy edin. Handle, extension’ın shopify.extension.toml dosyasındaki handle’dır.
  2. İsterseniz AppFunctions ile uygulamanızın Function’larını listeleyip bu mağazadaki handle’ı doğrulayın.
  3. CreateVolumeDiscount’u handle, Function’ın döndürdüğü sınıflar ve diğer indirimlerle nasıl birleşeceği bilgisiyle gönderin.
  4. Mağaza sahibinin ayarlarını indirimdeki json tipli bir metafield’a koyun ve Function’ın input sorgusunda okuyun.

Kod

shopify-functions.graphql
query AppFunctions($first: Int!) {
  shopifyFunctions(first: $first) {
    nodes {
      id
      handle
      title
      apiType
    }
  }
}
shopify-functions.variables.json
{
  "first": 25
}
shopify-functions.response.json
{
  "data": {
    "shopifyFunctions": {
      "nodes": [
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "handle": "volume-discount",
          "title": "Volume discount",
          "apiType": "discount"
        }
      ]
    }
  }
}
discount-automatic-app-create.graphql
mutation CreateVolumeDiscount($discount: DiscountAutomaticAppInput!) {
  discountAutomaticAppCreate(automaticAppDiscount: $discount) {
    automaticAppDiscount {
      discountId
      title
      status
      startsAt
      discountClasses
      combinesWith {
        orderDiscounts
        productDiscounts
        shippingDiscounts
      }
    }
    userErrors {
      code
      field
      message
    }
  }
}
discount-automatic-app-create.variables.json
{
  "discount": {
    "title": "Buy 3, save 10%",
    "functionHandle": "volume-discount",
    "discountClasses": ["PRODUCT"],
    "startsAt": "2026-11-03T00:00:00Z",
    "combinesWith": {
      "orderDiscounts": false,
      "productDiscounts": false,
      "shippingDiscounts": true
    },
    "metafields": [
      {
        "namespace": "$app",
        "key": "function-configuration",
        "type": "json",
        "value": "{\"minimumQuantity\":3,\"percentage\":10}"
      }
    ]
  }
}
discount-automatic-app-create.response.json
{
  "data": {
    "discountAutomaticAppCreate": {
      "automaticAppDiscount": {
        "discountId": "gid://shopify/DiscountAutomaticNode/1234567890",
        "title": "Buy 3, save 10%",
        "status": "SCHEDULED",
        "startsAt": "2026-11-03T00:00:00Z",
        "discountClasses": ["PRODUCT"],
        "combinesWith": {
          "orderDiscounts": false,
          "productDiscounts": false,
          "shippingDiscounts": true
        }
      },
      "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

  • functionHandle yalnızca kendi uygulamanızdaki Function’ları bulur; uygulamanın mağazada kurulu olması gerekir.
  • discountClasses, indirimin hangi etkileri uygulayabileceğini belirler; Function’ınızın döndürdüğü her sınıfı listeleyin.
  • status, startsAt’e kadar SCHEDULED, sonrasında ACTIVE’dir.
  • Ayarları sonradan değiştirmek için metafield’ı metafieldsSet ile, indirim ID’sini ownerId olarak vererek yeniden yazın.

Sık sorulan sorular

Shopify’da bir indirim Function’ı nasıl etkinleştirilir?
Onu kullanan bir indirim oluşturun: otomatik indirimler için discountAutomaticAppCreate, kodlu indirimler için discountCodeAppCreate; ikisinde de Function’ın functionHandle’ını verin.
İndirim Function’ına ayarları nasıl aktarırım?
İndirimi oluştururken ayarları JSON bir metafield olarak kaydedin, ardından bu metafield’ı Function’ın input sorgusunda okuyun.
Function handle’ını nerede bulurum?
Function extension’ının TOML dosyasındaki handle’dır. shopifyFunctions sorgusu, uygulamanızın bir mağazadaki Function’larının handle’larını listeler.
  • 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.