# discountRedeemCodeBulkAdd - admin-graphql - MUTATION Version: 2024-07 ## Description Asynchronously add [discount codes](https://help.shopify.com/manual/discounts/discount-types#discount-codes) in bulk that customers can use to redeem a discount. You can use the `discountRedeemCodeBulkAdd` mutation to automate the distribution of discount codes through emails or other marketing channels. ### Access Scopes Apps must have `write_discounts` access scope. ## Arguments * [codes](/docs/api/admin-graphql/2024-07/input-objects/DiscountRedeemCodeInput): DiscountRedeemCodeInput! - The list of codes to associate with the [code discount](https://help.shopify.com/manual/discounts/discount-types#discount-codes). Maximum: 100 codes. * [discountId](/docs/api/admin-graphql/2024-07/scalars/ID): ID! - The ID of the [`DiscountCodeNode`](https://help.shopify.com/docs/api/admin-graphql/latest/objects/DiscountCodeNode#field-id) object that the codes will be added to. For example, `gid://shopify/DiscountCodeNode/123`. You can use the [`codeDiscountNodes` query](https://shopify.dev/docs/api/admin-graphql/latest/queries/codeDiscountNodes) to retrieve the ID. ## Returns * [bulkCreation](/docs/api/admin-graphql/2024-07/objects/DiscountRedeemCodeBulkCreation): DiscountRedeemCodeBulkCreation The ID of bulk operation that creates multiple unique discount codes. You can use the [`discountRedeemCodeBulkCreation` query](https://shopify.dev/api/admin-graphql/latest/queries/discountRedeemCodeBulkCreation) to track the status of the bulk operation. * [userErrors](/docs/api/admin-graphql/2024-07/objects/DiscountUserError): DiscountUserError! The list of errors that occurred from executing the mutation. ## Examples ### Asynchronously add redeem codes to a code discount Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-07/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation discountRedeemCodeBulkAdd($discountId: ID!, $codes: [DiscountRedeemCodeInput!]!) { discountRedeemCodeBulkAdd(discountId: $discountId, codes: $codes) { bulkCreation { id } userErrors { code field message } } }\",\n \"variables\": {\n \"discountId\": \"gid://shopify/DiscountCodeNode/2429471\",\n \"codes\": [\n {\n \"code\": \"DISCOUNT_1\"\n },\n {\n \"code\": \"DISCOUNT_2\"\n },\n {\n \"code\": \"DISCOUNT_3\"\n }\n ]\n }\n}'\n" Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation discountRedeemCodeBulkAdd($discountId: ID!, $codes: [DiscountRedeemCodeInput!]!) {\n discountRedeemCodeBulkAdd(discountId: $discountId, codes: $codes) {\n bulkCreation {\n id\n }\n userErrors {\n code\n field\n message\n }\n }\n }`,\n \"variables\": {\n \"discountId\": \"gid://shopify/DiscountCodeNode/2429471\",\n \"codes\": [\n {\n \"code\": \"DISCOUNT_1\"\n },\n {\n \"code\": \"DISCOUNT_2\"\n },\n {\n \"code\": \"DISCOUNT_3\"\n }\n ]\n },\n },\n});\n" Ruby example: "session = ShopifyAPI::Auth::Session.new(\n shop: \"your-development-store.myshopify.com\",\n access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n session: session\n)\n\nquery = <<~QUERY\n mutation discountRedeemCodeBulkAdd($discountId: ID!, $codes: [DiscountRedeemCodeInput!]!) {\n discountRedeemCodeBulkAdd(discountId: $discountId, codes: $codes) {\n bulkCreation {\n id\n }\n userErrors {\n code\n field\n message\n }\n }\n }\nQUERY\n\nvariables = {\n \"discountId\": \"gid://shopify/DiscountCodeNode/2429471\",\n \"codes\": [{\"code\"=>\"DISCOUNT_1\"}, {\"code\"=>\"DISCOUNT_2\"}, {\"code\"=>\"DISCOUNT_3\"}]\n}\n\nresponse = client.query(query: query, variables: variables)\n" Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n `#graphql\n mutation discountRedeemCodeBulkAdd($discountId: ID!, $codes: [DiscountRedeemCodeInput!]!) {\n discountRedeemCodeBulkAdd(discountId: $discountId, codes: $codes) {\n bulkCreation {\n id\n }\n userErrors {\n code\n field\n message\n }\n }\n }`,\n {\n variables: {\n \"discountId\": \"gid://shopify/DiscountCodeNode/2429471\",\n \"codes\": [\n {\n \"code\": \"DISCOUNT_1\"\n },\n {\n \"code\": \"DISCOUNT_2\"\n },\n {\n \"code\": \"DISCOUNT_3\"\n }\n ]\n },\n },\n);\n\nconst data = await response.json();\n" Graphql query: "mutation discountRedeemCodeBulkAdd($discountId: ID!, $codes: [DiscountRedeemCodeInput!]!) {\n discountRedeemCodeBulkAdd(discountId: $discountId, codes: $codes) {\n bulkCreation {\n id\n }\n userErrors {\n code\n field\n message\n }\n }\n}" #### Graphql Input { "discountId": "gid://shopify/DiscountCodeNode/2429471", "codes": [ { "code": "DISCOUNT_1" }, { "code": "DISCOUNT_2" }, { "code": "DISCOUNT_3" } ] } #### Graphql Response { "data": { "discountRedeemCodeBulkAdd": { "bulkCreation": { "id": "gid://shopify/DiscountRedeemCodeBulkCreation/989355207" }, "userErrors": [] } } } ### Creates a discount code Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-07/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation DiscountRedeemCodeBulkAdd($discountId: ID!, $codes: [DiscountRedeemCodeInput!]!) { discountRedeemCodeBulkAdd(discountId: $discountId, codes: $codes) { bulkCreation { id createdAt discountCode { id } done codesCount importedCount failedCount } userErrors { code field message } } }\",\n \"variables\": {\n \"discountId\": \"gid://shopify/DiscountCodeNode/2429471\",\n \"codes\": [\n {\n \"code\": \"DISCOUNT_1\"\n },\n {\n \"code\": \"DISCOUNT_2\"\n },\n {\n \"code\": \"DISCOUNT_3\"\n }\n ]\n }\n}'\n" Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation DiscountRedeemCodeBulkAdd($discountId: ID!, $codes: [DiscountRedeemCodeInput!]!) {\n discountRedeemCodeBulkAdd(discountId: $discountId, codes: $codes) {\n bulkCreation {\n id\n createdAt\n discountCode {\n id\n }\n done\n codesCount\n importedCount\n failedCount\n }\n userErrors {\n code\n field\n message\n }\n }\n }`,\n \"variables\": {\n \"discountId\": \"gid://shopify/DiscountCodeNode/2429471\",\n \"codes\": [\n {\n \"code\": \"DISCOUNT_1\"\n },\n {\n \"code\": \"DISCOUNT_2\"\n },\n {\n \"code\": \"DISCOUNT_3\"\n }\n ]\n },\n },\n});\n" Ruby example: "session = ShopifyAPI::Auth::Session.new(\n shop: \"your-development-store.myshopify.com\",\n access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n session: session\n)\n\nquery = <<~QUERY\n mutation DiscountRedeemCodeBulkAdd($discountId: ID!, $codes: [DiscountRedeemCodeInput!]!) {\n discountRedeemCodeBulkAdd(discountId: $discountId, codes: $codes) {\n bulkCreation {\n id\n createdAt\n discountCode {\n id\n }\n done\n codesCount\n importedCount\n failedCount\n }\n userErrors {\n code\n field\n message\n }\n }\n }\nQUERY\n\nvariables = {\n \"discountId\": \"gid://shopify/DiscountCodeNode/2429471\",\n \"codes\": [{\"code\"=>\"DISCOUNT_1\"}, {\"code\"=>\"DISCOUNT_2\"}, {\"code\"=>\"DISCOUNT_3\"}]\n}\n\nresponse = client.query(query: query, variables: variables)\n" Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n `#graphql\n mutation DiscountRedeemCodeBulkAdd($discountId: ID!, $codes: [DiscountRedeemCodeInput!]!) {\n discountRedeemCodeBulkAdd(discountId: $discountId, codes: $codes) {\n bulkCreation {\n id\n createdAt\n discountCode {\n id\n }\n done\n codesCount\n importedCount\n failedCount\n }\n userErrors {\n code\n field\n message\n }\n }\n }`,\n {\n variables: {\n \"discountId\": \"gid://shopify/DiscountCodeNode/2429471\",\n \"codes\": [\n {\n \"code\": \"DISCOUNT_1\"\n },\n {\n \"code\": \"DISCOUNT_2\"\n },\n {\n \"code\": \"DISCOUNT_3\"\n }\n ]\n },\n },\n);\n\nconst data = await response.json();\n" Graphql query: "mutation DiscountRedeemCodeBulkAdd($discountId: ID!, $codes: [DiscountRedeemCodeInput!]!) {\n discountRedeemCodeBulkAdd(discountId: $discountId, codes: $codes) {\n bulkCreation {\n id\n createdAt\n discountCode {\n id\n }\n done\n codesCount\n importedCount\n failedCount\n }\n userErrors {\n code\n field\n message\n }\n }\n}" #### Graphql Input { "discountId": "gid://shopify/DiscountCodeNode/2429471", "codes": [ { "code": "DISCOUNT_1" }, { "code": "DISCOUNT_2" }, { "code": "DISCOUNT_3" } ] } #### Graphql Response { "data": { "discountRedeemCodeBulkAdd": { "bulkCreation": { "id": "gid://shopify/DiscountRedeemCodeBulkCreation/989355210", "createdAt": "2024-11-06T21:59:51Z", "discountCode": { "id": "gid://shopify/DiscountCodeNode/2429471" }, "done": false, "codesCount": 3, "importedCount": 0, "failedCount": 0 }, "userErrors": [] } } } ### Creates a discount code creation job Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/2024-07/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation DiscountRedeemCodeBulkAdd($discountId: ID!, $codes: [DiscountRedeemCodeInput!]!) { discountRedeemCodeBulkAdd(discountId: $discountId, codes: $codes) { bulkCreation { id createdAt discountCode { id } done codesCount importedCount failedCount } userErrors { code field message } } }\",\n \"variables\": {\n \"discountId\": \"gid://shopify/DiscountCodeNode/2429471\",\n \"codes\": [\n {\n \"code\": \"DISCOUNT_1\"\n },\n {\n \"code\": \"DISCOUNT_2\"\n },\n {\n \"code\": \"DISCOUNT_3\"\n }\n ]\n }\n}'\n" Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation DiscountRedeemCodeBulkAdd($discountId: ID!, $codes: [DiscountRedeemCodeInput!]!) {\n discountRedeemCodeBulkAdd(discountId: $discountId, codes: $codes) {\n bulkCreation {\n id\n createdAt\n discountCode {\n id\n }\n done\n codesCount\n importedCount\n failedCount\n }\n userErrors {\n code\n field\n message\n }\n }\n }`,\n \"variables\": {\n \"discountId\": \"gid://shopify/DiscountCodeNode/2429471\",\n \"codes\": [\n {\n \"code\": \"DISCOUNT_1\"\n },\n {\n \"code\": \"DISCOUNT_2\"\n },\n {\n \"code\": \"DISCOUNT_3\"\n }\n ]\n },\n },\n});\n" Ruby example: "session = ShopifyAPI::Auth::Session.new(\n shop: \"your-development-store.myshopify.com\",\n access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n session: session\n)\n\nquery = <<~QUERY\n mutation DiscountRedeemCodeBulkAdd($discountId: ID!, $codes: [DiscountRedeemCodeInput!]!) {\n discountRedeemCodeBulkAdd(discountId: $discountId, codes: $codes) {\n bulkCreation {\n id\n createdAt\n discountCode {\n id\n }\n done\n codesCount\n importedCount\n failedCount\n }\n userErrors {\n code\n field\n message\n }\n }\n }\nQUERY\n\nvariables = {\n \"discountId\": \"gid://shopify/DiscountCodeNode/2429471\",\n \"codes\": [{\"code\"=>\"DISCOUNT_1\"}, {\"code\"=>\"DISCOUNT_2\"}, {\"code\"=>\"DISCOUNT_3\"}]\n}\n\nresponse = client.query(query: query, variables: variables)\n" Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n `#graphql\n mutation DiscountRedeemCodeBulkAdd($discountId: ID!, $codes: [DiscountRedeemCodeInput!]!) {\n discountRedeemCodeBulkAdd(discountId: $discountId, codes: $codes) {\n bulkCreation {\n id\n createdAt\n discountCode {\n id\n }\n done\n codesCount\n importedCount\n failedCount\n }\n userErrors {\n code\n field\n message\n }\n }\n }`,\n {\n variables: {\n \"discountId\": \"gid://shopify/DiscountCodeNode/2429471\",\n \"codes\": [\n {\n \"code\": \"DISCOUNT_1\"\n },\n {\n \"code\": \"DISCOUNT_2\"\n },\n {\n \"code\": \"DISCOUNT_3\"\n }\n ]\n },\n },\n);\n\nconst data = await response.json();\n" Graphql query: "mutation DiscountRedeemCodeBulkAdd($discountId: ID!, $codes: [DiscountRedeemCodeInput!]!) {\n discountRedeemCodeBulkAdd(discountId: $discountId, codes: $codes) {\n bulkCreation {\n id\n createdAt\n discountCode {\n id\n }\n done\n codesCount\n importedCount\n failedCount\n }\n userErrors {\n code\n field\n message\n }\n }\n}" #### Graphql Input { "discountId": "gid://shopify/DiscountCodeNode/2429471", "codes": [ { "code": "DISCOUNT_1" }, { "code": "DISCOUNT_2" }, { "code": "DISCOUNT_3" } ] } #### Graphql Response { "data": { "discountRedeemCodeBulkAdd": { "bulkCreation": { "id": "gid://shopify/DiscountRedeemCodeBulkCreation/989355209", "createdAt": "2024-11-06T21:59:51Z", "discountCode": { "id": "gid://shopify/DiscountCodeNode/2429471" }, "done": false, "codesCount": 3, "importedCount": 0, "failedCount": 0 }, "userErrors": [] } } }