2021-10 release notes
We're no longer publishing API release notes. Instead, you can find the latest updates on Shopify APIs in our developer changelog. You can filter updates by area. For example, you can filter API updates by the API name and version, such as GraphQL Admin API changes in version 2025-04.
We're no longer publishing API release notes. Instead, you can find the latest updates on Shopify APIs in our developer changelog. You can filter updates by area. For example, you can filter API updates by the API name and version, such as GraphQL Admin API changes in version 2025-04.
| Release date | Date version is no longer supported |
|---|---|
| October 1, 2021 | October 1, 2022 |
The 2021-10 version of Shopify's APIs includes significant improvements to the Storefront API, including a new Cart API and the ability to fetch specific resources by ID. This version also includes bulk operation webhooks, manual fulfillment holds for pre-orders, and SMS marketing consent endpoints to represent a customer’s willingness to receive SMS marketing communications.
What’s new in 2021-10
The following features were added in version 2021-10 of Shopify's APIs:
- You can now interact directly with carts using the Storefront API. The Cart API allows you to get all the contextual information about an upcoming order without the need to create a checkout until the customer is ready to pay.
- New fields were added to the Storefront API QueryRoot object to fetch individual resources directly. You can query blogs, collections, pages, and products by ID or a handle.
- The Bulk Operations API now includes the
bulk_operations/finishwebhook. You can subscribe to this webhook to be notified when a bulk operation has completed, failed, or been cancelled. - The Fulfillment Orders API now supports apps placing fulfillment holds on items for backorders or pre-orders before the item is available for fulfillment.
- API clients can now use the Customer API to retrieve, add, and update customers' consent to receive marketing materials by SMS.
- You can now use metafield definitions to create additional validation constraints for metafields. You can also use standard metafield definitions, which have specific meanings for common use cases and help merchants manage their data.
Anchor to Breaking changesBreaking changes
These changes require special attention. If your app uses these API resources, and you don’t adjust your usage of the resources according to the following instructions, then your app might break when you update to this API version.
Anchor to Removed full permission on User resourceRemoved full permission on User resource
In API version 2021-07, the permissions property in the REST User resource returned the complete list of explicit permissions that a user with the full permission had access to, including the full permission.
As of API version 2021-10, only the complete list of explicit permissions that a user with the full permission has access to is returned in the permissions property. The full permission value is excluded from the response.
Anchor to GraphQL Admin API changesGraph QL Admin API changes
Below are all the changes currently introduced in the 2021-10 version of the GraphQL Admin API.
Anchor to App added to orders ,[object Object]App added to orders
Use the GraphQL Admin API find out what application created an order.
New field
-
orderAppfield was added toOrderobjectNew type
-
orderAppobject was added
Anchor to Bulk operations ,[object Object]Bulk operations
Use the GraphQL Admin API to query the type of the bulk operation. You can also subscribe to the bulk_operations/finish webhook topic to be notified when a bulk operation has completed, failed, or been cancelled.
The bulkProductResourceFeedbackCreate mutation allows you to create up to 50 feedback entries on a product resource in a single API request. You can also query for product resource feedback with the productResourceFeedback field.
New field
-
typefield was added toBulkOperationobject -
productResourceFeedbackfield was added to objectQueryRootNew types
-
bulkProductResourceFeedbackCreatemutation was added -
ProductResourceFeedbackInputinput object was added -
ProductResourceFeedbackobject was added -
ResourceFeedbackStateenum was addedNew topics
-
BULK_OPERATIONS_FINISHvalue was added to enumWebhookSubscriptionTopic
Anchor to Channel apps: onboarding merchants ,[object Object]Channel apps: onboarding merchants
Use the GraphQL Admin API to query whether a shop is approved for onboarding to channel apps. Use this query to accelerate the onboarding process for verified merchants.
New types
-
MerchantApprovalSignalsobject type was addedNew fields
-
verifiedByShopifyfield was added -
identityVerifiedfield was added
Anchor to Contextual pricing for products,[object Object]Contextual pricing for products
Use the GraphQL Admin API to return the price a customer will pay for a product given a particular context, such as the customer's country. Using contextual pricing, you can query the Product object for a price range, or the ProductVariant object for a price, based on the specified context.
New field
-
contextualPricingfield was added toProductandProductVariantobjectsNew types
-
ProductContextualPricingobject was added -
ProductVariantContextualPricingobject was added -
Contextual​Pricing​Contextinput object was added
Anchor to Customer credit cards ,[object Object]Customer credit cards
Use the GraphQL Admin API to query the source (for example, Apple Pay) and the last four digits of a customer's credit card.
New fields
sourcefield was added toCustomerCreditCardobjectvirtualLastDigitsfield was added toCustomerCreditCardobject
Anchor to Fulfillment orders: location address,[object Object]Fulfillment orders: location address
Use the GraphQL Admin API to query the address of the location where an order was fulfilled.
New types
FulfillmentOriginAddressInputinput object was addedoriginAddressfield was added toFulfillmentV2Inputinput objectoriginAddressfield was added toFulfillmentobjectoriginAddressfield was added tofulfillmentCreatemutation
Anchor to Manual fulfillment holds ,[object Object]Manual fulfillment holds
Use the GraphQL Admin API to manually create a fulfillment hold when an order isn't ready for fulfillment immediately. For example, you could create a fulfillment hold if one of the items is backordered, or if an item was preordered before the item's release date.
New values
-
release_holdvalue was added toFulfillmentOrderActionenum -
holdvalue was added toFulfillmentOrderActionenumNew mutations
-
FulfillmentOrderHoldmutation was added -
FulfillmentOrderReleaseHoldmutation was addedNew types
-
FulfillmentHoldobject type was added -
FulfillmentHoldReasonenum was addedNew fields
-
fulfillment_holdsfield was added toFulfillmentOrderobject
Anchor to Metafield definitions ,[object Object]Metafield definitions
Use the GraphQL Admin API to create and manage metafield definitions, which add validation constraints for metafields. You can also use standard metafield definitions, which have specific meanings for common use cases and help merchants manage their data.
New mutations
-
MetafieldDefinitionCreatemutation was added -
MetafieldDefinitionDeletemutation was added -
MetafieldDefinitionPinmutation was added -
MetafieldDefinitionUnpinmutation was added -
MetafieldDefinitionUpdatemutation was added -
MetafieldsSetmutation was added -
StandardMetafieldDefinitionEnablemutation was addedNew types
-
MetafieldDefinitionobject was added -
MetafieldDefinitionTypeobject was added -
MetafieldDefinitionValidationobject was added -
MetafieldDefinitionSupportedValidationobject was added -
StandardMetafieldDefinitionTemplateobject was added -
MetafieldDefinitionInputinput object was added -
MetafieldDefinitionDeleteInputinput object was added -
MetafieldDefinitionUpdateInputinput object was added -
MetafieldDefinitionValidationInputinput object was added -
MetafieldDefinitionPinnedStatusenum was added -
MetafieldDefinitionValidationStatusenum was added -
MetafieldValidationStatusenum was added -
HasMetafieldDefinitionsinterface was added -
MetafieldReferenceunion was added -
MetafieldDefinitionSortKeyssort keys type was addedNew fields
-
definitionfield was added toMetafieldobject -
referencefield was added toMetafieldobject -
ownerfield was added toMetafieldobject
Anchor to Payment methodsPayment methods
Anchor to BreakingBreaking
As of API version 2021-10, you need to implement the new CustomerShopPayAgreement instrument associated with subscription contracts paid using Shop Pay. Use the CustomerShopPayAgreement object and CustomerPaymentInstrument union to store Shop Pay agreements in Shopify that can be used by subscription contracts.
Use the customerPaymentMethodGetUpdateUrl mutation to return a URL that allows a customer to update a specific payment method.
New types
-
CustomerShopPayAgreementobject was added -
CustomerShopPayAgreementobject was added as a possible type onCustomerPaymentInstrumentunionNew mutation
-
customerPaymentMethodGetUpdateUrlmutation was added
Anchor to Payment terms ,[object Object]Payment terms
Use the GraphQL Admin API to set and track payment terms as part of an order or draft order. Payment terms represent the terms and conditions (for example, payment methods and payment schedules) under which a payment should be processed.
New types
-
PaymentTermsobject was added -
PaymentScheduleobject was added -
PaymentTermsTemplateobject was added -
PaymentTermsTypeenum was addedNew mutations
-
paymentTermsCreatemutation was added -
paymentTermsUpdatemutation was added -
paymentTermsDeletemutation was addedNew fields
-
paymentTermsTemplatesfield was added toQueryRootobject -
paymentTermsfield was added toOrderobject -
paymentTermsfield was added toDraftOrderobject -
paymentTermsfield was added toDraftOrderinput objectNew values
-
PAYMENT_TERMS_CREATEvalue was added to enumWebhookSubscriptionTopic -
PAYMENT_TERMS_UPDATEvalue was added to enumWebhookSubscriptionTopic -
PAYMENT_TERMS_DELETEvalue was added to enumWebhookSubscriptionTopic
Anchor to Post-purchase: app identifier,[object Object]Post-purchase: app identifier
Use the GraphQL Admin API to find out whether your app is the post-purchase app in use. For example, you might want to let merchants know that your app isn't the one they have selected and prompt them to select your app on the checkout post-purchase page.
New field
isPostPurchaseAppInUsefield was added toAppobject
Anchor to Post-purchase: subscriptions,[object Object]Post-purchase: subscriptions
Use the GraphQL Admin API to query the SellingPlanGroup and select the appropriate selling plans in a post-purchase subscription offer using the SellingPlanID.
New connection
sellingPlanGroupswas added to objectProductandProductVariant
Anchor to Shopify Payments: refund transactions ,[object Object]Shopify Payments: refund transactions
Use the GraphQL Admin API to query Shopify Payments information related to an order refund. For example, you can retrieve the Acquirer Reference Number (ARN) that's generated for Visa or Mastercard refund transactions.
New type
-
ShopifyPaymentsRefundSetobject was addedNew field
-
refundSetfield was added toShopifyPaymentsTransactionSetobject
Anchor to SMS consent ,[object Object]SMS consent
Use the GraphQL Admin API to retrieve, add, and update a customer's consent to receive marketing material by SMS. You can also subscribe to the CUSTOMERS_MARKETING_CONSENT_UPDATE topic to get notified when a customer updates their SMS marketing consent.
New types
-
CustomerSmsMarketingConsentInputobject type was added -
CustomerSmsMarketingConsentUpdateInputinput object was added -
CustomerConsentCollectedFromobject was added -
CustomerSmsMarketingConsentErrorCodeenum was added -
CustomerSmsMarketingConsentStateenum was added -
CustomerSmsMarketingConsentUpdatePayloadobject was added -
CustomerSmsMarketingStateenum was addedNew mutations
-
CustomerSMSMarketingConsentUpdatemutation was addedNew fields
-
smsMarketingConsentwas added toCustomerInputmutation -
smsMarketingConsentwas added toCustomerobjectNew errors
-
CustomerSmsMarketingConsentErrorerror was addedNew values
-
CUSTOMERS_MARKETING_CONSENT_UPDATEvalue was added to enumWebhookSubscriptionTopic
Anchor to Subscriptions,[object Object]Subscriptions
Subscribe to the SUBSCRIPTION_BILLING_ATTEMPTS_CHALLENGED webhook topic to get notified when a financial institution challenges the subscription billing attempt charge as per 3D Secure. You can also subscribe to SELLING_PLAN_GROUPS webhook topics to get notified when a selling plan group is created, updated, or deleted.
For detailed information about required scopes and payloads, refer to subscriptions-related webhooks and selling plans-related webhooks.
New topics
SUBSCRIPTION_BILLING_ATTEMPTS_CHALLENGEDvalue was added to enumWebhookSubscriptionTopicSELLING_PLAN_GROUPS_CREATEvalue was added to enumWebhookSubscriptionTopicSELLING_PLAN_GROUPS_UPDATEvalue was added to enumWebhookSubscriptionTopicSELLING_PLAN_GROUPS_DELETEvalue was added to enumWebhookSubscriptionTopic
Anchor to Translatable resources types added to the Translation API ,[object Object]Translatable resources types added to the Translation API
Use the GraphQL Admin API to create and retrieve translated content for Shopify resources. You can now retrieve the translations for an online store menu title and the body of a packing slip template.
New values
ONLINE_STORE_MENUvalue was added to enumTranslatable​Resource​TypePACKING_SLIP_TEMPLATEvalue was added to enumTranslatable​Resource​Type
Anchor to GraphQL Storefront API changesGraph QL Storefront API changes
Below are all the changes currently introduced in the 2021-10 version of the GraphQL Storefront API.
Use the Storefront API to interact with a cart during a customer's session. A cart contains the merchandise that a customer intends to purchase, and the estimated cost associated with the cart.
To learn how to create a cart and retrieve it, update cart line items and customer information, and retrieve a checkout URL, refer to Manage a cart with the Storefront API.
New types
-
CartAutomaticDiscountAllocationobject type was added -
CartBuyerIdentityInputinput object was added -
CartBuyerIdentityobject type was added -
CartCodeDiscountAllocationobject type was added -
CartDiscountAllocationinterface type was added -
CartDiscountCodeobject type was added -
CartEstimatedCostobject type was added -
CartInputinput object was added -
CartLineEstimatedCostobject type was added -
CartLineInputinput object was added -
CartLineUpdateInputinput object was added -
CartLineobject was added -
CartUserErrorwas added -
Cartobject type was added -
Merchandiseunion type was addedNew mutations
-
CartAttributesUpdatemutation was added -
CartBuyerIdentityUpdatemutation was added -
CartCreatemutation was added -
CartDiscountCodesUpdatemutation was added -
CartLinesAddmutation was added -
CartLinesRemovemutation was added -
CartLinesUpdatemutation was added -
CartNoteUpdatemutation was added
Anchor to Online store ,[object Object]Online store
Use QueryRoot to fetch a specific blog, collection, page, or product by its unique attributes. You can also use the OnlineStorePublishable interface type to access resources that can be published to the Online Store sales channel (Article, Blog, Collection, Page, and Product).
New fields
-
blogfield was added toQueryRootobject -
collectionfield was added toQueryRootobject -
pagefield was added toQueryRootobject -
productfield was added toQueryRootobjectNew types
-
Articleobject was added toOnlineStorePublishableinterface type -
Blogobject was added toOnlineStorePublishableinterface type -
Collectionobject was added toOnlineStorePublishableinterface type -
Pageobject was added toOnlineStorePublishableinterface type -
Productobject was added toOnlineStorePublishableinterface type
Anchor to REST Admin API changesREST Admin API changes
Below are all the changes currently introduced in the 2021-10 version of the REST Admin API.
Anchor to Bulk operations ,[object Object]Bulk operations
Subscribe to the bulk_operations/finish webhook topic to be notified when a bulk operation has completed, failed, or been cancelled.
New topics
bulk_operations/finishtopic was added to Webhook resource
Anchor to Fulfillment: fulfillment line item ID,[object Object]Fulfillment: fulfillment line item ID
Use the REST Admin API to retrieve the fulfillment line item ID associated with a fulfillment. A fulfillment line item represents the quantity of items from an order line item that are included in the fulfillment.
New property
fulfillment_line_item_idproperty was added toFulfillmentresource
Anchor to Fulfillment orders: location address ,[object Object]Fulfillment orders: location address
Use the REST Admin API to request the address of the location where an order was fulfilled.
New property
origin_addressproperty was added toFulfillmentresource
Anchor to Manual fulfillment holds ,[object Object]Manual fulfillment holds
Use the REST Admin API to manually create a fulfillment hold when an order isn't ready for fulfillment immediately. For example, you could create a fulfillment hold if one of the items is backordered, or if an item was preordered before the item's release date.
New property
fulfillment_holdsproperty was added toFulfillmentOrderresource
Anchor to Payment terms ,[object Object]Payment terms
Use the Order and Draft Order resources to retrieve payment terms as part of an order or draft order. Payment terms represent the terms and conditions (for example, payment methods and payment schedules) under which a payment should be processed.
New properties
-
payment_termsproperty was added to/admin/api/2021-10/draft_orders.json -
payment_termsproperty was added to/admin/api/2021-10/orders.jsonNew topics
-
payment_terms/createtopic was added to Webhook resource -
payment_terms/updatetopic was added to Webhook resource -
payment_terms/deletetopic was added to Webhook resource
Anchor to SMS consent ,[object Object]SMS consent
Use the Checkout and Abandoned checkouts resources to retrieve whether a customer consents to receive marketing material by SMS and the phone number to which material is sent.
Use the Customer resource to retrieve, add, and update a customer's consent to receive marketing material by SMS.
Subscribe to the customers_marketing_consent/update topic to get notified when a customer updates their SMS marketing consent.
New properties
-
buyer_accepts_sms_marketingproperty was added toCheckoutandAbandoned checkoutsresources -
sms_marketing_phoneproperty was added toCheckoutandAbandoned checkoutsresources -
sms_marketing_consentproperty was added toCustomerresourceNew topics
-
customers_marketing_consent/updatetopic was added to Webhook resource
Anchor to Shopify Payments: refund transactions ,[object Object]Shopify Payments: refund transactions
Use the REST Admin API to query Shopify Payments information related to an order refund. For example, you can retrieve the Acquirer Reference Number (ARN) that's generated for Visa or Mastercard refund transactions.
New property
payments_refund_attributesproperty was added toTransactionresource
Anchor to Subscriptions,[object Object]Subscriptions
Subscribe to the subscription_billing_attempts/challenged webhook topic to get notified when a financial institution challenges the subscription billing attempt charge as per 3D Secure. You can also subscribe to selling_plan_groups webhook topics to get notified when a selling plan group is created, updated, or deleted.
For detailed information about required scopes and payloads, refer to subscription-related webhooks and selling plans-related webhooks.
New topics
selling_plan_groups/createtopic was added to Webhook resourceselling_plan_groups/updatetopic was added to Webhook resourceselling_plan_groups/deletetopic was added to Webhook resourcesubscription_billing_attempts/challengedtopic was added to Webhook resource
Anchor to User permissionsUser permissions
Anchor to BreakingBreaking
As of API version 2021-10, the full permission is no longer a potential value of the permissions property on the REST User resource. This update follows the change to API version 2021-07, which returned a complete list of explicit permissions for a user.
Removed values
fullvalue was removed frompermissionsproperty