---
title: DiscountAutomaticApp - GraphQL Admin
description: >-
The `DiscountAutomaticApp` object stores information about automatic discounts
that are managed by an app using
[Shopify Functions](https://shopify.dev/docs/apps/build/functions).
Use `DiscountAutomaticApp`when you need advanced, custom, or
dynamic discount capabilities that aren't supported by
[Shopify's native discount
types](https://help.shopify.com/manual/discounts/discount-types).
Learn more about creating
[custom discount
functionality](https://shopify.dev/docs/apps/build/discounts/build-discount-function).
> Note:
> The
[`DiscountCodeApp`](https://shopify.dev/docs/api/admin-graphql/latest/objects/DiscountCodeApp)
object has similar functionality to the `DiscountAutomaticApp` object, with
the exception that `DiscountCodeApp`
stores information about discount codes that are managed by an app using
Shopify Functions.
>
> API versions prior to `2025-10` only return automatic discounts with
`context` set to `all`, discounts with other values are filtered out.
api_version: 2026-01
api_name: admin
type: object
api_type: graphql
source_url:
html: >-
https://shopify.dev/docs/api/admin-graphql/latest/objects/DiscountAutomaticApp
md: >-
https://shopify.dev/docs/api/admin-graphql/latest/objects/DiscountAutomaticApp.md
---
# DiscountAutomaticApp
object
Requires `read_discounts` access scope.
The `DiscountAutomaticApp` object stores information about automatic discounts that are managed by an app using [Shopify Functions](https://shopify.dev/docs/apps/build/functions). Use `DiscountAutomaticApp`when you need advanced, custom, or dynamic discount capabilities that aren't supported by [Shopify's native discount types](https://help.shopify.com/manual/discounts/discount-types).
Learn more about creating [custom discount functionality](https://shopify.dev/docs/apps/build/discounts/build-discount-function).
***
**Note:** The \\\\\ object has similar functionality to the \\\ object, with the exception that \\\ stores information about discount codes that are managed by an app using Shopify Functions.\
API versions prior to \2025-10\ only return automatic discounts with \context\ set to \all\, discounts with other values are filtered out.
***
## Fields
* appDiscountType
[AppDiscountType!](https://shopify.dev/docs/api/admin-graphql/latest/objects/AppDiscountType)
non-null
The details about the app extension that's providing the [discount type](https://help.shopify.com/manual/discounts/discount-types). This information includes the app extension's name and [client ID](https://shopify.dev/docs/apps/build/authentication-authorization/client-secrets), [App Bridge configuration](https://shopify.dev/docs/api/app-bridge), [discount class](https://help.shopify.com/manual/discounts/combining-discounts/discount-combinations), [function ID](https://shopify.dev/docs/apps/build/functions/input-output/metafields-for-input-queries), and other metadata about the discount type, including the discount type's name and description.
* appliesOnOneTimePurchase
[Boolean!](https://shopify.dev/docs/api/admin-graphql/latest/scalars/Boolean)
non-null
Whether the discount applies on one-time purchases.
* appliesOnSubscription
[Boolean!](https://shopify.dev/docs/api/admin-graphql/latest/scalars/Boolean)
non-null
Whether the discount applies on subscription items. [Subscriptions](https://shopify.dev/docs/apps/launch/billing/subscription-billing/offer-subscription-discounts) enable customers to purchase products on a recurring basis.
* asyncUsageCount
[Int!](https://shopify.dev/docs/api/admin-graphql/latest/scalars/Int)
non-null
The number of times that the discount has been used. For example, if a "Buy 3, Get 1 Free" t-shirt discount is automatically applied in 200 transactions, then the discount has been used 200 times. This value is updated asynchronously. As a result, it might be lower than the actual usage count until the asynchronous process is completed.
* combinesWith
[DiscountCombinesWith!](https://shopify.dev/docs/api/admin-graphql/latest/objects/DiscountCombinesWith)
non-null
The [discount classes](https://help.shopify.com/manual/discounts/combining-discounts/discount-combinations) that you can use in combination with [Shopify discount types](https://help.shopify.com/manual/discounts/discount-types).
* context
[DiscountContext!](https://shopify.dev/docs/api/admin-graphql/latest/unions/DiscountContext)
non-null
The context defining which buyers can use the discount.
* createdAt
[DateTime!](https://shopify.dev/docs/api/admin-graphql/latest/scalars/DateTime)
non-null
The date and time when the discount was created.
* discountClasses
[\[DiscountClass!\]!](https://shopify.dev/docs/api/admin-graphql/latest/enums/DiscountClass)
non-null
The classes of the discount.
* discountId
[ID!](https://shopify.dev/docs/api/admin-graphql/latest/scalars/ID)
non-null
The [globally-unique ID](https://shopify.dev/docs/api/usage/gids) for the discount.
* endsAt
[DateTime](https://shopify.dev/docs/api/admin-graphql/latest/scalars/DateTime)
The date and time when the discount expires and is no longer available to customers. For discounts without a fixed expiration date, specify `null`.
* errorHistory
[FunctionsErrorHistory](https://shopify.dev/docs/api/admin-graphql/latest/objects/FunctionsErrorHistory)
The [error history](https://shopify.dev/docs/apps/build/functions/monitoring-and-errors) for the latest version of the discount type that the app provides.
* recurringCycleLimit
[Int!](https://shopify.dev/docs/api/admin-graphql/latest/scalars/Int)
non-null
The number of billing cycles for which the discount can be applied, which is useful for subscription-based discounts. For example, if you set this field to `3`, then the discount only applies to the first three billing cycles of a subscription. If you specify `0`, then the discount applies indefinitely.
* startsAt
[DateTime!](https://shopify.dev/docs/api/admin-graphql/latest/scalars/DateTime)
non-null
The date and time when the discount becomes active and is available to customers.
* status
[DiscountStatus!](https://shopify.dev/docs/api/admin-graphql/latest/enums/DiscountStatus)
non-null
The status of the discount that describes its availability, expiration, or pending activation.
* title
[String!](https://shopify.dev/docs/api/admin-graphql/latest/scalars/String)
non-null
The discount's name that displays to merchants in the Shopify admin and to customers.
* updatedAt
[DateTime!](https://shopify.dev/docs/api/admin-graphql/latest/scalars/DateTime)
non-null
The date and time when the discount was updated.
* discountClass
[DiscountClass!](https://shopify.dev/docs/api/admin-graphql/latest/enums/DiscountClass)
non-nullDeprecated
***
## Map
### Possible type in
* [Discount](https://shopify.dev/docs/api/admin-graphql/latest/unions/Discount)
* [DiscountAutomatic](https://shopify.dev/docs/api/admin-graphql/latest/unions/DiscountAutomatic)
***
## Mutations
* [discountAutomaticAppCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/discountAutomaticAppCreate)
mutation
Creates an automatic discount that's managed by an app. Use this mutation with [Shopify Functions](https://shopify.dev/docs/apps/build/functions) when you need advanced, custom, or dynamic discount capabilities that aren't supported by [Shopify's native discount types](https://help.shopify.com/manual/discounts/discount-types).
For example, use this mutation to create an automatic discount using an app's "Volume" discount type that applies a percentage off when customers purchase more than the minimum quantity of a product. For an example implementation, refer to [our tutorial](https://shopify.dev/docs/apps/build/discounts/build-discount-function).
***
**Note:** To create code discounts with custom logic, use the \\\\\ mutation.
***
* automaticAppDiscount
[DiscountAutomaticAppInput!](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/DiscountAutomaticAppInput)
required
### Arguments
The input data used to create the automatic discount.
***
* [discountAutomaticAppUpdate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/discountAutomaticAppUpdate)
mutation
Updates an existing automatic discount that's managed by an app using [Shopify Functions](https://shopify.dev/docs/apps/build/functions). Use this mutation when you need advanced, custom, or dynamic discount capabilities that aren't supported by [Shopify's native discount types](https://help.shopify.com/manual/discounts/discount-types).
For example, use this mutation to update a new "Volume" discount type that applies a percentage off when customers purchase more than the minimum quantity of a product. For an example implementation, refer to [our tutorial](https://shopify.dev/docs/apps/build/discounts/build-discount-function).
***
**Note:** To update code discounts with custom logic, use the \\\\\ mutation instead.
***
* id
[ID!](https://shopify.dev/docs/api/admin-graphql/latest/scalars/ID)
required
### Arguments
The ID of the automatic discount to update.
* automaticAppDiscount
[DiscountAutomaticAppInput!](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/DiscountAutomaticAppInput)
required
The input fields required to update the automatic discount.
***
***
## DiscountAutomaticApp Mutations
### Mutated by
* [discountAutomaticAppCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/discountAutomaticAppCreate)
* [discountAutomaticAppUpdate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/discountAutomaticAppUpdate)