# 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’ı.

Sayfa: https://lintelagency.com/tr/kaynaklar/graphql/function-tabanli-otomatik-indirim

## 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.

## Bilgiler

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

## 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

```graphql
query AppFunctions($first: Int!) {
  shopifyFunctions(first: $first) {
    nodes {
      id
      handle
      title
      apiType
    }
  }
}
```

### shopify-functions.variables.json

```json
{
  "first": 25
}
```

### shopify-functions.response.json

```json
{
  "data": {
    "shopifyFunctions": {
      "nodes": [
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "handle": "volume-discount",
          "title": "Volume discount",
          "apiType": "discount"
        }
      ]
    }
  }
}
```

### discount-automatic-app-create.graphql

```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

```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

```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": []
    }
  }
}
```

## 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.

## 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.

## Shopify belgeleri

- [discountAutomaticAppCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/discountAutomaticAppCreate)
- [Build a discount Function](https://shopify.dev/docs/apps/build/discounts/build-discount-function)

## İlgili içerikler

- [Adede göre kademeli indirim](https://lintelagency.com/tr/kaynaklar/shopify-functions/adede-gore-kademeli-indirim)
- [Metafield ile ayarlanan tek bir indirim Function’ı](https://lintelagency.com/tr/kaynaklar/shopify-functions/metafield-ile-ayarlanan-indirim)
- [Function’ları metafield (meta alan) ile yapılandırmak: kuralı yeni sürüm yayınlamadan değiştirin](https://lintelagency.com/tr/blog/shopify-functions-metafield-ile-yapilandirma)
- [Shopify Scripts çalışmayı bıraktı. Her script’in mantığı artık nereye gidiyor?](https://lintelagency.com/tr/blog/shopify-scriptsten-functionsa-gecis)
- [Teslimat, ödeme ya da doğrulama Function’ını etkinleştirme](https://lintelagency.com/tr/kaynaklar/graphql/function-ozellestirmesini-etkinlestirme)

Lisans: MIT. Kendi mağazanızda da müşteri işlerinizde de ücretsiz kullanabilirsiniz.
