Developer changelog
Subscribe to the changelog to stay up to date on recent changes to Shopify’s APIs and other developer products, as well as preview upcoming features and beta releases.
Filter by tag:
These are the most recent changes to Shopify’s developer platform.
There are no entries for your filter criteria.
February 03, 2023
Transaction in Admin REST API will now return the Total Unsettled Set amount API
As of version 2023-04 of the Admin REST API, requests for Transaction will now return total_unsettled_set
. This represents the remaining amount to be captured on the transaction. total_unsettled_set
is returned in both shop
and presentment
money objects with currency.
If you are leveraging manual capture and the authorized amount from Transaction, you should switch to referencing total_unsettled_set
. The authorized amount can differ from the total amount to capture due to adjustments during order finalization such as tax adjustments.
January 27, 2023
Predictive search now returns query suggestions API
As of January 23, 2023, a new resource type for query suggestions has been added to the Predictive Search API.
Notably, several other improvements have been made to the Predictive Search API:
- Resources[type] is now optional with a default set to queries, products, collections and pages
- Performance improvements when requesting multiple resource types
- New parameter: limit_scope to decide whether the limit parameter applies to the total number of returned results, or the total that each resource type returns.
Learn more about query suggestions on Shopify.dev.
January 26, 2023
Introducing intelligent code completion for Liquid API
We've added intelligent code completion features in Theme Check so that you can speedup writing Liquid code.
You can easily explore Liquid attributes as you type and benefit from type inferences, smart filters and scope awareness. With in-line documentation, you can check the most updated version of our documentation for objects, attributes, filters, and tags.
To start using, install Theme Check
January 26, 2023
Shopify Functions adds support for variables in input queries API
Shopify Functions now support the use of variables in input queries, so that you can use merchant input for GraphQL field arguments.
Learn more about input query variables on Shopify.dev.
January 25, 2023
New color settings in themes Themes
Empower your merchants to easily customize their online store with intuitive new color scheme settings. Online store color schemes are now available in developer preview.
You can define the structure of a color scheme in settings_schema.json
and set values for each color scheme in settings_data.json
. You can then reference the color schemes in the settings of a given section or block.
ColorSchemesDrop
provides access to the colors schemes and color values in each scheme. You can define your CSS by iterating over the new drop. This way, merchants no longer need to edit their CSS or liquid file to add or remove color schemes.
Learn more about color scheme and color schemes settings.
January 25, 2023
Cart Mutations return a new cart on FailedToRetrieveCart error API
In order to make the Cart SFAPI experience more seamless, we're rolling out changes to Cart Update mutations so they return a new, valid Cart even if the provided token is no longer valid. If a Cart is found for the provided token, the mutations will work the way they always have. That way you get back a a valid, updated Cart in your response, no matter what.
These mutations will return a new, empty cart:
cartLinesRemove
cartLinesUpdate
cartSelectedDeliveryOptionsUpdate
The following mutations will update the new cart with the requested input:
cartAttributesUpdate
cartBuyerIdentityUpdate
cartDiscountCodesUpdate
cartLinesAdd
cartNoteUpdate
To take advantage of this, use the new Cart ID from the returned Cart when you receive the FailedToRetrieveCart
error code in your response. Please note that the new cart is not a copy of the cart whose token was invalid.
January 23, 2023
Add inventoryItemId on FulfillmentOrderLineItem Resource API
As of Admin Graphql API version 2023-04, you can now get inventoryItemId
on the FulfillmentOrderLineItem
resource.
January 19, 2023
Private apps are automatically converting to custom apps Platform
From January 19th to January 20th, 2023, all private apps will be automatically converted to custom apps managed through the Shopify admin.
Custom apps support all the functionality that private apps did, and provide better security.
Learn more about the different types of app you can build.
January 06, 2023
Action required
We are introducing sections
liquid tag and section groups
Themes
You can now create section groups in your theme’s layout. Section groups are JSON containers that allow merchants to add, remove, and reorder sections in areas of the layout file such as the header and footer.
To include a section group in a layout file, add the section group to the sections directory of your theme, then add a {% sections '<filename>' %}
Liquid tag that references your new sections file to the layout file where you want it to be rendered.
To learn more, refer to section groups.
January 06, 2023
Introducing new enabled_on
/ disabled_on
section schema attributes (deprecating templates
)
Themes
You can now use the new enabled_on
/ disabled_on
section schema attributes to specify where a section can be used. These new attributes replace the existing templates
attribute and work for both templates and section groups.
- Use the
enabled_on
attribute to limit a section to specific templates and section groups. - Use the
disabled_on
attribute to prevent a section from being used in specific templates and section groups.
Please keep in mind that you can use only one of enabled_on
or disabled_on
.
January 04, 2023
Delivery and Payment Customizations are now available in Developer Preview API
The Functions APIs for delivery customizations and payment customizations are now available in a developer preview.
With these new APIs, you can hide, reorder, or rename payment and delivery options to help merchants increase conversions and stand out from the competition.
Learn more about building with delivery and payment Functions in our dev docs: Delivery Customization Payment Customization
January 04, 2023
Return request actions available to merchants in the admin API
We've just released enhancements that allow merchants to approve or decline return requests in their admin for partners using the returnRequest mutation.
This changelog post announced new ways for managing returns via the GraphQL Admin API, including the ability to approve or decline a return automatically.
Partners can now choose to automate this behavior or allow merchants to take action themselves.
January 03, 2023
Sort orders by destination API
GraphQL Admin API 2023-04 introduces support for sorting orders by destination, based on the order's shipping address.
Orders will be sorted first by country, then zone (e.g. state or province), then city.
January 02, 2023
New ways to manage returns with the GraphQL Admin API API
Returns apps can now use the stable version of the GraphQL Admin API to give merchants greater visibility into critical returns data across platforms, and help them manage orders more efficiently.
Returns apps can automate the return management process by taking actions on behalf of merchants. These actions can include the following:
- Creating and canceling returns
- Approving or declining return requests
- Managing reverse fulfillment orders and deliveries, including creating a reverse delivery with shipping information, and disposing or restocking items
- Issuing refunds
- Closing and reopening returns
We’ve also added new webhooks that your app can use to listen for events related to returns, refunds, reverse fulfillment orders, and reverse deliveries.
Learn more about returns management workflows on Shopify.dev.
January 01, 2023
Updated MetafieldsSetInput.type to be nullable for metafieldsSet mutation API
As part of the 2023-01 GraphQL Admin API release, we've updated the metafieldsSet
API to make the MetafieldsSetInput.type
field nullable. When the metafield you are trying to mutate already has corresponding metafield definitions, you can simplify the mutation by omitting the type
field from its arguments. The type
field is still required when the metafield doesn't have a corresponding definition to the given ownerId
, namespace
and key
.
For more information, refer to the metafieldsSet mutation.
January 01, 2023
New field tag
added to the ProductFilter object
API
You can now use the Storefront API to filter products by tags if tags are enabled as a filter setting on the shop.
The tag
field has been added to the Storefront API's ProductFilter
object, for this purpose.
January 01, 2023
Storefront API Metaobject
queries
API
With GraphQL Storefront API version 2023-01, you can use Metaobject
queries to display custom content that's associated with resources like products, customers, and orders. Metaobjects created with the CONTENT
category with an Active
status are available through Metaobject
queries.
This change is related to the GraphQL Admin API's support for content management and metaobjects.
January 01, 2023
Selling Plan Group Limit Increase API
As of 2023-01, Selling Plan Groups will have their limit on the number of associated Selling Plans increased from 20 to 31. We recommend paginating all queries on a Selling Plan Group's Selling Plans, rather than relying on this fixed limit.
To learn more about Selling Plan Groups, refer to the purchase options documentation.
January 01, 2023
Add near parameter to StoreAvailability - Storefront API API
You can now use the near parameter to search StoreAvailability by proximity, via Storefront API.
The type is GeoCoordinateInput, so far also used as parameter for Locations.
January 01, 2023
Action required
metafieldsSet
is now Atomic
API
As of 2023-01, the metafieldsSet
mutation is atomic and will not persist changes if any errors are encountered.
January 01, 2023
Duplicate and Delete Product Asynchronously with GraphQL Admin API API
As of GraphQL Admin API version 2023-01
, we are adding mutations productDuplicateAsync and productDeleteAsync. This will allow you to asynchronously duplicate and delete products that have a high number of variants that are stocked at several locations. This is because the mutations productDuplicate and productDelete may time out for these larger products.
Learn more about the mutations at productDuplicateAsync and productDeleteAsync.
January 01, 2023
New field EditedAt
is added to CheckoutProfile object
API
As of 2023-01, you can use the EditedAt
to see when checkout profile has been edited. Checkout profiles are sorted by EditedAt
field instead of updatedAt
.UpdatedAt
field may be deprecated in the future.
January 01, 2023
New And Updated Fulfillment Order Webhooks API
As of the Admin API 2023-01 release candidate, fulfillment service and order management apps can subscribe to webhooks notifications related to fulfillment orders and events relating to them.
Learn more about fulfillment order webhooks at Shopify.dev.
January 01, 2023
Moving the Shop.fulfillmentOrders connection to QueryRoot API
As of the 2023-01 release of the admin GraphQL, you can access fulfillment orders from QueryRoot.fulfillmentOrders
in addition to the pre-existing Shop.fulfillmentOrders
connection.
This change will also include the deprecation of the Shop.fulfillmentOrders
query in favour of the newly added QueryRoot.fulfillmentOrders
This change aligns with direction of the admin API moving forward ensuring that domain primitives are available on QueryRoot
and the Shop
field is reserved for key information related to the shop in the scope of the request.
You can learn more about fulfillment orders here
January 01, 2023
Release of the fulfillmentOrdersReleaseHolds Mutation API
As of the 2023-01, you can use the fulfillmentOrdersReleaseHolds
mutation to release holds on multiple fulfillment orders in a single request.
This will allow developers to reduce the number of individual requests used to complete bulk fulfillment actions with their apps.
For more details on the fulfillmentOrdersReleaseHolds
mutation see here.
January 01, 2023
Shop Resource Feedback with GraphQL Admin API API
GraphQL Admin API 2023-01 introduces support for creation of shop resource feedback.
You can now use shopResourceFeedbackCreate
mutation to create resource feedback on a shop to let merchant know what steps they need to take to make sure that your app is set up correctly.
For more information, refer to https://shopify.dev/api/admin-graphql/unstable/mutations/shopResourceFeedbackCreate.
January 01, 2023
New FulfillmentOrderLineItemsPreparedForPickup GraphQL Mutation Released API
As of the 2023-01 release candidate in the Admin API, you can use the GraphQL FulfillmentOrderLineItemsPreparedForPickup
mutation to mark line items associated with a fulfillment order as being ready for pickup by a customer.
Learn more about FulfillmentOrderLineItemsPreparedForPickup mutation on Shopify.dev.
January 01, 2023
New argument to update shipping package API
As of 2023-01 in GraphQL Admin API stable version, you can use shippingPackage
as a required argument in shippingPackageUpdate
mutation.
shippingPackage
is a set of attributes that describes a shipping package, including: weight
, dimensions
, name
, default
and type
.
Learn more about shippingPackageUpdate.
January 01, 2023
Action required
Removal of SMS Templates as translatable resources API
As part of GraphQL Admin API version 2023-01
, we are removing SMS Templates as a translatable resource.
This means the SMS_TEMPLATE
value will be removed from the TranslatableResourceType
enum and the following GraphQL endpoints will stop accepting SMS Template IDs:
January 01, 2023
Action required
Update: Carrier Service API Access for Stores on Starter and Basic Plans API
As of January 1, 2023 stores on Starter and Basic plans (globally), will no longer be able to request access to the Carrier Service API. The option to request access by transitioning to annual billing or by paying an additional monthly fee for these plan types will be removed.
Stores on Advanced and Shopify Plus plans will continue to have access to Carrier Service API. Stores on Shopify plans can continue to request access by contacting Shopify Support. Stores on Starter or Basic plans that were previously granted access are not impacted by this change.
Learn more about CarrierService access requirements on Shopify.dev.
January 01, 2023
New credit card fields added to Transaction's payment details API
As of the 2023-01 release candidate in the Admin API, new fields are available under the REST Transaction payment_details
property, and the GraphQL OrderTransaction includes a new payment_details
property.
New fields added to REST Transaction payment_details
-
credit_card_name
: The holder of the credit card. -
credit_card_wallet
: The wallet type where this credit card was retrieved from. -
credit_card_expiration_month
: The month in which the credit card expires. -
credit_card_expiration_year
: The year in which the credit card expires.
Learn more about the REST Transaction resource on Shopify.dev.
New paymentDetails
property added to GraphQL OrderTransaction
A new field, payment_details
, is available under the GraphQL OrderTransaction resource. The type of this field is PaymentDetails
, a new union type. Only one type is available at the moment, CardPaymentDetails
, which defines the following properties:
-
avsResultCode
: The response code from the address verification system (AVS). -
bin
: The issuer identification number (IIN), formerly known as bank identification number (BIN) of the customer's credit card. -
company
: The name of the company that issued the customer's credit card. -
cvvResultCode
: The response code from the credit card company indicating whether the customer entered the card security code, or card verification value, correctly. -
expirationMonth
: The month in which the credit card expires. -
expirationYear
: The year in which the credit card expires. -
name
: The holder of the credit card. -
number
: The customer's credit card number, with most of the leading digits redacted. -
wallet
: Digital wallet used for the payment.
Learn more about the GraphQL OrderTransaction resource on Shopify.dev.
January 01, 2023
Deprecate FulfillmentOrderLineItem.lineItem field API
As of API version 2023-01, the lineItem
field on the FulfillmentOrderLineItem
resource has been deprecated. The order line item associated with a FulfillmentOrderLineItem
shouldn't be used to determine what to fulfill.
Use the FulfillmentOrderLineItem
and FulfillmentOrder
objects instead. An order LineItem
represents a single line item on an order, but it doesn't represent what should be fulfilled.
January 01, 2023
Metafields and BulkOperation now available for B2B API
As of GraphQL Admin API version 2023-01, metafields are being added to the Company
and CompanyLocation
primitives for B2B. Additionally, a subset of mutations are now available for use asynchronous usage via BulkOperation.
Learn more about B2B on Shopify.dev.
January 01, 2023
Simplified Metafield Querying API
As of the 2023-01 Admin API release, you can optionally supply the key
argument to metafield queries on resources in the format of namespace.key
to simplify your queries on the metafield
field. You will also be able to optionally supply the keys
argument to the metafields
connection as a list of strings in the same format. The key returned will also be in the format of namespace.key
.
January 01, 2023
B2B Order Import REST API API
As of 2023-01, Merchants with B2B enabled on their stores can import Orders in a B2B context using the REST API.
Learn more about B2B order imports on Shopify.dev.
January 01, 2023
Removal of the error code INVALID
from LocationDeactivateErrorCode
API
As of GraphQL Admin API version 2023-01
, we are removing the error code INVALID
from LocationDeactivateUserError
as we never return this error code when using the mutation locationDeactivate
to deactivate a location.
If you are explicitly checking for this error code, you should remove references to it.
Learn more about { Location deactivate user error codes } on Shopify.dev.
January 01, 2023
Action required
Serving errors on a fulfillment orders opt-out fulfillment service creation and modification API
As of 2022-07 API version, it's mandatory for a fulfillment service to follow a fulfillment order based workflow and have fulfillment_orders_opt_in
set to true
in FulfillmentService
resource. The last API version serving the legacy fulfillment APIs is 2022-04.
With 2023-01 release, we add observability to the migration process.
Errors will be returned if a legacy (fulfillment orders opt-out) fulfillment service is intended to be created on an API version, where the legacy fulfillment APIs are not available.
Errors will be returned on fulfillment service create REST and GraphQL API calls if fulfillment_orders_opt_in
field is not set into true
in the parameters.
Errors will be returned on fulfillment service update REST and GraphQL API calls if the fulfillment service being changed has fulfillment_orders_opt_in
set to false
and the update request does not promote fulfillment_orders_opt_in
into true
. fulfillment_orders_opt_in
and callback_url
become required parameters for fulfillment service create request/mutation.
Follow Migrate to fulfillment orders guide to learn how to migrate. Follow Manage fulfillments as a fulfillment service app guide to learn how to fulfill fulfillment orders.
January 01, 2023
Shop "Contact Information" policy API
As of Admin API 2023-01, Shop Policy now supports the "Contact Information" policy. This policy is intended to allow users to add regulatory information like VAT and Trade number.
January 01, 2023
ShopifyQL API is now available for Developers API
As of Admin API version 2023-01, you can use the shopifyqlQuery API to query analytical data from merchant stores to create reporting apps that provide business insights for merchants on the Plus plan.
We are removing the unstable sales
dataset as a part of this stable channel release.
Learn more about ShopifyQL on Shopify.dev.
January 01, 2023
New webhook topic for when a PaymentSchedule
is due
API
As of Admin API 2023-01, you can subscribe to the new PAYMENT_SCHEDULES_DUE
webhook topic to be notified of when a PaymentSchedule.due_at
date is reached.
Learn more about the PAYMENT_SCHEDULES_DUE
topic on Shopify.dev.
January 01, 2023
Action required
Asynchronous queries in Segmentation API API
Starting in January 2023, on the 2023-01 API release, some queries could be processed and returned asynchronously based on complexity and the amount of shop data. Most queries will continue to be evaluated synchronously. This breaking change allows you to build the best possible user experience as we introduce more complex filters in Segmentation. Async queries should revolve within 5 seconds but some queries might take up to 1-2 minutes or even longer.
To get up to date, make sure you are handling responses returning an error code because the query must be processed asynchronously. You can follow our migration guide.
Learn more about building for asynchronous queries in our developer documentation or visit our API forum for questions.
January 01, 2023
Delivery Settings support for more locations API
As of 2023-01 in GraphQL Admin API stable version, we’ve introduced a few changes that will improve managing delivery settings for merchants with a high number of locations.
Delivery Profile mutation changes
We’ve added a new and more efficient way of managing locations associated with groups within a delivery profile. Instead of using the locations field (which always requires the full list of locations to have in a location group), you can now use the locationsToAdd and locationsToRemove fields to specify exactly the locations you want to adjust from a group.
Delivery Profile query changes
We’ve added a new argument locationGroupId
to profileLocationGroups field. You can use this to query a specific location group and fetch its paginated locations more efficiently.
We’ve added a new field unassignedLocationsPaginated. You can use this field to query locations that are not assigned to a delivery profile in a more efficient way.
We’ve added a new field locationsCount to the DeliveryLocationGroup object.
Local Pickup settings
Local Pickup API introduced in the 2022-10 release is now part of the stable version.
Documentation changes
In addition to the changes above, we’ve also updated documentation for DeliveryProfileInput and DeliveryProfileLocationGroupInput in which we raise awareness regarding performance considerations and input array limits. This also includes examples for the deliveryProfileCreate and deliveryProfileUpdate mutations, where we show how to manage profiles in a more efficient way, using changes introduced in this version.
January 01, 2023
External Ids for Fulfillment Order Holds API
As of 2023-01, you can tag fulfillment order holds with an external ID.
This can be used to track states within your own application on why a fulfillment order has been placed on hold and when it needs to be released. This can be done by utilizing the new FulfillmentOrderHoldInput.externalId
field argument described here.
To learn more about the fulfillment order API see the fulfillment order object documentation
January 01, 2023
Access Controls for App Metafields API
As of the 2023-01 Admin API release, you can optionally specify an access
setting when you create or update metafield definitions via the API. This new setting will allow you to control who else can access the metafields under your definition via the Admin API.
Note that this setting can only be set when the definition is in your own reserved namespace.
Possible settings you can use are PRIVATE
(no one else can access the metafields), MERCHANT_READ
(the merchant has read-only access to the metafields via the admin UI), and MERCHANT_READ_WRITE
(the merchant can view and edit the metafields via the admin UI).
Learn more about reserved namespaces.
Learn more about access controls.
January 01, 2023
Shop.billingAddress
uses new type, deprecates name fields
API
As of 2023-01, the Shop.billingAddress
field uses a new ShopAddress
type instead of the customer-centric MailingAddress
type.
Since Shop.billingAddress
never returns non-null first or last names, these fields have been marked as deprecated on the new ShopAddress
type. You should stop requesting those fields as they will be removed in a later version.
January 01, 2023
Inventory States APIs API
As of Admin API 2023-01, there are new mutations that allow you to alter the inventory quantities at a location. State quantities reserved and on_hand are adjustable through the API. In addition, there are queries to retrieve quantities for every state.
Details about these new endpoints are in the Inventory management apps section of the developer docs.
January 01, 2023
DraftOrder
and Order
fields added to the PaymentTerms
GraphQL object
API
As of GraphQL Admin API 2023-01, you can load the associated Order
or DraftOrder
object when querying for a PaymentTerms
object.
Until now you could only go from Order
or DraftOrder
to PaymentTerms
that relationship is now available in both directions.
Learn more about these new fields on Shopify.dev.
January 01, 2023
PaymentTerms
field added to the PaymentSchedule
GraphQL object
API
As of GraphQL Admin API 2023-01, you can load the associated PaymentTerms
object when querying for a PaymentSchedule
object.
Until now you could only go from PaymentTerms
to PaymentSchedule
, that relationship is now available in both directions.
Learn more about the new field on Shopify.dev.
January 01, 2023
Send payment reminders via email to customers with the paymentReminderSend
endpoint
API
As of GraphQL Admin API 2023-01, you can use the paymentReminderSend
mutation to send payment reminder emails to customers.
Learn more about sending payment reminders on Shopify.dev.
January 01, 2023
Create custom objects with the new Metaobjects API API
As of 2023-01, we're introducing a new Admin API to allow you to create custom data structures called Metaobjects.
Similar to metafields, which enable custom fields to be associated with core resources in Shopify, Metaobjects provide a way to create and associate entirely new data models. The API enables you to do the following:
- Define objects with granular access control on how merchants and apps can interact with them.
- Create entries of custom defined objects and make them publishable to storefronts.
January 01, 2023
Add Purchasing Company to the Cart's Buyer Identity in Shopify Functions for B2B API
As of Shopify Functions API 2023-01, you can use the purchasing company as buyer identity in a B2B context to customize B2B checkout.
January 01, 2023
Creating Fulfillment Events with GraphQL API
As of API version 2023-01, you can create fulfillment events using the GraphQL mutation fulfillmentEventCreate
which was previously only accessible via the REST API.
December 19, 2022
Release of Re-engagement API for use with marketing automations API
As of GraphQL Admin API 2023-01, we are giving apps the capability for Apps to integrate into our Re-engagement marketing automation.
You will now be able to integrate Marketing Automation Flow Actions inside our Re-engagement marketing automation workflows. These are "Browse", "Cart", as well as "Checkout" abandonment automations. Here is the link for more detail about the re-engagement suite for marketing automations.
December 14, 2022
Quickly format your code with the Liquid prettier plugin Tools
As of today, you can format your code instantly with our Liquid prettier plugin (1.0.0) for consistent code styles so you can avoid discussing styles and focus on what matters. Available both in-admin and locally in your favorite code editor.
Learn more about the Liquid Prettier Plugin on Shopify.dev.
December 13, 2022
We’re making it easier for app developers to test webhook topics, and streamlining webhook failure emails API
You’ll now be able to trigger a webhook test payload to a specified destination directly from the CLI. Previously, developers needed to create a dev store and manually click around with an app installed in order to test their app logic. This manual process added significant time and friction to the development loop. With this new feature, it’ll be easy to test your subscriptions for each topic, so you can see what the payload will look like before your app is in production.
We’re also reducing the number of emails sent each time a webhook delivery fails. Previously, there was one email sent per attempt - which could quickly add up and become ineffective for monitoring. Now only one email will be sent for each one per consecutive string of failed attempts, over a two-day period, in order to keep your inbox clean and actionable.
To learn more about testing webhooks, check out the Shopify CLI command reference. If you have any questions about these changes, contact Partner Support with any questions.
December 09, 2022
Recent update to the App Design Guidelines Shopify App Store
The Voice and tone section of the App Design Guidelines has been shortened, with a new link to the complete Polaris documentation for voice and tone.
December 09, 2022
Adding webhooks to the Subscription Billing Cycles API API
As of GraphQL Admin API version 2023-01, you can use webhooks with subscription billing cycles API.
We introduced subscription_billing_cycle_edits_create
, subscription_billing_cycle_delete
and subscription_billing_cycle_edits_update
to WebhookSubscriptionTopic
.
We also added some new error codes to SubscriptionBillingAttemptUserError
and SubscriptionBillingCycleUserError
.
Learn more about the Subscription Billing Cycles API on Shopify.dev.
December 08, 2022
Online store media localizable to different languages & markets API
The Localization API now supports online store media as a localizable resource. Metafield file references and "image" type theme sections can now be translated and localized to different markets using the translationsRegister
mutation.
Note: media localization is currently only supported for theme sections & metafield file references. Product media localization is not yet supported.
December 06, 2022
Plus merchants can now start building with Shopify Functions API
Starting today, Shopify Functions are available to Shopify Plus brands who are not leveraging a checkout.liquid
customization. This means that Plus merchants can start building their own product or order discount Functions and deploy them with a custom app.
Please note that the rollout to eligible Plus shops will take a couple of weeks to complete. Plus brands that leverage a checkout.liquid
customization are not eligible to use Functions at this point in time.
Learn more about Shopify Functions here.
December 06, 2022
Action required
Payment properties deprecation on the Admin API Order resource API
The following properties on the REST and GraphQL Admin API's Order resource, including webhooks, are deprecated:
gateway
payment_details
processing_method
These properties are available on the corresponding Transaction
resources.
These deprecated properties will be removed from unstable in January 2023. The change will be made official in the 2023-04 Admin API version.
December 06, 2022
Updates to the Shopify App Store Shopify App Store
On December 6, we released new designs that make it easier for developers to showcase the value of their apps and for merchants to discover the right apps for their businesses, including:
- Optimized app listing
- Personalized home page
- Educational category pages
- New story pages
We will continue to build in public, with new features rolling out over the upcoming weeks.
December 02, 2022
Action required
Add Due on fulfillment to payment terms type API
As of the Admin API 2023-01 release candidate, Due on Fulfillment is now a Payment Terms type available to all 3rd party apps.
With this change, apps can create and update orders and draft orders with payment terms whose due date will be set upon fulfillment of the order. The newly added FULFILLMENT
type value can be found on the PaymentTermsType ENUM object.
December 01, 2022
Updates to displaying accelerated checkout buttons Themes
Accelerated checkout buttons will now always appear in checkout even if customers have previously seen them in cart. This change will gradually roll out to eligible shops over the next two weeks.
To learn more, refer to accelerated checkout buttons.
December 01, 2022
The partner dashboard now includes clear steps to earn achievements that drive merchant installs Shopify App Store
This spring, we added app highlights to app store listings to help merchants find high quality apps and make better informed decisions. These highlights show tested indicators of merchant success, including its impact to storefront performance, how it works with other Shopify features, and integration with Admin.
Starting December 1, we’re providing visibility into how to achieve these highlights within the Distribution section of the Partner Dashboard. Initial data shows that app highlights are a major factor for merchant exploration and installation.
November 30, 2022
Rename authorV2 and enable author as nullable API
As of 2023-01, the authorV2
field is being removed from the Storefront API. It was previously used to reference nullable author scenarios. As a result, the following changes are being made:
-
authorV2
will now be deprecated. -
author
will be used instead, and will now be a nullable field.
These changes will help improve consistency of the API and avoid confusion when using these fields.
November 30, 2022
Governorates now available for Kuwait shipping zones Platform
Merchants based in Kuwait can now add governorates to their shipping zones.
As a result, merchants in this region can give their customers the opportunity to provide more accurate address information at checkout as well as set up more specific shipping zones for the governorates that they add.
November 18, 2022
We've updated how we calculate the 'Speed Tested' app highlight Shopify App Store
The 'Speed Tested' app highlight in the app store has been adjusted as of November 17th to better reflect your app's current performance, as well as impact on checkout experience.
We continue to measure how apps affect store performance using Google Lighthouse, but we now focus on your app's affect from recent installations, as opposed to all historical installations. This change gives merchants more accurate info about which apps perform quickly on their stores. As developers improve their app's performance, those improvements will be reflected more quickly in the app highlights.
For a shipping app to be eligible to receive the 'Speed Tested' app highlight, we will now consider its response time and error rate for shipping rate requests. Because there is some variability in performance between checkouts, we will only feature apps with a sufficient number of installs and requests in order to ensure a stable measurement.
November 09, 2022
Action required
CLI 2.0 to be sunset on May 31, 2023 Tools
With the latest addition of theme support to Shopify CLI 3.x, Shopify CLI 2.x has been scheduled to sunset on May 31, 2023. Learn more about how to migrate over to Shopify CLI 3.x here.
Note that app and extension creation will sunset a month earlier on April 28, 2023.
November 08, 2022
Shopify Scripts now available on Storefront API Cart API
You can now use Line Item Shopify Scripts with the Storefront API Cart to create discounts that are applied to a cart and reflected in the API response.
November 07, 2022
Recent updates to the App Design Guidelines Shopify App Store
The App Design Guidelines have been updated to improve clarity on high quality app experiences.
In the app navigation section, it is now mandatory to use App Bridge’s Navigation Menu to integrate with the Shopify admin navigation experience if your app has different sections.
The existing requirement in the responsive grid section that apps must have responsive layouts for all device sizes has been moved to a callout card to make it more noticeable.
The wording of one callout card in the single-column layout section has been updated to make it clear that tables should only use the full width page if they have enough columns to require the extra space. Otherwise, they should use normal width pages.
November 01, 2022
Developers can now choose their own app store categories Shopify App Store
Starting November 1, 2022, you can self-categorize your app once using the app submission form in the Partner Dashboard. Categories can be chosen by selecting up to two tags from our updated app categories that best describe the main function of your app. You can later appeal to change your app’s categorization if its capabilities change.
Learn more on Shopify.dev.
October 27, 2022
Shopify Functions begins rollout to developers and merchants API
Shopify Functions are available for developers to start customizing the backend logic of discounts. All non Shopify Plus merchants are able to install your apps today. Shopify Functions are not yet available to Shopify Plus merchants. We will provide an update when Functions become generally available to Plus brands.
Discount the entire cart with order discounts applying a fixed amount of percentage off.
Discount specific products with product discounts applying a fixed amount or percentage off.
Learn more about Shopify Functions on Shopify.dev
October 27, 2022
Subscription Shipping Rate Name to Use Actual Rate Name Platform
Merchants can create selling plan specific shipping rates (for subscriptions) and have those names from those rates surface in checkout.
We've added new functionality to replace the default subscription rate names (ie. "subscription shipping", "subscription pickup", "subscription local") to now expose the merchant defined rate names during checkout, admin order and in the email notification. If merchants do not create selling plan specific shipping rates then the general rate name will be surfaced in checkout.
October 26, 2022
Automatic GIF conversion to animated WebP Platform
We've implemented an automatic GIF to animated WebP conversion process in our image processing pipeline, which improves performance by reducing delivered bytes by up to 50%.
For more information, please visit Shopify Help Center .
October 26, 2022
Migrating theme commands over to CLI 3.0 Tools
Support for themes has been added to Shopify CLI 3.20. In addition to migrating over theme commands, Shopify CLI 3.20 now includes the ability to integrate Shopify CLI into your CI/CD pipeline to perform actions like pushing, pulling and publishing a theme. Most theme commands on Shopify CLI 3.20 will continue to work the same with the exception of a few differences outlined here. More information on using Shopify CLI in a CI/CD pipeline can be found here.
October 17, 2022
Action required
Subscriptions shippingOptions deprecated by deliveryOptions API
In the API version 2022-10
, we included the expanded support of new delivery options for Subscriptions: Local Delivery and Pickup.
As of API version 2023-01
, we are deprecating the old shippingOptions
field of SubscriptionDraft
in favor of the new deliveryOptions
field which supports Local Delivery and Pickup.
Learn more about deliveryOptions
on Shopify.dev - SubscriptionDraft.
October 14, 2022
Introducing the Video Setting Themes
We've added the video setting. You can use the video setting to surface videos uploaded to the Files Page in your theme.
October 14, 2022
Reconcile payments made using third party providers with Payment ID API
As of 2023-01 a unique ID is sent by Shopify to payment providers when a customer pays at checkout. Use this ID to match order information between Shopify and your payment provider. An order can have more than one Payment ID. It only includes successful or pending payments. It does not include captures and refunds.
Steps: 1. From your Shopify admin, go to Orders. 2. Search using the custom term payment_id: and the payment ID value. For example payment_id:xxx. 3. Alternatively, you can search using the payment_id directly, without any explicit filters. 4. Click the order.
October 12, 2022
Action required
Deprecating custom and standardized product type in favor of product category; will be used for sales tax purposes API
We’ve added a new productCategory
field to the Product
object. The product category specifies a category in the Shopify Product Taxonomy.
We’re deprecating several fields:
- The standardizedProductType
field is deprecated in favor of productCategory
.
- The customProductType
field is deprecated in favor of productType
.
Previously, the product category data was not powering any platform features. Now, the product category will be used to determine the rate at which a product is taxed in the US. In the future, it will apply to how products are taxed in other regions/markets.
For more information, refer to the Product
object or learn more about Product Tax Codes here
October 11, 2022
Action required
Cookie policy update and new Cookies added Shopify App Store
The Shopify cookies policy has been updated.
Breaking change
In addition to the policy update, we've added the following three required cookies to the Cookies Necessary for the Functioning of the Store cookie list:
identity-state
identity-state-<<token>>
identity_customer_account_number
These cookies are required to use the new customer account log-in, which some merchants have already enabled. Without them, customers won't be able to log into the store. All cookies management applications, including GDPR-related apps, must update their application as soon as possible and not block these cookies.
Please be noted:
- The difference between
-
and_
. The two identity state cookies names are:
identity-state
and identity-state-<<token>>
NOT
identity_state
and identity_state_<<token>>
- The
token
in the real name ofidentity-state-<<token>>
is a random string, likeidentity-state-fsdf25fxg34se69d
. The name does not contain<
or>
. It means, your app should not block cookies whose name is similar toidentity-state-fsdf25fxg34se69d
. This also applies tocheckout_session_token_<<token>>
. Your app should not block cookies whose name is similar tocheckout_session_token_fsdf25fxg34se69d
.
We've also added two cookies to the Reporting and Analytics cookie list:
customer_auth_provider
customer_auth_session_created_at
These cookies are used to provide additional data for Shopify analytics.
October 06, 2022
Storefront API allows for cross-origin resource sharing API
Requests made to Storefront API from SSL provisioned domains that are registered in the domains list on the Admin Panel will now return a two new headers:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: ${origin_domain}
With that mechanism in place, Storefront API securely shares resources such as cookies with the browser, allowing for cart events originated from API Clients other than Online Store to be accounted for in the conversion metrics out of the box, as long as the origin request complies with CORS policy.
October 03, 2022
Introducing the Web Pixel API API
As of GraphQL Admin API version 2022-10, you can use Web Pixel Extensions to connect your marketing and analytics pixels to a merchant's online store for collecting customer events.
Learn more about Web Pixels on Shopify.dev.
October 03, 2022
Checkout Extensibility begins rollout to developers and Shopify Plus Merchants API
Checkout extensibility capabilities are available for developers to start building apps for checkout customizations. We’re gradually rolling out checkout extensibility to Shopify Plus merchants so they can install and use your apps in production. Merchants will be able to discover apps with checkout UI extensions via the checkout editor.
Add new functionality with checkout UI extensions in various places in checkout and Shop Pay. Use these extensions to add in unique elements like product offers, custom fields, custom banners and more that are adaptable to various flows, creating a unified experience for buyers wherever they choose to checkout.
Track events using the new web pixel extension, to provide customer events that merchants can subscribe to. Apps will be able to hook into the events in the Pixels API, including checkout, to allow merchants access privacy-compliant customer behavior analytics.
Merchants are now able to use the new checkout branding API to customize the styling, to truly make checkout feel like their own, adapting the visual appearance such as the logo, font, and colors. Checkout UI extensions will inherit the brand settings from this API, so your app automatically reflects a brand’s style.
To learn more about building apps for checkout, please review our developer documentation.
October 03, 2022
Introducing the Checkout Profiles API API
As of GraphQL Admin API version 2022-10, you can query for a CheckoutProfile, or mulitple CheckoutProfiles, providing insights about existing checkout profiles on your shop.
Learn more about Checkout Profiles on Shopify.dev.
October 01, 2022
The title field has been deprecated for the translatable resource ProductVariant API
As of GraphQL Admin API version 2022-10 when you register any option
translations on a ProductVariant
resource, a title
translation will be automatically generated using the option
translations and surfaced for you.
You will no longer be able to register title
translations on the ProductVariant
resource.
Learn more about TranslatableResourceTypes.
October 01, 2022
Creating or updating an order risk with the REST Admin API now requires an order_id
API
The REST Admin API now disallows requests to either create or update order risks without specifying an order ID.
Previously, the REST Admin API allowed you to create OrderRisk models using order_id: null
. This could have been used to create checkout order risks that exist prior to creating the order and block checkout. External apps do not use this feature.
This change is not breaking.
October 01, 2022
Action required
REST Admin API - Retrieving a list of locations is now paginated API
Retrieving a list of locations is now paginated by default. If you are a consumer of this API and have more than 50 locations configured for your store, you might be affected. For more details on how pagination works, see here.
October 01, 2022
New references connection on metafields API
You can now access a references
connection on a metafield
in the GraphQL Admin and Storefront APIs.
Use the references
connection to resolve metafield values of a list reference type to their underlying resource. This new connection is paginated and works similarly to the existing reference
field, which is used for single references.
This new endpoint is available in unstable, and will be part of the 2022-10 release.
For more information, refer to the Admin API and Storefront API documentation.
October 01, 2022
New field deliveryAddressPreferences
added to cart buyer identity objects
API
You can now use the Storefront API to attach shipping address preferences to the carts of non-logged-in customers and the fetch cart delivery groups.
ThedeliveryAddressPreferences
field has been added to the Storefront API's CartBuyerIdentity
and CartBuyerIdentityInput
objects, for this purpose.
Refer to our documentation on cartCreate and cartBuyerIdentityUpdate to learn more about how to create a cart or update a cart's buyer identity to send delivery address preferences.
October 01, 2022
New field manualHoldsFulfillmentOrders
to get manually held fulfillment orders
API
As of GraphQL Admin API version 2022-10, you can use the new manualHoldsFulfillmentOrders
connection to fetch all the manually held fulfillment orders for a shop. Fulfillment orders can also be filtered based on order filters like -
* order_risk_level
- The fraud risk level of the order.
* order_financial_status
- The financial status of the order
* shipping_address_coordinates_validated
- Whether the shipping address was geolocated and it is a valid address.
October 01, 2022
New field transactional_sms_disabled
added to Shop object
API
As of Admin API version 2022-10, a new field transactional_sms_disabled
has been added to the Shop object in the GraphQL and REST Admin APIs.
The field is also present on the "shop/update" webhook, which now will trigger when the transactional_sms_disabled state
of a shop changes.
October 01, 2022
New Merchant of Record application field in order object API
As of GraphQL Admin API and REST Admin API version 2022-10, information on application acting as the Merchant of Record for the order would be available through the Order object. This information would only be populated with supported applications.
New merchantOfRecordApp
field in GraphQL Admin API returns OrderApp
object and merchant_of_record_app_id
field in REST Admin API returns the id of the application .
Learn more about the Order object on Shopify.dev.
October 01, 2022
Metafields support for Locations API
As of 2022-10, Location resources support metafields. Use metafields APIs to store additional information in metafield values, like store hours, and then reference them in Liquid.
To learn more about metafields, refer to the metafields documentation. To use location metafields in Liquid, refer to the store_availability Liquid reference.
October 01, 2022
Remove Cancelling a fulfillment for a specific order ID endpoint API
The Fulfillment API was deprecated in the Shopify 2022-07 release. However the cancel endpoint was missed and this change rectifies that mistake.
Apps will have until the 2023-04 release to migrate away from the deprecated API and use Fulfillment Orders instead. To help you seamlessly migrate, we’ve crafted a migration guide that walks you through the process of moving to Fulfillment Orders. To learn more, visit the migration guide on Shopify.dev.
October 01, 2022
New selected_delivery_option
field in cart
API
We have added the selected_delivery_option
as part of the CartDeliveryGroup
as well as the handle
field as part of the CartDeliveryOption
in the cart.
The selected_delivery_option
field represents the selected delivery option in a delivery group. The handle
field represents a unique identifier for the delivery option.
A default CartDeliveryOption
is saved as the selected_delivery_option
in each CartDeliveryGroup
available.
We also added the cartSelectedDeliveryOptionsUpdate
mutation, allowing you to update the selected_delivery_option
s of each of your delivery groups.
October 01, 2022
New mutations marketingActivityCreateExternal and marketingActivityUpdateExternal are available API
As of GraphQL Admin API version 2022-10, you can now use marketingActivityCreateExternal and marketingActivityUpdateExternal mutations to create and manage marketing activities, without the need to implement a marketing activity app extension.
These endpoints will allow our app partners to more easily link their marketing efforts, and accompanying tracking information to Shopify so our merchants can have a more complete picture of their marketing performance.
October 01, 2022
Full markets and multi-currency support for draft orders API
As of GraphQL Admin API version 2022-10, we’ve added full support for markets and multi-currency on draft orders.
You will now be able to specify the market region that should apply to a draft order, inheriting your configured market settings such as pricing. The selected market region’s attributes will be available on their respective objects.
Additionally, we have built out full support for multi-currency in draft orders. You will now be able to query a new set of fields that expose all monetary values relevant to a draft order in multi-currency. As part of these changes, you will now be able to use all draft order payment completion flows in multi-currency.
Learn more about these fields on DraftOrder, DraftOrderLineItem, DraftOrderAppliedDiscount, DraftOrderInput, CalculatedDraftOrder and CalculatedDraftOrderLineItem reference docs.
October 01, 2022
New mutation inventoryBulkToggleActivation now available API
As of GraphQL Admin API version 2022-10
, we are releasing a new mutation inventoryBulkToggleActivation
.
This new mutation will allow you to bulk activate or deactivate a single inventory item at many locations, with a maximum of 250 locations at a time.
Instead of having to call inventoryActivate or inventoryDeactivate for each location, you can now do that in bulk for a single inventory item.
Learn more about the inventoryBulkToggleActivation mutation on Shopify.dev.
October 01, 2022
Action required
Apps can now request access to necessary protected data API
As of the 2022-10 release, APIs will redact customer personal data by default and you will be able to request access to protected customer data and protected customer fields through your Partner Dashboard. You will need approval to access protected customer data on any store that isn't a development store.
Apps that require protected customer data (data that relates directly to a customer or prospective customer) must implement our data protection requirements, including informing merchants of your app’s data use and purpose, applying customer consent decisions, opt-out requests, and more.
Apps that require protected customer fields (individual configuration and approval) in addition to approval for protected customer data will need to abide by additional requirements, including encrypting your data back ups, keeping test and production data separate, and more.
For more information, please visit our developer documentation.
October 01, 2022
Introducing the Subscription Billing Cycles API API
As of GraphQL Admin API version 2022-10, we've introduced Subscription Billing Cycles to the existing Subscriptions Contract APIs so that you can make changes to an upcoming order without affecting the base subscription contract.
This includes: * The ability to skip a future order. * The ability to make changes to the line items of an upcoming order, including any additions, quantity changes, or removals. * The ability to combine the orders of one or more subscriptions contracts in order to save on shipping costs.
Please note that with the introduction of Subscriptions Billing Cycles API, SubscriptionBillingAttemptCreate
will create a billing attempt for the billing cycle at the origin_time
if specified. Otherwise, it will be created for the current billing cycle by default.
Alternatively, you can also use BillingCycleSelector
to select the billing cycle you wish to create billing attempt for.
Learn more about the API on Shopify.dev.
October 01, 2022
Action required
New field marketing_sms_consent_enabled_at_checkout
added to Shop object
API
As of Admin API version 2022-10, a new field marketing_sms_consent_enabled_at_checkout
has been added to the Shop object in the REST Admin APIs.
The field is also present on the "shop/update" webhook, which now will trigger when the marketing_sms_consent_enabled_at_checkout
state of a shop changes.
October 01, 2022
New mutations to manage Locations API
As of GraphQL Admin API version 2022-10
, we are adding mutations so you can manage your locations using GraphQL. This will allow you to add, edit, deactivate, re-activate and delete locations.
Learn more about Locations on Shopify.dev.
October 01, 2022
New Admin GraphQL APIs for B2B are available in 2022-10 API
As of GraphQL Admin API version 2022-10
, we are adding queries, objects, and mutations to introspect and manage B2B primitives notably Companies, Company Locations, and Company Contacts with associated Roles.
Learn more about B2B on Shopify.dev.
October 01, 2022
Create B2B Draft Orders via PurchasingEntityInput API
As of GraphQL Admin API version 2022-10
, you can use the purchasing entity input field to create and update B2B draft orders.
This will attach company, location and contact to the draft order.
The field can also be used to create and update a traditional D2C draft order, requiring only a customer ID.
Learn more about PurchasingEntityInput.
October 01, 2022
Duplicate and Create Inventory Reservations in Draft Orders API
As of GraphQL Admin API version 2022-10
, you will get access to new fields and mutations for draft orders.
In particular, you will now be able to: - Duplicate drafts - Creating drafts from orders - Execute bulk operations such as add/remove tags and deleting drafts - Create drafts with inventory reservations - Access previously hidden fields, such as metafields, on drafts and line items
Learn more about DraftOrderCreate.
October 01, 2022
Contextual pricing for company locations is now available for products in the GraphQL Admin API API
As of the 2022-10
version of the Admin GraphQL API, you can use the contextualPricing
field on Product and ProductVariant to fetch prices for a CompanyLocation by passing a companyLocationId
argument to the context
input.
Learn more about the Contextual Pricing API on Shopify.dev.
September 30, 2022
MarketWebPresence association can now be fully accessed through ShopLocale endpoints API
As of 2022-10
you can now add, remove and view MarketWebPresence
associated with a Locale
through the ShopLocale
GraphQL endpoints.
Learn more about ShopLocale and [MarketWebPresence].(https://shopify.dev/api/admin-graphql/2022-10/objects/MarketWebPresence).
September 30, 2022
Local Delivery & Pickup for Subscriptions API
As of 2022-10
, partners can manage the delivery methods of the subscriptions contracts with Shipping, Local Delivery, and Pickup.
SubscriptionContract.deliveryMethod
supports two new types: SubscriptionDeliveryMethodLocalDelivery
and SubscriptionDeliveryMethodPickup
.
A new SubscriptionDraft.deliveryOptions
provides a SubscriptionDeliveryOptionResultSuccess
type for all three delivery methods.
To edit or create contracts, an extended SubscriptionDeliveryMethodInput
for SubscriptionDraftInput
can receive localDelivery
and pickup
information.
Important to note:
- SubscriptionContract.deliveryMethod returns null for clients using API versions earlier than 2022-10 when the contract is created with Local Delivery or Pickup. If you have been inferring a subscription has only digital products because the delivery method is null, then adopt our new graphql changes.
- We also recommend taking a look at general delivery terms your app might be using, such as “delivers” or “ships”. Consider replacing them with broader terminology like “fulfills” or “recurs” that cover all modes of delivery.
Learn more about Delivery Methods for Subscription on Shopify.dev.
September 26, 2022
Introducing the Local Pickup API API
As of 2022-10 in GraphQL Admin API version unstable, you can use the new Local Pickup mutations to:
Enable Local Pickup for a location
Disable Local Pickup for a location
Additionally, you can access the current Local Pickup settings using the new Location.localPickupSettingsV2 field.
This enables you to fully manage Local Pickup settings for a location!
Learn more about Local Pickup on Shopify Help Center.
September 26, 2022
New metafield definition types in GraphQL - collection_reference / list.collection_reference API
As of GraphQL API 2022-10, two new metafield definition types are available:
-
collection_reference
: A reference to a collection on the online store. -
list.collection_reference
: A list of collection references on the online store.
Learn more about the new reference types in Shopify.dev, and see examples.
September 21, 2022
Preview theme app extensions using Shopify CLI Tools
As of Shopify CLI version 3.13.0, you can now preview theme app extensions by running the dev
command. Shopify CLI supports hot reloading for theme app extensions, so you can avoid refreshing the browser after making changes.
September 20, 2022
Performance Improvement on Product(s) Query API
We've added a new Rails association to Product
and use it in the Product
GraphQL, so that the database queries use an indexed access path, rather than doing a full table search as is being done now.
There's no change to the API.
September 20, 2022
Display both related and complementary product recommendations on storefronts API
The Product Recommendations API now supports an intent
parameter that allows theme developers to specify whether they want to show related or complementary products.
Complementary products are a new type of product recommendation intended for items that are often bought together or pair well. Complementary products can be set with the Search & Discovery app.
Learn more about the product recommendation intents on Shopify.dev
September 19, 2022
GraphQL Admin API now supports custom content by market that is not language based API
As of September 19, 2022, you can use a new set of endpoints in the GraphQL Admin API 2022-10 version to surface custom content to buyers in a specific market that is not language based.
The newly introduced endpoints are marketLocalizableResource
, marketLocalizableResources
and marketLocalizableResourcesByIds
queries, as well as marketLocalizationsRegister
and marketLocalizationsRemove
mutations.
An example of market localizable content that is not language based is the newly introduced money content type metafield
September 16, 2022
Use a server to build custom storefronts with authenticated access for the Storefront API API
You can now use authenticated access to make Storefront API requests from a server (for example, from a Hydrogen server).
Using authenticated access enables more throughput for your server than using a public token, and enables Shopify's bot protection features to work more effectively.
September 16, 2022
Action required
Updates required for embedded apps to work on the new Shopify admin domain API
The Shopify admin is moving to a new domain: admin.shopify.com
. Embedded apps should migrate to App Bridge 3.0 as soon as possible to ensure the best merchant experience in this new domain.
The following requirements must be met for embedded apps to load in admin.shopify.com
. Until these requirements are met, merchants will be forced to redirect to the old admin domain to use the app:
- The content security policy includes
admin.shopify.com
. - The app is on App Bridge 2.0.5 or higher, and has correctly implemented the
host
parameter. App Bridge 3.0 is recommended.
September 15, 2022
Action required
Update your app listing Shopify App Store
New fields have been added to the app listing in preperation for the updated app listing page. All developers must complete the updated form by November 1. For more information on the new form, click here
September 15, 2022
Updates to app categorization Shopify App Store
App categories are getting simplified for better merchant discovery. Starting in November, you’ll be able to categorize your own app. For more information, click here
September 14, 2022
Unpublished locales can now be added to a MarketWebPresence API
As of 2022-10
the marketWebPresenceUpdate
endpoint now supports adding unpublished locales as alternateLocales
.
Learn more about marketWebPresenceUpdate.
September 14, 2022
Destroy delegate access tokens through the GraphQL Admin API API API
As of ** 2023-01 ** version on the Admin GraphQL schema, you can use the DelegateAccessTokenDestroy mutation to delete the delegate tokens created by the API client.
For app architectures that use delegate tokens from multiple subsystems, this makes it easy to remove those delegate tokens that are unused or leaked for better application security.
September 13, 2022
Brand settings now available via Storefront API API
As of the 2022-10
release of the Storefront API, you can now query a shop's brand settings and assets via the new Shop.brand
field.
For more information on configuring your shop's brand settings, click here.
September 08, 2022
Action required
Critical changes to analytics and marketing measurement in Apps API
Starting October 3rd, Plus Merchants who customize their checkout via Checkout Extensibility will be required to use the new Web Pixel Extension instead of adding checkout.liquid code.
Ensure your app can support these merchants' measurement goals by building with the Web Pixel Extension. This will unlock additional locations for adding pixels, such as checkout, while increasing data accuracy, and providing tools for privacy compliance.
Visit the developer documentation to learn more and build with pixels.
August 30, 2022
Changes to the required app icon size in the Partner Dashboard Platform
Icons added to your app using the Partner Dashvoard App setup page now must be 1200 px by 1200 px in size. This change makes icon sizes consistent across the Partner Dashboard, the Shopify App Store, and other development surfaces.
August 29, 2022
Changes to GraphQL API MoneyV2-related fields API
As of 2022-10, the Money
scalar is being removed from the Storefront API. It was previously used for monetary fields that do not have a V2 suffix (<name>: Money
). As a result, the following changes are being made:
* Non-V2 fields will now use MoneyV2
objects for their type (<name>: MoneyV2
).
* Monetary fields that do have the V2
suffix (<name>V2: MoneyV2
) are being deprecated in favor of the <name>: MoneyV2
equivalent. These fields will be removed in subsequent releases.
These changes will help improve consistency of the API and avoid confusion when using these fields.
August 29, 2022
Automatic image delivery in AVIF Platform
Shopify now supports automatically optimizing storefront images using the AV1 Image File Format (AVIF) format, which improves performance by reducing delivered bytes. Optimization occurs on a per image basis, where Shopify will examine the request and determine the best compatible file format (e.g. AVIF, WebP or JPEG) based on image quality and compressed bytes.
You can learn more by visiting https://cdn.shopify.com/
August 18, 2022
Accelerated app creation and improved app insights Platform
Hey all! Coming back at you with improvements to creating an app from the Partner Dashboard! We’re removing the need for you to enter in any kind of URL when you’re manually creating an app from the UI. Instead, we’ll generate placeholders for you in the App setup area. You can update these URLs when you're ready to test or distribute your app.
We’ve also added a new Insights section to the app navigation, so you can discover everything from app history to API health without having to hunt around!
August 12, 2022
SellingPlan and SellingPlanGroup fields are supported by the Translations API API
SellingPlanGroup and SellingPlan fields will be supported by the Translations API as translatable resources. The following fields will be available in the unstable API until the 2022-10 API release:
- SellingPlanGroup.name - Public-Facing Name of the Selling Plan Group
- SellingPlan.description - Optional, more verbose description of the Selling Plan
- SeillingPlan.option1 - Delivery frequency
- SellingPlan.option2- Delivery frequency (optional)
- SellingPlan.option3 - Delivery frequency (optional)
More information about our translation API is available in our API documentation.
August 03, 2022
Action required
Updates to our Partner Program Agreement effective August 3, 2022 Platform
We've made changes to our Partner Program Agreement. This includes terms noting that all apps may only be installed or otherwise initiated directly on or through applicable Shopify surfaces allowing us to help provide merchants the trust signals they need to make informed choices, as well as other updates.
These changes come into effect as of today, August 03, 2022.
We encourage all developers on our platform to review and be familiar with the API License and Terms and the Partner Program Agreement, so that you understand how to build, run, and grow your app and development business on our platform.
For more information and frequently asked questions, please visit the Shopify Help Center.
July 28, 2022
Theme app extensions locale file size limit increase Platform
As of today, theme app extensions are be able to store translations up to 15 KB per locale file.
For more information about file and content size limits for theme app extensions, refer to the theme app extension framework documentation.
July 25, 2022
New customer payment method revocation reason types have been added API
You may now see new error values and descriptions if you encounter a Braintree payment method being revoked when associating Braintree payment methods with the customers that you import into Shopify.
Learn more about migrating existing subscription contracts to Shopify.
July 21, 2022
New Reference Type Deletion Error Message for Metafield Definitions API
As of the API version 2022-10, upon deleting a reference type metafield definition with delete_all_associated_metafields argument set to false, REFERENCE_TYPE_DELETION_ERROR will be returned with the following error message:
"Deleting a reference type metafield definition requires deletion of its associated metafields."
July 20, 2022
New tax exemption values API
As of 2022-10
, the following new tax exemption values will be added to the TaxExemption enum and are intended to help with B2B transactions:
* United States reseller exemptions, indicating that the merchant is exempt for taxes in a specific state as they are a reseller.
* European Union reverse charge exemption, indicating that VAT should not be included on the buyers invoice and that the buyer will be responsible for reporting the correct VAT on their purchase.
July 18, 2022
Adding write permissions for Actions to Shopify’s GitHub app Platform
Shopify’s GitHub app is requesting write permissions for GitHub Actions. This update will support improvements to the developer experience for Hydrogen custom storefronts hosted on Oxygen.
Today, deployments to the Oxygen hosting platform can only be triggered by committing and pushing a change to a Hydrogen code repository. These additional permissions will enable features such as on-demand re-deploys, automatic branch deployment when creating new Oxygen environments, and other enhancements.
Learn more about Shopify’s GitHub integration.
July 05, 2022
App proxy requests include new parameter for the logged in customer ID API
The customer ID for logged in customers is now included as a parameter in the forwarded query for app proxy requests. The customer ID is passed in the logged_in_customer_id
parameter. The parameter will be blank if no customer is currently logged in.
Tip:
Make sure that your application is verifying the signature
parameter of forwarded queries.
July 01, 2022
Updated contextualPricing to be nullable API
In the 2022-04 API version release, the Product.contextualPricing
and ProductVariant.contextualPricing
fields can now return null
.
This is in preparation for future argument changes. With the current arguments, there is no case where these fields can return null
. However, future arguments will introduce null
cases.
Learn more about contextualPricing
July 01, 2022
Read and write disputes and dispute evidence in the GraphQL and REST Admin API API
You can now read and write disputes and dispute evidence for Shopify Payments using the REST and GraphQL Admin APIs. The following new objects, mutations, and endpoints are available:
GraphQL Admin API
-
ShopifyPaymentsDisputeEvidence
object -
ShopifyPaymentsDisputeFileUploadUpdateInput
input object -
ShopifyPaymentsDisputeEvidenceFileType
enum -
ShopifyPaymentsDisputeFileUpload
object -
ShopifyPaymentsDisputeEvidenceUpdate
mutation
REST Admin API
POST /admin/api/2022-07/shopify_payments/disputes/{{dispute_id}}/dispute_file_uploads.json
DELETE /admin/api/{version}/shopify_payments/disputes/{{dispute_id}}/dispute_file_uploads/{{dispute_file_upload_id}}
PUT /admin/api/{version}/shopify_payments/disputes/{{dispute_id}}/dispute_evidences.json
For more information, refer to the Dispute resource developer documentation.
July 01, 2022
Locations now support metafields API
Location resources now support metafields. Use metafields APIs to store additional information in metafield values, like store hours, and then reference them in Liquid. Note: this is currently supported in our unstable API version only.
To learn more about metafields, refer to the metafields documentation. To use location metafields in Liquid, refer to the store_availability Liquid reference.
July 01, 2022
New totalQuantity field on the Storefront API Cart object API
As of GraphQL Storefront API version 2022-07, the Cart
object has a new field: totalQuantity
. This field returns an integer representing the total number of items in the cart.
Learn more about the Cart
object on Shopify.dev.
July 01, 2022
New fields amount and compareAtAmount on the Storefront API CartLineEstimatedCost object API
As of GraphQL Storefront API version 2022-07, the CartLineEstimatedCost
object has two new fields: amount
and compareAtAmount
. Both fields return an object of type MoneyV2
. These new fields allow the price of a product variant on a cart to be queried using buyerIdentity
as the context driver.
Learn more about these fields on Shopify.dev.
July 01, 2022
New Online Store URL redirect object for the Storefront API API
As of GraphQL Storefront API version 2022-07, a new urlRedirects
object has been added.
URL redirects can be used to redirect traffic from one web page to another. The new urlRedirects
object can be used to query the path
and target
URLs for URL redirects already set up on a shop.
Learn more about this object on Shopify.dev.
July 01, 2022
New reason and lineItems fields for rejecting fulfillment requests API
As of GraphQL Storefront API version 2022-07, the fulfillmentOrderRejectFulfillmentRequest
mutation has two new optional arguments:
-
reason
: Identify the reason the fulfillment request was declined. It can be used to filter, group, and provide workflows to help merchants solve rejection issues. -
lineItems
: Identify which line items in a fulfillment request are causing the rejection, and provide a detailed message for each one.
Also in this version, the FulfillmentOrderLineItem
object has a new generic warnings
field, which can be used to display rejection issues for the line item.
July 01, 2022
Action required
The behavior of HasMetafields.metafields has changed API
As of Storefront API version 2022-07, we're deprecating the HasMetafields.metafields
paginated connection in the Storefront API. This connection enabled you to paginate over all visible metafields in a given resource.
HasMetafields.metafields
now accepts a list of metafield namespaces and keys, and returns a list of associated metafields that match the given namespaces and keys.
The updated endpoint is available in unstable, and will be part of the 2022-07 release. The existing paginated behaivor is available in 2022-04 and prior supported stable versions.
For more information, refer to the HasMetafields
interface.
July 01, 2022
Subscription shipping address phone validation API
As of the 2022-07 version of the Admin GraphQL API, the phone
field of the delivery address will be validated on calls to subscriptionContractCreate
and subscriptionDraftUpdate
.
This allows you to ensure phone numbers are properly formatted and will prevent errors that may occur when processing subscription payments with invalid data.
Learn more about SubscriptionContractCreate and subscriptionDraftUpdate on Shopify.dev.
July 01, 2022
Enable Standard metafields by namespace and key API
You can now enable standard metafields on a shop using namespace and key with our GraphQL API.
Learn more about standard metafields.
July 01, 2022
Create delegate access tokens through the GraphQL Admin API API
Avoid sharing an access token across systems with the new delegateAccessTokenCreate
mutation. This mutation creates new tokens with a subset of the total permissions of an app.
For app architectures that require authenticated access from multiple subsystems, it's best to avoid sharing the same token across all systems. Instead, create a new token that has access to only the minimal scopes that are required for proper functioning.
July 01, 2022
Braintree is now available as a CustomerPaymentMethodRemoteInput API
As of API version 2022-07, an input field for Braintree has been added to the CustomerPaymentMethodRemoteInput
object, which is used by the customerPaymentMethodRemoteCreate
mutation. This field can be used to help you migrate Braintree subscription contracts to Shopify.
Learn more about migrating existing subscription contracts to Shopify.
July 01, 2022
Fulfillment service SKU sharing API
The fulfillment service SKU sharing feature gives fulfillment service apps the ability to stock and fulfill product variants together with merchant's locations.
Merchants will be able to stock and fulfill the same variant from multiple fulfillment services. This means that they can now have the same product/variant be stocked at their merchant managed locations as well as 3PL services at the same time.
This feature introduces the permits_sku_sharing
parameter when creating or updating a fulfillment service. Setting permits_sku_sharing
to true
allows the merchant to assign fulfillment orders to both the merchant's locations and compatible fulfillment services.
When a fulfillment service app sets permits_sku_sharing
to true
, some of the following behaviour will break. If you set a product variant's fulfillmentService
parameter (REST & GraphQL) to manual
, then it no longer means that the variant is stocked only at a merchant-managed location. Apps that use the fulfillmentService
parameter in this way should instead use the location
parameter on the Fulfillment Order resource to determine which location or fulfillment service fulfills a given product variant.
Learn about multi-managed inventory from merchant's perspective.
Learn more about the building a fulfillment service using the fulfillment orders API.
Learn more about managing fulfillment orders using the REST Admin API and GraphQL Admin API.
July 01, 2022
Action required
New WebHooks and App Events for App Usage Spending Limits and Changes to balanced_used
API
On July 31st 2022 we will be introducing App Usage Spending Limits to provide flexibility for merchants to control the usage charge limit per billing cycle from their Shopify admin. Developers no longer need to set a "one size fits all" app usage capped amount that is difficult to meet a variety of merchants' needs.
Merchants Can Self-Serve Increasing Their Subscription's cappedAmount
As of July 31st 2022 Merchants will be able to increase the cappedAmount
associated with a subscription that has usage pricing. Partners are advised to listen to the app_subscription/update
webhook to stay notified when Merchants update their capped amounts. For instructions on how Merchants will be able to update their cappedAmount
visit the help center
App Usage Webhook Notifications
As of GraphQL Admin API version 2022-07, app developers offering usage-based pricing should subscribe to new webhook updates in advance of the roll out of App Usage Spending Limits. Developers can receive notifications when merchants update their App Spending Limits, which is also the capped_amount
by creating a webhook subscription through the Admin Graphql API to the app_subscriptions/update topic.
Once merchants update their App Spending Limits, developers may need to make updates to their application to allow merchants to incur additional usage charges.
Learn more about Admin Graphql API webhooks here.
Important update about balance_used
endpoint for app usage charges
The balance_used
endpoint in the App Usage Pricing API now shows the running total usage charges for the entire billing cycle. Previously, there was an issue where the usage charge running total, presented on the balance_used
field, resets when a new recurring charge with usage-based pricing is accepted by the merchant. Note that the issue only applied to the value being presented in the balance_used
field and usage charges were not able to exceed the capped_amount
in a cycle.
Going forward, the balance_used
endpoint will always show the total usage charge balance for the billing cycle, which is reflective of what merchants see in the Shopify Admin about their current App Spending Limits.
July 01, 2022
New Cart.discountAllocations
field and change in CartLine.discountAllocations
API
As part of the GraphQL Storefront API 2022-07 API release, we are changing how discountAllocations
on Cart
and CartLine
are returned.
-
Cart.discountAllocations
returns discount allocations that are applied to the entireCart
.
CartLine.discountAllocations
now only returns discount allocations that are applied to the specific CartLine
.
CartLine.total
reflects the line total with only line-level discounts applied, not discounts applied to the entire Cart
.
Learn more about the Cart
object on Shopify.dev.
July 01, 2022
Property deprecations in the Admin API Order and LineItem resource API
Multi-managed inventory introduced a breaking change to LineItem resource fulfillment_service
, therefore this field will no longer be supported in REST and GraphQL. Fulfillment services will all be opted into SKU sharing in 2023-04. Please consider using REST FulfillmentOrder#assigned_location & GraphQl FulfillmentOrder#assigned_location
When a fulfillment service app sets permits_sku_sharing
to true, some existing behaviour will break. When a product variant's fulfillmentService parameter (REST & GraphQL) is set to manual, it no longer means that the variant is stocked only at a merchant-managed location. Therefore, apps that use the fulfillmentService parameter in this way should instead use the location parameter on the Fulfillment Order resource to determine which location or fulfillment service fulfills for a given line item.
Learn more about managing fulfillment orders using the REST Admin API and GraphQL Admin API.
Learn more about the building a fulfillment service using the fulfillment orders API.
The following other line item object properties on the REST Admin API's Order resource are deprecated:
origin_location
destination_location
The following object property on the REST Admin API's Order resource is deprecated:
total_price_usd
These deprecated properties will be removed from unstable. The change will be made official in the 2022-10 REST Admin API version.
For other recent deprecations on the Orders resource refer to this Change Log
July 01, 2022
Property deprecations in the Admin API ProductVariant resource API
Multi-managed inventory introduced a breaking change to ProductVariant resource fulfillment_service
, therefore this field will no longer be supported in REST and GraphQL. Fulfillment services will all be opted into SKU sharing in 2023-04. Once opted into sku sharing a product variant could be linked to multiple fulfillment services.
For GraphQL to see all associated fulfillment services use InventoryLevelConnection#locations. For REST please refer toInventory levels APIs to see how variants are associated to multiple fulfillment services.
When a fulfillment service app sets permits_sku_sharing
to true, some existing behaviour will break. When a product variant's fulfillmentService parameter (REST & GraphQL) is set to manual, it no longer means that the variant is stocked only at a merchant-managed location. Therefore, apps that use the fulfillmentService parameter in this way should instead use InventoryLevel APIs to determine which location or fulfillment service fulfills a given product variant.
Learn more about managing fulfillment orders using the REST Admin API and GraphQL Admin API.
Learn more about the building a fulfillment service using the fulfillment orders API.
Also the field presentment_prices
is being deprecated in REST and GraphQL. For more context refer to this change log.
July 01, 2022
Release Fulfillment Hold Automation API Changes API
This change adds the public GraphQL fields associated with fulfillment hold automations to the 2022-07 Admin API GraphQL release. Specifically, this adds the following field - MailingAddress.coordinatesValidated
This new boolean field can be used by partners to determine if the coordinates of a mailing address have been validated by Shopify. This unlocks ability to hold fulfillments on unvalidated mailing address and ensure that merchants check prior to requesting fulfillments from their 3PL.
Learn more about holding fulfillments with GraphQL and with REST Learn more about Shopify Flow
July 01, 2022
Legacy Fulfillment API Deprecation API
The Fulfillment API is being deprecated in the Shopify 2022-07 release. Apps will have until the 2023-04 release to migrate away from the deprecated API and use Fulfillment Orders instead. To help you seamlessly migrate, we’ve crafted a migration guide that walks you through the process of moving to Fulfillment Orders. To learn more, visit the migration guide on Shopify.dev.
July 01, 2022
GraphQL schemas will use the "@deprecated" directive for input fields and arguments API
As of API version 2022-07 all GraphQL schemas will start using the "@deprecated" directive for input fields and arguments which have been deprecated. API versions 2022-04 and below will continue to use the description for deprecation warnings.
It is recommended you use a GraphQL client which supports deprecated input fields and arguments when using GraphQL API versions 2022-07 and above. For example graphql-js added support as of version v15.5.0. See the official GraphQL spec for more details.
July 01, 2022
New PredictedSpendTier field on the Customer object API
As of GraphQL Admin API version 2022-07, a new statistics
field has been added to the Customer
object for computed customer statistics. It includes a new field predictedSpendTier
which indicates the predicted spend of a customer with a shop.
For more information, refer to the CustomerStatistics
field in the GraphQL Admin API reference.
July 01, 2022
Updated requirements for protected customer data API
Starting with API version 2022-10, we’re introducing updated requirements for apps that use customer data. Updated requirements will be published prior to the release of API version 2022-10.
The protected customer data requirements focus on data minimization, transparency, and security so that Partners can better support merchants' paths towards compliance with privacy and data protection rules.
Learn more about how you can be ready for protected customer data.
June 28, 2022
Introducing Checkout Extensibility Tools
With Checkout Extensibility, you can now build apps to customize checkout and Shop Pay. You can leverage Checkout UI extensions and Shopify Functions to surface new functionality, Checkout Branding API to customize styling, and Pixels to track events.
Checkout Extensibility is now available in developer preview.
Learn more about Checkout Extensibility on Shopify.dev.
June 27, 2022
Apply multiple discounts to an order with discount combinations API
As of GraphQL Admin API version 2022-07, you can use the Discount APIs to modify combination settings on a discount. This allows a customer to apply more than one discount to their order.
Discount combinations are available now as part of the Checkout extensibility developer preview.
Learn more about how discount combinations work.
June 22, 2022
New type field on Storefront API CartCustomDiscountAllocation object API
As of GraphQL Storefront API version 2022-10, CartCustomDiscountAllocation
object has a new field: type
. This field returns the type of custom discount (i.e. manual or script) on a discount allocation from a cart line.
Learn more about the Cart
object on Shopify.dev.
June 22, 2022
Introducing Shopify Functions Tools
Shopify Functions lets you extend or replace key parts of Shopify’s backend with custom logic. Functions run on Shopify infrastructure, making them both scalable and performant.
Functions are now available in developer preview for product, order, and shipping discounts.
Learn more about Shopify Functions on Shopify.dev.
June 22, 2022
Embedded App Improvements with App Bridge Tools
With the latest App Bridge enhancements, your app will now look, feel, and perform like it’s a part of Shopify.
More specifically, App Bridge mobile apps can now load 85% faster from the Shopify iOS and Android apps when you enable mobile optimization for your embedded app. App Bridge apps can also now leverage full-screen mode, just like our first-party apps, for complex workflows in the Shopify admin. Lastly, apps that use the NavigationMenu component will now have their navigation embedded into the Shopify admin for faster, more natural access.
Learn more about App Bridge on Shopify.dev.
June 22, 2022
Introducing Shopify CLI 3.0 Tools
The updated Shopify CLI 3.0 is both easier to use and more powerful than ever. With Shopify CLI 3.0, we’ve simplified the development process by reducing the number of commands that you need to get started from 13 to 5.
You can also now leverage a single project for your app and extensions, preview your entire project with one command, and push your entire project together with a single command when you’re finished.
June 21, 2022
Selling Plan API now supports pre-orders and try before you buy API
As of GraphQL Admin API version 2022-07, we have expanded the Selling Plan API enabling you to integrate support for new deferred purchase options like pre-orders and try before you buy into the Shopify Checkout.
June 21, 2022
New API for collecting deferred payments on orders API
As of GraphQL Admin API version 2022-07, we have introduced new APIs that enable you to collect deferred payment on an order using a vaulted card belonging to the customer. The orderCreateMandatePayment mutation will be available for charging payments against a vaulted credit card. This API returns a GraphApi::Job and paymentReferenceId. This paymentReferenceId can be used to poll the status of the payment using the orderPaymentStatus query.
June 21, 2022
App distribution decoupled from app creation, new Partner Dashboard navigation Platform
What a relief - app distribution is now decoupled from the app creation flow in the Partner Dashboard! This means you no longer have to select a public or custom app type before you start coding.
We’ve also improved the navigation within the Partner Dashboard and added a Distribution page, where can manage your Shopify App Store listing or generate your merchant install link. Also, if you’re building your app using Shopify CLI, you’ll be able to copy and paste the commands you need to get started right from the dashboard.
Learn more about app distribution and selecting a distribution method.
June 17, 2022
Selling plans can now specify a fixed cutoff day for a delivery policy API
As of GraphQL Admin API version 2022-07, the SellingPlanAnchorInput
type has an additional optional field.
cutoff_day
represents a fixed cutoff day for each anchor, to be used for monthly and weekly selling plans. Use this method if the cutoff should land on the same day each month.
You can also specify a cutoff using the cutoff
field of the SellingPlanRecurringDeliveryPolicyInput type, which represents a duration. Using cutoff
, the exact cutoff day could be different based on the number of days in the month.
June 15, 2022
Changes to Cart and CartLine on Storefront API API
As part of the GraphQL Storefront API 2022-07 API release, the following are changes to have been made to the Cart
and CartLine
object:
- New
attribute
field with akey
argument -
estimatedCost
is renamed tocost
onCart
. -
estimatedCost
is renamed tocost
onCartLine
. - Add
subtotalAmountEstimated
,totalAmountEstimated
,totalTaxAmountEstimated
,totalDutyAmountEstimated
toCartCost
-
amount
is renamed toamountPerQuantity
onCartLineCost
. -
compareAtAmount
is renamed tocompareAtAmountPerQuantity
onCartLineCost
.
Learn more about the Cart
object on Shopify.dev.
June 13, 2022
New options for app subscription upgrades and downgrades API
As of GraphQL Admin API version 2022-07, app developers can now choose their preferred update behavior when upgrading or downgrading merchant application subscriptions.
By specifying the desired AppSubscriptionReplacementBehavior
type, app developers can control whether the new subscription goes into effect immediately or is deferred to the end of the current subscription's billing cycle. By default, all app subscription changes will continue with the existing behavior.
Learn more about specifying app subscription replacement behavior on Shopify.dev.
June 07, 2022
Action required
Removal of Deprecated Storefront API Checkout Mutations API
In the 2022-01
Storefront API release we removed several deprecated fields. With the 2022-07
release, we're continuing with that effort and removing the following deprecated checkout mutations:
checkoutGiftCardApply
checkoutGiftCardRemove
checkoutEmailUpdate
checkoutDiscountCodeApply
checkoutCustomerAssociate
checkoutCustomerDisassociate
checkoutCompleteWithTokenizedPayment
checkoutCompleteWithTokenizedPaymentV2
-
checkoutShippingAddressUpdate
checkoutCompleteWithCreditCard
checkoutAttributesUpdate
These mutations will continue to be available within the 2022-04
API version until it's sunset in April 2023. For more information on Shopify API versioning, refer to our documentation.
June 07, 2022
Shopify CLI: Preview your theme changes using any theme Tools
When developing a theme using Shopify CLI, you can now preview your local changes using any theme in a store. To specify a theme, run the Shopify CLI theme serve
command with the new -t
or --theme
flag:
shopify theme serve -t my-unpublished-theme
Previously, developers could only preview changes using development themes.
Caution:
Before running shopify theme serve
, pull your remote theme to ensure that any recent changes don't get overwritten by your local development files.
Learn more about previewing your theme using Shopify CLI.
June 01, 2022
Action required
Support for the XML response format is deprecated from the Admin REST API API
Starting in version 2022-07, support for the XML response format and XML payloads in the Admin REST API is removed. Requests expecting an XML response will result in a 404. Requests that send an XML payload will result in a 415.
May 09, 2022
GraphQL Admin API now supports custom content by market API
As of May 9, 2022, you can use the GraphQL Admin API unstable
version to surface custom content to buyers in a specific market, including custom content for a store’s default language.
This feature enables merchants to provide the following kinds of localized and custom content:
- Support showing regional spelling or preferred terms. For example, a “Sweaters” menu title for a United States market, and a “Jumpers” menu title for a United Kingdom market.
- Display promotional content based on the buyer’s market. For example, a custom Thanksgiving announcement bar in October for Canadian buyers.
For more information, refer to examples in our developer documentation for the translationsRegister, translationsRemove, and translatableResource mutations.
May 03, 2022
Support added for compressed GIF images Platform
A much wider range of optimized GIFs, including LZW compression, are now accepted for upload.
To learn more about which image formats Shopify accepts refer to: https://help.shopify.com/en/manual/online-store/images/theme-images#image-formats
April 22, 2022
Subscription apps support Google Pay API
Google Pay payments are now accepted for recurring transactions. For these transactions, the CustomerCreditCard
will have a source of google_pay
.
For more information, refer to Building subscription apps.
April 19, 2022
TranslationsRemove endpoint now supports removing asset translation keys API
The TranslationsRemove
endpoint now supports deleting translations that are stored in asset files.
Learn more about the TranslationsRemove
endpoint.
April 19, 2022
Themes now support 25 sections per template and 50 blocks per section Platform
Based on your feedback, we've updated the number of sections and blocks you can add within a template. You can now add up to 25 sections per template and 50 blocks per section within each template.
This will support use cases like: * Adding more blocks to an FAQ section * Adding multiple profile sections on the About Us page * Creating multiple areas of focus on the homepage * Section and block support for very large collections
You can specify a lower limit with the max_blocks
attribute.
Learn more about section and block limits in our theme architecture documentation.
April 04, 2022
Theme app extensions now support conditional app blocks API
The visibility of an app block, or app embed block, of a theme app extension can now be controlled based on a custom condition.
The condition can be included in the block's schema with the available_if
attribute, and the state of the condition is stored in an app-owned metafield. The metafield can be accessed through the Liquid app
object.
To learn more about conditional app blocks, refer to Theme app extensions framework.
April 04, 2022
New app Liquid object API
A new Liquid app
object is available for use within the context of theme app extensions and app proxies. The app
object can be used to access an app's metafields.
Refer to the app
object documentation for more information.
April 04, 2022
New checkoutChargeAmount field added to Cart object on Storefront API API
As of GraphQL Storefront API version 2022-04, a new checkoutChargeAmount
field has been added to Cart
. It indicates the subtotal amount to be paid for this cart at checkout, not including any deferred payments. This field is currently restricted behind the extend_selling_plans_api
beta flag.
The checkoutChargeAmount
field is similar to the subtotal
field. The subtotal
field indicates the subtotal that will be paid altogether, including any payments that will be made at a later date. The checkoutChargeAmount
is the actual price that will be paid at the time of checkout.
April 01, 2022
New value for the DigitalWallet enum API
As of API version 2022-04, the DigitalWallet
enum has a new value, FACEBOOK_PAY
. This change affects both GraphQL Admin and Storefront APIs.
For more information, refer to the DigitalWallet
enum in the GraphQL Admin API reference or Storefront API reference.
April 01, 2022
New field originTime for subscriptionBillingAttempt API
As of GraphQL Admin API version 2022-04, a new originTime
field has been added to subscriptionBillingAttempt
. Fulfilment intervals for subscriptions are normally calculated using the billing attempt date, but may be overridden with this new field if the billing happens to occur after the current anchor date. This can be done to prevent fulfilment from being pushed to the next anchor date when billing is delayed.
Visit our documentation on Creating a Billing Attempt and Advanced Delivey Behaviours for Subscriptions to learn more about this new field.
April 01, 2022
New SEO field on the Storefront API Collection object API
As of GraphQL Storefront API version 2022-07, the Collection
object has a new field: SEO
. This field returns an SEO
object.
Learn more about this API on Shopify.dev.
April 01, 2022
Action required
New pending mutation in Payments Apps API 2022-04 release API
In the 2022-04
release of the Payments Apps GraphQL API, we're introducing a way to mark payments as pending. To support this, a new mutation can be used in cases where a payment cannot be completed quickly.
New pending mutation
The pending payments feature is now officially available for payments apps. You can mark a payment as pending if the payment can't be completed within a reasonable amount of time. This means buyers won't need to wait for slow transactions to finish before their order is completed. Learn more about pending a payment on Shopify.dev.
Updated pending behaviour in the Admin
While the payment is pending, the actions a merchant can take on the order will be restricted so as to not interfere with the payment that is pending. These restrictions are lifted as soon as the payment is completed or expires. A pending payment will expire if you fail to complete the payment within a reasonable time. Learn more about pending payments in the Shopify Help Center.
Status field deprecation
The status
field on payment, refund, capture, and void session objects is deprecated and replaced by the state
field introduced in the 2022-04 API release. Pending payments are not supported by the status
field and will raise an error.
April 01, 2022
New field deliveryGroups for the cart object API
As of GraphQL Admin API version 2022-04, a new deliveryGroups
connection has been added to cart
. It consists of a group of delivery options available for the line items in the cart, for a specified shipping address. Delivery groups are only available for logged-in customers with a full default address.
Refer to our documentation on cartCreate and customerCreate to learn more about how to create a cart associated with a logged-in customer.
April 01, 2022
Attribute orders to a sales channel API
As of Admin API version 2022-04, two new fields, source_url
and source_identifier
have been added to the Orders and Checkout objects in both the REST and Graph APIs. The source_name
field will also be updated across these APIs for the Orders, Draft Orders and Checkout object. By adding a valid source_name
, the order will be attributed to a list of sales channels found within the partner's dashboard.
More information can be found here
April 01, 2022
Storefront API @inContext directive supports languages API
As of version 2022-04, the @inContext
directive in the Storefront API accepts a language
argument in addition to country
. If the requested language is active for the given country, as configured within the shop's Market settings, then the query will return translated values.
The list of available languages can be accessed with this query:
query Localization @inContext(country: CA, language: FR) {
localization {
# for the current country
availableLanguages {
isoCode
endonymName
}
# and for non-current countries
availableCountries {
isoCode
name
availableLanguages {
isoCode
endonymName
}
}
}
}
If an unsupported language or country is requested via @inContext
, the response will fall back to supported values. In all cases, the actual country and language context will be returned as a response extension.
{
"data": {
"productByHandle": {
"title": "Cat bed",
"variants": {
"edges": [
{
"node": {
"priceV2": {
"amount": "100.0",
"currencyCode": "CAD"
}
}
}
]
}
}
},
"extensions": {
"context": {
"country": "CA",
"language": "EN"
}
}
}
Learn more about supporting multiple languages on storefronts.
April 01, 2022
New value for the FilterType enum API
As of API version 2022-04, the GraphQL Admin API's FilterType
enum has a new value(BOOLEAN
). The BOOLEAN
value is assigned when a filter is based off a boolean
type metafield definition.
For more information, refer to the Filter
object.
April 01, 2022
New menu field in the Storefront API API
As of the 2022-04 version of the Storefront API, you can fetch a navigation menu by handle with the menu
field. The new field returns a Menu
object, and can be used to replicate a merchant's Online Store menus on custom storefronts.
April 01, 2022
Deprecated fields on the Customer object API
The following are changes to the GraphQL Admin API's Customer
object:
- The
orders_count
field is renamed tonumber_of_orders
. - The
total_spent
andtotal_spent_v2
fields are replaced byamount_spent
. - The
has_note
field is removed. Thenote
field still exists on thecustomer
. - The
has_timeline_comment
field is removed. To query for comments on the timeline, use the events connection and aquery
argument containingverb:comment
, or look for aCommentEvent
in the__typename
of events.
For more information, refer to the Customer
object.
April 01, 2022
New email marketing consent for customers and deprecated fields API
The accepts marketing and related fields were used to indicate if a customer subscribed to all marketing channels. In 2021, we started separating marketing consent into SMS and email channels by introducing SMS marketing consent.
In API version 2022-04, we’re completing that split by deprecating the accepts marketing fields and replacing them with email marketing consent fields. You’ll need to update your apps to use the SMS and email marketing consent fields to send the opt-in level, consent state and the time at which the consent was granted, instead of a simple Boolean to express the marketing consent of customers.
As of GraphQL Admin API version 2022-04, we're deprecating the acceptsMarketing
, acceptsMarketingUpdatedAt
and marketingOptInLevel
fields on the Customer
object and CustomerInput
input object.
The deprecated fields are replaced by the following new fields, that you can access using the emailMarketingConsent
field on the CustomerInput
object:
marketingState
consentUpdatedAt
marketingOptInLevel
For more information, refer to the CustomerInput
input object on Shopify.dev.
As of REST Admin API version 2022-04, we're deprecating the accepts_marketing
, accepts_marketing_updated_at
and marketing_opt_in_level
fields on the Customer
resource.
The deprecated fields are replaced by the following properties on the new email_marketing_consent
field for the Customer
resource:
state
consent_updated_at
opt_in_level
For more information, refer to the Customer
resource on Shopify.dev.
April 01, 2022
New checkoutCharge field added to the Storefront API sellingPlan object API
As of GraphQL Admin API version 2022-04, a new checkoutCharge
field has been added to sellingPlan
. It consists of a charge type (either percentage
or price
), and an amount, indicating how much of the product's cost will be charged at the time of checkout. This field is currently restricted behind the extend_selling_plans_api
beta flag.
April 01, 2022
New: Markets API API
After the release of Shopify Markets, we are following up with the Markets API in version 2022-04. The API allows you to create, update, and delete markets and their settings.
Shopify Markets unlocks the ability to create high-performing, localized buyer experiences by allowing merchants to specify the domain, language, currency and price that international buyers see when browsing a merchant's storefront.
You can learn more about the Markets API on shopify.dev.
April 01, 2022
New fulfillment information API fields for fulfill by and expected delivery time API
GraphQL Admin API
As of GraphQL Admin API version 2022-04, we're adding the fulfillBy
to the FulfillmentOrder
object. The field represents the latest date and time when all items in the fulfillment order need to be fulfilled.
We're also adding the maxDeliveryDateTime
and minDeliveryDateTime
fields to the DeliveryMethod
object. When combined, they represent a range of time when the delivery is expected to be completed.
Learn more about FulfillmentOrder
and DeliveryMethod
objects.
REST Admin API
As of REST Admin API version 2022-04, the following properties are added to the FulfillmentOrder
resource:
fulfill_by
-
delivery_method.max_delivery_date_time
-
delivery_method.min_delivery_date_time
Learn more about the FulfillmentOrder
resource.
April 01, 2022
Enhancements to pagination for GraphQL connections API
In addition to edges
, GraphQL connections now have a nodes
field. When you only query node
on edges
, you can simplify the query.
For example:
{ connection { edges { node { fields } } }
can be simplified to:
{ connection { nodes { fields } } }
PageInfo
has been expanded as well to include startCursor
and endCursor
.
When these fields are used in tandem, it can simplify the shape of return data for pagination.
Previous query format:
{ connection { edges { cursor node { fields } } pageInfo { hasNextPage } } }
Improved query format:
{ connection { nodes { fields } pageInfo { hasNextPage endCursor } } }
April 01, 2022
New app billing discounts and app trial extensions Shopify App Store
We are introducing new flexible ways for app partners to offer merchants incentives for app subscriptions.
Recurring App Discounts
As of GraphQL Admin API version 2022-04, app developers can now offer limited time discounts on recurring app charges through the Billing API. Partners may define a percentage or fixed amount discount that will be applied to a designated number of billing cycles (e.g. 20% of 6 billing cycles). This will enable app partners to create introductory offers for new merchants.
Learn more about app billing discounts on Shopify.dev.
App Trial Extensions
App developers can increase the number of trial days offered to a recurring app charge by using the new appSubscriptionTrialExtend offered without merchants accepting a new app subscription. This will enable developers to provide new merchants additional time to trial products. App trial extension is currently available in the unstable version of the GraphQL Admin API.
Learn more about trial extensions on Shopify.dev.
April 01, 2022
Providing app credits in the appSubscriptionCancel mutation API
As of GraphQL Admin API version 2022-04, app partners can issue prorated credits for the unused portion of the app subscription when a recurring app charge is cancelled. This enables developers to automatically provide app credits to merchants when they uninstall an app or cancel a subscription, and reduce support requests to app partners for refund requests.
For more information, refer to the appSubscriptionCancel mutation.
April 01, 2022
new checkoutChargeAmount and remainingBalanceChargeAmount fields on Storefront API API
As of GraphQL Admin API version 2022-04, checkoutChargeAmount
and remainingBalanceChargeAmount
fields have been added to sellingPlanAllocation
. These fields indicate how much of a product variant's price must be paid upfront, and how much must be paid at a later date. This field is currently restricted behind the extend_selling_plans_api
beta flag.
April 01, 2022
Videos in Files and Metafields API
You can now create videos and transcode them to multiple formats, using the FileCreate mutation.
You can also attach videos to metafields using file_reference. These videos are also available using the Storefront API.
April 01, 2022
Action required
Deprecating countries field on PriceListContextRuleInput API
With the launch of the Markets API as of version 2022-04, price lists are no longer associated with a country, but with a market. We've deprecated the countries
field on the PriceListContextRuleInput
object and replaced it with a new field called marketId
.
For more information, refer to the PriceListContextRuleInput
object.
April 01, 2022
App-owned Metafields API
As of GraphQL Admin API version 2022-04, a new owner type ApiPermission
is now available for metafields. A metafield with this permission type will only be readable and writable by the app that owns the metafield.
March 31, 2022
Updates to error codes for translationsRegister API
Although the INVALID_LOCALE_FOR_SHOP
error code was introduced in the 2020-07 version, it has never been used to represent a locale
field related error when calling the translationsRegister
mutation.
As of GraphQL Admin API version 2022-04, the INVALID_LOCALE_FOR_SHOP
error code is used to represent all errors related to the locale field
on the Translation
object.
Previous verions will still use the INVALID_CODE
error code to represent errors related to the locale field.
March 31, 2022
Online Store 2.0: Two-way sync support on Shopify CLI Tools
Theme developers can now use the Shopify CLI theme serve
command with the new --theme-editor-sync
flag. When active, theme editor changes are automatically synced back to the local development files.
Learn more about Shopify CLI theme commands.
March 24, 2022
CI/CD support for scripts, extensions Tools
Developers can now programmatically push their scripts and extensions to Shopify from their CI/CD pipelines with CLI authentication tokens.
For more information on how to set up CI/CD for your scripts and extensions, visit our developer documentation.
March 23, 2022
New theme editor setting types: product list and collection list Themes
Two new input setting types have been added to the theme editor: product_list
and collection_list
. They allow merchants to quickly create curated, ordered and paginatable lists of products and collections.
Learn more about product_list and collection_list on shopify.dev.
March 21, 2022
Changes to metafield definition error codes API
As of GraphQL Admin API version 2022-04, an error returns when a metafield definition is created with invalid characters in either the key
or the namespace
fields. The key
and namespace
fields can contain only alphanumeric characters, hyphens, and underscores.
March 15, 2022
New fields on App and AccessScope API
As of GraphQL Admin API version 2022-04, new fields on the App resource are available. These include previouslyInstalled
, webhookApiVersion
, developerType
, requestedAccessScopes
, availableAccessScopes
, and publicCategory
. publicCategory
introduces a new enum AppPublicCategory
which represents the distribution pattern the app uses.
March 14, 2022
App store listings now have additional Partner details Shopify App Store
As of March 14, 2022, app listing pages will include additional details about Partners, such as how many apps they have on the store, the average app rating (for all apps combined), and how long they’ve developed for Shopify. Some of this information is already displayed on the app developer pages, but we’re adding it to the app listing page so that merchants have the decision-making details they need in a single place.
See your app listing page under the Support tab for more details.
March 03, 2022
Theme app extensions now support locales directory API
As of today, apps will be able to store translation strings in a centralized locales folder accessible across all app blocks and app embeds within a theme app extension.
For more information about the locales directory, refer to the theme app extension framework file structure.
February 24, 2022
Scheduled Publishing to Channels is now Generally Available API
We’ve just released Product Scheduled Publishing to Channels, allowing merchants to schedule products to be published to a sales channel at a specific datetime.
For channels that have product validation workflows, you’ll need to integrate with scheduled product publishing so that your channel can validate products before their scheduled publication datetime.
Complete this form to sign your channel up for scheduled publishing.
For more information, refer to scheduled publishing.
February 18, 2022
Display duties with Liquid using order.total_duties
Themes
A new attribute (total_duties
) is now available on the order
object. order.total_duties
attribute returns the sum of all duties applied to line items in the order. order.total_duties
returns nil
if duties are not applicable to the order.
For more information, refer to order.total_duties.
February 17, 2022
Changes to Theme Translatable Content Keys API
As of February 17th, newly-created themes will generate translatable content keys for content in JSON templates in an altered format. Translations originating outside of JSON templates, such as those stored in the locales/
folder of a theme, are not affected by this change.
Old: section.Template—123456__section_id.block_id.setting_id
New: section.product.ext.json.section_id.block_id.setting_id:abc123
We consider the precise format of these keys to be an implementation detail, but try to ensure that the keys remain consistent for a resource over time. Given that, these new keys will only be generated for themes that are uploaded or duplicated after 12:00 EST February 17th.
More information about our translation API is available in our API documentation.
February 15, 2022
Shopify Markets is now Generally Available Platform
We’ve just released Shopify Markets, which helps merchants sell their products to customers in different countries from a single Shopify store. Merchants can also create unique experiences for their global customers from the Shopify Markets admin's Settings. Apps and themes must use the routes object to support subfolders with locale-aware URLs, and should also use the country object (instead of currency) if they provide storefront switchers.
Shopify Markets is now available for all merchants, with some exceptions. All development stores now have access to Shopify Markets.
For more information, refer to Shopify Markets. Developer considerations for supporting multiple currencies and languages can be found here.
February 14, 2022
Cart change REST API now supports changing selling plan API
It’s now possible to upsell subscriptions in cart in the online store. We added a new field, selling_plan
, to the /cart/change.js
endpoint in the AJAX REST API to support adding, updating, and removing the selling plan.
Learn more about supporting subcriptions on shopify.dev.