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?
Examples
1const { admin } = await authenticate.admin(request);23const response = await admin.graphql(4 `#graphql5 mutation discountCodeAppCreate($codeAppDiscount: DiscountCodeAppInput!) {6 discountCodeAppCreate(codeAppDiscount: $codeAppDiscount) {7 codeAppDiscount {8 discountId9 title10 appDiscountType {11 description12 functionId13 }14 combinesWith {15 orderDiscounts16 productDiscounts17 shippingDiscounts18 }19 codes(first: 100) {20 nodes {21 code22 }23 }24 status25 usageLimit26 }27 userErrors {28 field29 message30 }31 }32 }`,33 {34 variables: {35 "codeAppDiscount": {36 "code": "APP_DISCOUNT",37 "title": "Take 5$ from order discount",38 "functionId": "241d1090-ce51-4c0e-8b87-a6fa14fe580a",39 "appliesOncePerCustomer": true,40 "combinesWith": {41 "orderDiscounts": true,42 "productDiscounts": true,43 "shippingDiscounts": true44 },45 "startsAt": "2021-02-02T17:09:21Z",46 "endsAt": "2022-02-02T17:09:21Z",47 "usageLimit": 1,48 "metafields": [49 {50 "namespace": "default",51 "key": "function-configuration",52 "type": "json",53 "value": "{\"discounts\":[{\"value\":{\"fixedAmount\":{\"amount\":5}},\"targets\":\n [{\"orderSubtotal\":{\"excludedVariantIds\":[]}}]}],\"discountApplicationStrategy\":\"FIRST\"}"54 }55 ]56 }57 },58 },59);6061const data = await response.json();62
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/2025-01/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
JSON1{2 "codeAppDiscount": {3 "code": "APP_DISCOUNT",4 "title": "Take 5$ from order discount",5 "functionId": "241d1090-ce51-4c0e-8b87-a6fa14fe580a",6 "appliesOncePerCustomer": true,7 "combinesWith": {8 "orderDiscounts": true,9 "productDiscounts": true,10 "shippingDiscounts": true11 },12 "startsAt": "2021-02-02T17:09:21Z",13 "endsAt": "2022-02-02T17:09:21Z",14 "usageLimit": 1,15 "metafields": [16 {17 "namespace": "default",18 "key": "function-configuration",19 "type": "json",20 "value": "{\"discounts\":[{\"value\":{\"fixedAmount\":{\"amount\":5}},\"targets\":\n [{\"orderSubtotal\":{\"excludedVariantIds\":[]}}]}],\"discountApplicationStrategy\":\"FIRST\"}"21 }22 ]23 }24}
Response
JSON1{2 "discountCodeAppCreate": {3 "codeAppDiscount": {4 "discountId": "gid://shopify/DiscountCodeNode/1057371199",5 "title": "Take 5$ from order discount",6 "appDiscountType": {7 "description": "my function does a thing",8 "functionId": "af8aad4b-5db2-4eb8-8a22-1d5d11657d17"9 },10 "combinesWith": {11 "orderDiscounts": true,12 "productDiscounts": true,13 "shippingDiscounts": true14 },15 "codes": {16 "nodes": [17 {18 "code": "APP_DISCOUNT"19 }20 ]21 },22 "status": "EXPIRED",23 "usageLimit": 124 },25 "userErrors": []26 }27}