Skip to main content
object

Requires Apps must have read_discounts access scope.

The DiscountNode object enables you to manage discounts, which are applied at checkout or on a cart.

Discounts are a way for merchants to promote sales and special offers, or as customer loyalty rewards. Discounts can apply to orders, products, or shipping, and can be either automatic or code-based. For example, you can offer customers a buy X get Y discount that's automatically applied when purchases meet specific criteria. Or, you can offer discounts where customers have to enter a code to redeem an amount off discount on products, variants, or collections in a store.

Learn more about working with Shopify's discount model, including related mutations, limitations, and considerations.

•Discount!
non-null

A discount that's applied at checkout or on cart.

Discounts can be automatic or code-based.

•EventConnection!
non-null

The paginated list of events associated with the host subject.

Arguments

•String

The elements that come after the specified cursor.

•String

The elements that come before the specified cursor.

•Int

The first n elements from the paginated list.

•Int

The last n elements from the paginated list.

•String

A filter made up of terms, connectives, modifiers, and comparators. | comments | boolean | Whether or not to include comment-events in your search, passing false will exclude comment-events, any other value will include comment-events. | | | - false
- true | | created_at | time | Filter by the date and time when the event occurred. Event data is retained for 1 year. | | | - created_at:>2025-10-21
- created_at:<now | | id | id | Filter by id range. | | | - id:1234
- id:>=1234
- id:<=1234 | | subject_type | string | The resource type affected by this event. See EventSubjectType for possible values. | | | - PRODUCT_VARIANT
- PRODUCT
- COLLECTION | You can apply one or more filters to a query. Learn more about Shopify API search syntax.

•string

The action that occured.

Example:

  • action:create
•Boolean
Default:false

Reverse the order of the underlying list.

•EventSortKeys
Default:ID

Sort the underlying list using a key. If your query is slow or returns an error, then try specifying a sort key that matches the field used in the search.


•ID!
non-null

A globally-unique ID.

•Metafield

A custom field, including its namespace and key, that's associated with a Shopify resource for the purposes of adding and storing additional information.

Arguments

•String!
required

The key for the metafield.

•String

The container the metafield belongs to. If omitted, the app-reserved namespace will be used.


•MetafieldConnection!
non-null

A list of custom fields that a merchant associates with a Shopify resource.

Arguments

•String

The elements that come after the specified cursor.

•String

The elements that come before the specified cursor.

•Int

The first n elements from the paginated list.

•[String!]

List of keys of metafields in the format namespace.key, will be returned in the same format.

•Int

The last n elements from the paginated list.

•String

The metafield namespace to filter by. If omitted, all metafields are returned.

•Boolean
Default:false

Reverse the order of the underlying list.


Anchor to metafieldDefinitionsmetafieldDefinitions
•MetafieldDefinitionConnection!
non-nullDeprecated

Arguments

•String

The elements that come after the specified cursor.

•String

The elements that come before the specified cursor.

•Int

The first n elements from the paginated list.

•Int

The last n elements from the paginated list.

•String

Filter metafield definitions by namespace.

•MetafieldDefinitionPinnedStatus
Default:ANY

Filter by the definition's pinned status.

•String

A filter made up of terms, connectives, modifiers, and comparators.

nametypedescriptionacceptable_valuesdefault_valueexample_use
defaultstringFilter by a case-insensitive search of multiple fields
in a document.- query=Bob Norman
- query=title:green hoodie
created_attimeFilter by the date and time when the metafield
definition was created.- created_at:>2020-10-21T23:39:20Z
-
created_at:<now
- created_at:<=2024
ididFilter by id range.- id:1234
- id:>=1234
- id:<=1234
keystringFilter by the metafield definition key
field.- key:some-key
namespacestringFilter by the metafield definition namespace
field.- namespace:some-namespace
owner_typestringFilter by the metafield definition ownerType
field.- owner_type:PRODUCT
typestringFilter by the metafield definition type
field.- type:single_line_text_field
updated_attimeFilter by the date and time when the metafield
definition was last updated.- updated_at:>2020-10-21T23:39:20Z
  • updated_at:<now
    - updated_at:<=2024 | You can apply one or more filters to a query. Learn more about Shopify API search syntax.
•Boolean
Default:false

Reverse the order of the underlying list.

•MetafieldDefinitionSortKeys
Default:ID

Sort the underlying list using a key. If your query is slow or returns an error, then try specifying a sort key that matches the field used in the search.



Was this section helpful?

•query

Returns a DiscountNode resource by ID.

Arguments

•ID!
required

The ID of the DiscountNode to return.


•query

Returns a list of discounts.

Arguments

•String

The elements that come after the specified cursor.

•String

The elements that come before the specified cursor.

•Int

The first n elements from the paginated list.

•Int

The last n elements from the paginated list.

•String

A filter made up of terms, connectives, modifiers, and comparators.

nametypedescriptionacceptable_valuesdefault_valueexample_use
defaultstringFilter by a case-insensitive search of multiple fields
in a document.- query=Bob Norman
- query=title:green hoodie
codestringFilter by the discount code. Not supported for bulk discounts.- code:WELCOME10
combines_withstringFilter by the [Shopify Functions discount
classes](https://shopify.dev/docs/apps/build/discounts#discount-classes)
that the discount type
can combine with. Supports multiple values separated by commas (e.g.,
combines_with:product_discounts,order_discounts).- order_discounts
  • product_discounts
    - shipping_discounts | | - combines_with:product_discounts
    - combines_with:product_discounts,order_discounts | | combines_with.product_discounts_with_tags_on_same_cart_line | string | Filter by a combines with tag applied to discounts on the same cart line. Supports multiple tags separated by commas (e.g., combines_with.product_discounts_with_tags_on_same_cart_line:priority,exclusive). | | | - combines_with.product_discounts_with_tags_on_same_cart_line:priority
    - combines_with.product_discounts_with_tags_on_same_cart_line:priority,exclusive | | created_at | time | Filter by the date and time, in the shop's timezone, when the discount was created. | | | - created_at:>'2020-10-21T23:39:20Z'
    - created_at:<now
    - created_at:<='2024' | | discount_class | string | Filter by the discount class. Supports multiple classes separated by commas (e.g., discount_class:product,order). | - order
    - product
    - shipping | | - discount_class:product
    - discount_class:product,order | | discount_type | string | Filter by the discount type. Supports multiple types separated by commas (e.g., discount_type:percentage,fixed_amount). | - app
    - bogo
    - fixed_amount
    - free_shipping
    - percentage | | - discount_type:fixed_amount
    - discount_type:percentage,fixed_amount | | ends_at | time | Filter by the date and time, in the shop's timezone, when the discount ends. | | | - ends_at:>'2020-10-21T23:39:20Z'
    - ends_at:<now
    - ends_at:<='2024' | | id | id | Filter by id range. | | | - id:1234
    - id:>=1234
    - id:<=1234 | | method | string | Filter by the discount method. Supports multiple methods separated by commas (e.g., method:code,automatic). | - automatic
    - code | | - method:code
    - method:code,automatic | | starts_at | time | Filter by the date and time, in the shop's timezone, when the discount becomes active and is available for customer use. | | | - starts_at:>'2020-10-21T23:39:20Z'
    - starts_at:<now
    - starts_at:<='2024' | | status | string | Filter by the status of the discount. Supports multiple statuses separated by commas (e.g., status:active,scheduled). | - active
    - expired
    - scheduled | | - status:scheduled
    - status:active,scheduled | | tag | string | Filter by a tag applied to the discount. Supports multiple tags separated by commas (e.g., tag:loyalty,clearance). | | | - tag:loyalty
    - tag:loyalty,clearance | | times_used | integer | Filter by the number of times 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 different than the actual usage count. | | | - times_used:0
  • times_used:>150
    - times_used:>=200 | | title | string | Filter by the discount name that displays to merchants in the Shopify admin and to customers. | | | - title:Black Friday Sale | | type | string | Filter by the discount type. Supports multiple types separated by commas (e.g., type:percentage,fixed_amount). | - all
    - all_with_app
    - app
    - bxgy
    - fixed_amount
    - free_shipping
    - percentage | | - type:percentage
    - type:percentage,fixed_amount | | updated_at | time | Filter by the date and time, in the shop's timezone, when the discount was last updated. | | | - updated_at:>'2020-10-21T23:39:20Z'
    - updated_at:<now
    - updated_at:<='2024' | You can apply one or more filters to a query. Learn more about Shopify API search syntax.
•Boolean
Default:false

Reverse the order of the underlying list.

•ID

The ID of a saved search. The search’s query string is used as the query argument.

•DiscountSortKeys
Default:ID

Sort the underlying list using a key. If your query is slow or returns an error, then try specifying a sort key that matches the field used in the search.



Was this section helpful?

•interface

Was this section helpful?