Anchor to discountCodeAppCreatediscount
discount Code App Create
mutation
Requires access scope.
Creates a code discount. The discount type must be provided by an app extension that uses Shopify Functions. Functions can implement order, product, or shipping discount functions. Use this mutation with Shopify Functions when you need custom logic beyond Shopify's native discount types.
For example, use this mutation to create a code 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.
Anchor to Arguments
Arguments
- Anchor to codeAppDiscountcode•
App Discount DiscountCode App Input!required The input data used to create the discount.
Was this section helpful?
- Anchor to codeAppDiscountcode•
App Discount The discount that the app provides.
- Anchor to userErrorsuser•
Errors [DiscountUser Error!]!non-null The list of errors that occurred from executing the mutation.
Was this section helpful?
- Create a combinable code discount that's managed by an app
- Create a product-based code discount that's managed by an app
- discountCodeAppCreate reference
Examples
const { admin } = await authenticate.admin(request);
const response = await admin.graphql(
`#graphql
mutation discountCodeAppCreate($codeAppDiscount: DiscountCodeAppInput!) {
discountCodeAppCreate(codeAppDiscount: $codeAppDiscount) {
codeAppDiscount {
discountId
title
appDiscountType {
description
functionId
}
combinesWith {
orderDiscounts
productDiscounts
shippingDiscounts
}
codes(first: 100) {
nodes {
code
}
}
status
usageLimit
}
userErrors {
field
message
}
}
}`,
{
variables: {
"codeAppDiscount": {
"code": "APP_DISCOUNT",
"title": "Take 5$ from order discount",
"functionId": "241d1090-ce51-4c0e-8b87-a6fa14fe580a",
"appliesOncePerCustomer": true,
"combinesWith": {
"orderDiscounts": true,
"productDiscounts": true,
"shippingDiscounts": true
},
"startsAt": "2021-02-02T17:09:21Z",
"endsAt": "2022-02-02T17:09:21Z",
"usageLimit": 1,
"metafields": [
{
"namespace": "default",
"key": "function-configuration",
"type": "json",
"value": "{\"discounts\":[{\"value\":{\"fixedAmount\":{\"amount\":5}},\"targets\":\n [{\"orderSubtotal\":{\"excludedVariantIds\":[]}}]}],\"discountApplicationStrategy\":\"FIRST\"}"
}
]
}
},
},
);
const data = await response.json();
mutation discountCodeAppCreate($codeAppDiscount: DiscountCodeAppInput!) {
discountCodeAppCreate(codeAppDiscount: $codeAppDiscount) {
codeAppDiscount {
discountId
title
appDiscountType {
description
functionId
}
combinesWith {
orderDiscounts
productDiscounts
shippingDiscounts
}
codes(first: 100) {
nodes {
code
}
}
status
usageLimit
}
userErrors {
field
message
}
}
}
curl -X POST \
https://your-development-store.myshopify.com/admin/api/2024-07/graphql.json \
-H 'Content-Type: application/json' \
-H 'X-Shopify-Access-Token: {access_token}' \
-d '{
"query": "mutation discountCodeAppCreate($codeAppDiscount: DiscountCodeAppInput!) { discountCodeAppCreate(codeAppDiscount: $codeAppDiscount) { codeAppDiscount { discountId title appDiscountType { description functionId } combinesWith { orderDiscounts productDiscounts shippingDiscounts } codes(first: 100) { nodes { code } } status usageLimit } userErrors { field message } } }",
"variables": {
"codeAppDiscount": {
"code": "APP_DISCOUNT",
"title": "Take 5$ from order discount",
"functionId": "241d1090-ce51-4c0e-8b87-a6fa14fe580a",
"appliesOncePerCustomer": true,
"combinesWith": {
"orderDiscounts": true,
"productDiscounts": true,
"shippingDiscounts": true
},
"startsAt": "2021-02-02T17:09:21Z",
"endsAt": "2022-02-02T17:09:21Z",
"usageLimit": 1,
"metafields": [
{
"namespace": "default",
"key": "function-configuration",
"type": "json",
"value": "{\"discounts\":[{\"value\":{\"fixedAmount\":{\"amount\":5}},\"targets\":\n [{\"orderSubtotal\":{\"excludedVariantIds\":[]}}]}],\"discountApplicationStrategy\":\"FIRST\"}"
}
]
}
}
}'
const { admin } = await authenticate.admin(request);
const response = await admin.graphql(
`#graphql
mutation discountCodeAppCreate($codeAppDiscount: DiscountCodeAppInput!) {
discountCodeAppCreate(codeAppDiscount: $codeAppDiscount) {
codeAppDiscount {
discountId
title
appDiscountType {
description
functionId
}
combinesWith {
orderDiscounts
productDiscounts
shippingDiscounts
}
codes(first: 100) {
nodes {
code
}
}
status
usageLimit
}
userErrors {
field
message
}
}
}`,
{
variables: {
"codeAppDiscount": {
"code": "APP_DISCOUNT",
"title": "Take 5$ from order discount",
"functionId": "241d1090-ce51-4c0e-8b87-a6fa14fe580a",
"appliesOncePerCustomer": true,
"combinesWith": {
"orderDiscounts": true,
"productDiscounts": true,
"shippingDiscounts": true
},
"startsAt": "2021-02-02T17:09:21Z",
"endsAt": "2022-02-02T17:09:21Z",
"usageLimit": 1,
"metafields": [
{
"namespace": "default",
"key": "function-configuration",
"type": "json",
"value": "{\"discounts\":[{\"value\":{\"fixedAmount\":{\"amount\":5}},\"targets\":\n [{\"orderSubtotal\":{\"excludedVariantIds\":[]}}]}],\"discountApplicationStrategy\":\"FIRST\"}"
}
]
}
},
},
);
const data = await response.json();
const client = new shopify.clients.Graphql({session});
const data = await client.query({
data: {
"query": `mutation discountCodeAppCreate($codeAppDiscount: DiscountCodeAppInput!) {
discountCodeAppCreate(codeAppDiscount: $codeAppDiscount) {
codeAppDiscount {
discountId
title
appDiscountType {
description
functionId
}
combinesWith {
orderDiscounts
productDiscounts
shippingDiscounts
}
codes(first: 100) {
nodes {
code
}
}
status
usageLimit
}
userErrors {
field
message
}
}
}`,
"variables": {
"codeAppDiscount": {
"code": "APP_DISCOUNT",
"title": "Take 5$ from order discount",
"functionId": "241d1090-ce51-4c0e-8b87-a6fa14fe580a",
"appliesOncePerCustomer": true,
"combinesWith": {
"orderDiscounts": true,
"productDiscounts": true,
"shippingDiscounts": true
},
"startsAt": "2021-02-02T17:09:21Z",
"endsAt": "2022-02-02T17:09:21Z",
"usageLimit": 1,
"metafields": [
{
"namespace": "default",
"key": "function-configuration",
"type": "json",
"value": "{\"discounts\":[{\"value\":{\"fixedAmount\":{\"amount\":5}},\"targets\":\n [{\"orderSubtotal\":{\"excludedVariantIds\":[]}}]}],\"discountApplicationStrategy\":\"FIRST\"}"
}
]
}
},
},
});
session = ShopifyAPI::Auth::Session.new(
shop: "your-development-store.myshopify.com",
access_token: access_token
)
client = ShopifyAPI::Clients::Graphql::Admin.new(
session: session
)
query = <<~QUERY
mutation discountCodeAppCreate($codeAppDiscount: DiscountCodeAppInput!) {
discountCodeAppCreate(codeAppDiscount: $codeAppDiscount) {
codeAppDiscount {
discountId
title
appDiscountType {
description
functionId
}
combinesWith {
orderDiscounts
productDiscounts
shippingDiscounts
}
codes(first: 100) {
nodes {
code
}
}
status
usageLimit
}
userErrors {
field
message
}
}
}
QUERY
variables = {
"codeAppDiscount": {
"code": "APP_DISCOUNT",
"title": "Take 5$ from order discount",
"functionId": "241d1090-ce51-4c0e-8b87-a6fa14fe580a",
"appliesOncePerCustomer": true,
"combinesWith": {
"orderDiscounts": true,
"productDiscounts": true,
"shippingDiscounts": true
},
"startsAt": "2021-02-02T17:09:21Z",
"endsAt": "2022-02-02T17:09:21Z",
"usageLimit": 1,
"metafields": [{"namespace"=>"default", "key"=>"function-configuration", "type"=>"json", "value"=>"{\"discounts\":[{\"value\":{\"fixedAmount\":{\"amount\":5}},\"targets\":\n [{\"orderSubtotal\":{\"excludedVariantIds\":[]}}]}],\"discountApplicationStrategy\":\"FIRST\"}"}]
}
}
response = client.query(query: query, variables: variables)
Input variables
JSON{
"codeAppDiscount": {
"code": "APP_DISCOUNT",
"title": "Take 5$ from order discount",
"functionId": "241d1090-ce51-4c0e-8b87-a6fa14fe580a",
"appliesOncePerCustomer": true,
"combinesWith": {
"orderDiscounts": true,
"productDiscounts": true,
"shippingDiscounts": true
},
"startsAt": "2021-02-02T17:09:21Z",
"endsAt": "2022-02-02T17:09:21Z",
"usageLimit": 1,
"metafields": [
{
"namespace": "default",
"key": "function-configuration",
"type": "json",
"value": "{\"discounts\":[{\"value\":{\"fixedAmount\":{\"amount\":5}},\"targets\":\n [{\"orderSubtotal\":{\"excludedVariantIds\":[]}}]}],\"discountApplicationStrategy\":\"FIRST\"}"
}
]
}
}
Response
JSON{
"discountCodeAppCreate": {
"codeAppDiscount": {
"discountId": "gid://shopify/DiscountCodeNode/1057371199",
"title": "Take 5$ from order discount",
"appDiscountType": {
"description": "my function does a thing",
"functionId": "af8aad4b-5db2-4eb8-8a22-1d5d11657d17"
},
"combinesWith": {
"orderDiscounts": true,
"productDiscounts": true,
"shippingDiscounts": true
},
"codes": {
"nodes": [
{
"code": "APP_DISCOUNT"
}
]
},
"status": "EXPIRED",
"usageLimit": 1
},
"userErrors": []
}
}