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.
RSS updatesThere are no entries for your filter criteria.
May 17, 2023
duplicateResolutionMode added to fileCreate API
As of 2023-07, you can use the new duplicateResolutionMode on the fileCreate mutation to control how duplicate filenames are handled.
Learn more about duplicateResolutionMode on Shopify.dev.
May 15, 2023
Action required
Partner email verification Platform
Starting May 15, we will begin enforcing partner email verification to keep the Shopify App Store safe and secure and to better serve our partner community.
Account owners, please use the banner in the partner dashboard to verify your email as soon as possible avoid restrictions to your dashboard access.
May 15, 2023
metafieldsSet support for MediaImage API
As of 2023-07, you can use the metafieldsSet mutation to set metafields on images via MediaImage GIDs.
Learn more about metafieldsSet on Shopify.dev.
May 15, 2023
Add scanner support to POS UI Extensions API
As of May 15, camera and hardware scanning is supported for POS UI Extensions. Available for POS UI Extensions version 1.1.2 and POS app version 8.9.0.
CameraScanner This new component utilizes the device's camera for scanning. The CameraScanner provides a live feed with guidance markers to help users align the camera with barcodes.
Scanner API This new API allows UI extensions to access scanner data and available scanning sources. The API also introduces support for hardware scanners that have external or embeddeed scanning capabilities.
May 12, 2023
Adding read and write permissions for Dependabot secrets to Shopify’s GitHub app Tools
Shopify’s GitHub app now requests read and write permissions for Dependabot secrets. This update supports improvements to the developer experience for Hydrogen headless storefronts hosted on Oxygen.
Currently, deployments to Oxygen are triggered by pushes or merges to a GitHub repo. However, Dependabot, GitHub’s dependency management service, doesn’t have access to the API tokens required to create a deployment. By adding these new permissions, Dependabot will be able to trigger preview deployments on Oxygen when creating pull requests that bump package versions. This change will let developers more quickly validate that automated updates can be safely merged.
Learn more about Shopify’s GitHub integration.
May 10, 2023
Improve your themes with theme check in the code editor Themes
As of today, you can prevent Liquid errors and improve the quality of your themes with theme check in the code editor. This new feature identifies and warns you about potential issues in your code, so you can fix them before they affect the performance of your store.
Learn more about the code editor on Shopify.dev.
May 09, 2023
Action required
Changes to Merchant Asset URLs API
Update: In the coming weeks we'll start serving some store assets (e.g. images, JS or CSS) from a shop’s store domain rather than a Shopify CDN domain. Certain assets will continue to use the old URL format cdn.shopify.com/…
, while the rest will be converted to a new URL format: shop.example.com/cdn/…
. The new URL format can be seen in action on the demo store www.snowdevil.ca. The old cdn.shopify.com/…
URL format will continue to work indefinitely.
The new format will be returned by liquid tags and will be present in Shopify-rendered storefront HTML, but the old format will continue to be used in all API responses. This new asset delivery approach is not used on headless shops, which will continue to use cdn.shopify.com/…
.
The domain used in the new URL format is dependent on the request context: it may be the store’s permanent myshopify.com
domain or a custom domain depending on which one a buyer visits. Code that depends on the old URL format may need to be updated to support both formats.
In addition, new images associated with products now use the /files
path format rather than the previous /products
. Previously uploaded product images will continue to use the /products
path.
These changes are being made to provide a variety of benefits to merchants:
- Improved page load times on storefronts to provide a better buyer experience and improve conversion rate. Improvements to page load speed are potentially on the order of hundreds of milliseconds.
- Improved security: because we don't need to allow for cross-origin assets from our CDN, we can use more restrictive content security policies (CSP) and cross-origin resource sharing (CORS) policies.
- Less Shopify branding on merchant domains.
Learn more about the Shopify CDN and liquid filters on Shopify.dev
Action Required:
- Ensure that any app and theme code is free from hard-coded assumptions on the old URL format
May 09, 2023
Increased number of dynamic sources available within templates Themes
Based on your feedback, we've updated the number of dynamic sources you can add within an online store template. You can now add up to 100 dynamic sources per template, and 50 per static section.
Specifically, we now support:
- 100 Dynamic sources in a JSON template
- 100 Dynamic sources in general theme settings
- 100 Dynamic sources in a section group
- 50 Dynamic sources in a single setting
- 50 Dynamic sources in a static section
Updated values and more info can be found in Shopify dev docs
May 08, 2023
Shopify Functions input limit updates API
As of May 8, you can access metafield values up to 10,000 bytes in Shopify Functions input queries, so that you can store more merchant configuration for your function.
The overall input JSON size for Shopify Functions is constrained to 64,000 bytes.
Learn more about execution limitations for Shopify Functions on Shopify.dev.
May 08, 2023
Introducing POS UI extensions API
New POS UI extensions available to app developers
POS UI extensions are available for developers to start building apps for Shopify POS. Improve the efficiency of a current extension or build custom functionality in the POS smart grid. POS UI extensions provide developers with access to numerous components and API's required to develop extensions that feel native to Shopify POS with faster performance. This technology will transform POS extensions for an improved merchant experience.
Extension Points Two extension points are available that allow for the rendering of different components. The Tile which can customize the functionality of the app's smart grid tile and the Modal a full-screen modal that presents on top of the smart grid.
Components Build extensions using the UI Extensions library that utilize interface elements and behaviors that mirror the look at feel of the POS experience. These elements are rendered natively, providing the performance and accessibility inherent to a native app.
To learn more about building apps for POS, please review our developer documentation.
May 02, 2023
Product media and files unification API
As of this week, we've brought product media together with the broader file management system. You can access the file management system from Shopify admin by going to Content>Files
This means that product media is now available within the files section within content in admin. As part of the new update, we’re introducing a reference feature that enables merchants to trace the usage of files in their storefronts. This feature also allows merchants to use references as search parameters, for example a search that only lists files used in product media. Additionally, we’re also launching a new file selector in the online store editor that allows merchants to save views, filter within the selector, and toggle between different types of media as required, all through a new modal design.
Learn more about product media at Shopify.dev. You can also learn more about the Files API at Shopify.dev
May 01, 2023
Changes to support requests for app charge refunds Platform
As of May 3, 2023, merchants will be required to contact partners directly if they want to discuss or request a refund for an app. When a merchant contacts Shopify to request a refund for an app charge, Shopify Support will no longer reach out to partners on behalf of the merchant to facilitate their request.
This change will streamline the refund process, as refunds are at the partners’ discretion and partners have the ability to issue most refunds themselves. The exception is still reversals to pending charges. In this case, Shopify highly encourages partners to issue application credits, which Shopify Support can then apply to the invoice.
What’s not changing?
- Other types of facilitated third party requests
- Processing of reversals for pending charges once approved by the partner
- Follow-ups on unresolved inquires from merchants
- Assistance with bulk refunds, refunds over $1,000, and refunds older than 12 months
Please contact partner support with any questions about these changes.
April 28, 2023
Update bytes in-place using fileUpdate API
As of 2023-07, you can use the fileUpdateInput
to provide an originalSource which will be used to update the bytes of a file. Passing originalSource when updating is supported media images and generic files.
Using this functionality makes it easy to do an in-place update of an existing file.
April 26, 2023
New updates to checkout extensibility API
New Checkout UI Components
DatePicker will help you build customizations to select specific delivery dates in checkout.
Disclosure will help with UX patterns that progressively disclose information, like the long list of line items in a bundle.
Checkout Branding Update
Checkout branding now supports custom fonts. Checkout, accounts, and UI extensions inherit these fonts making experiences consistent across surfaces.
April 26, 2023
Increasing search relevance with behavioral data in the Shopify App Store Shopify App Store
As of April 26, Shopify App Store’s search algorithm folds in even more data on how merchants interact with results after they search.
In other words, apps that merchants find most relevant, given what they’re searching for, will rank higher overall. While term matching will still inform results, this update will reduce the impact of keyword stuffing.
Learn more about search on our blog.
April 20, 2023
Sale attribution edits now can be subscribed via Orders/updated webhook API
As of API version 2023-07, you can now subscribe to the orders/updated webhook to be notified of any sale attribution edits to an order. When a staff attribution edit is made on POS, the orders/updated webhook will fire. The payload will include a new attributed_staffs field under line_items. This new field will reflect the new attributions on the order after the edit.
"lineitems": [ { "id":111, "attributedstaffs": [ { "id": "gid://shopify/StaffMember/123", "quantity": 1 } ] } ]
A user can edit the staff attributions on multiple line items at once on POS. In this case, the webhook payload could include multiple updated line items with different attributions applied to them.
Note that the payload in the orders/create webhook will also be updated to include attributed_staffs.
Learn more about webhook on Shopify.dev.
April 18, 2023
Update on the speed test app listing highlight Shopify App Store
As of April 18, we're temporarily suspending Speed tested as an app listing highlight. We will still measure an app’s impact on store speed once it has applied for Built for Shopify status.
We are making this change while we invest in better tooling and will keep app developers posted on plans to resume incentives in this area, as impact on store speed remains incredibly important to merchants.
Learn more about storefront performance on Shopify.dev
April 17, 2023
Action required
Deprecating available, incoming and deactivationAlertHtml fields on InventoryLevel API
In the GraphQL Admin API, we're deprecating some fields on the InventoryLevel
.
The following fields are deprecated:
- instead of
available
, usequantities(names:["available"]){ name quantity }
instead. - instead of
incoming
, usequantities(names:["incoming"]){ name quantity }
instead. - instead of
deactivationAlertHtml
, usedeactivationAlert
instead.
The quantities
field supports all the new inventory quantity names. You can still get available
and incoming
from quantities
by specifying those as the names.
Learn more about inventoryLevel
on Shopify.dev as well as inventory states on Shopify.dev.
April 17, 2023
Action required
Deprecating mutations inventoryAdjustQuantity and inventoryBulkAdjustQuantityAtLocation API
In the GraphQL Admin API, we're deprecating the inventoryAdjustQuantity
and inventoryBulkAdjustQuantityAtLocation
mutations.
Instead, you can use the new inventoryAdjustQuantities
or inventoryMoveQuantities
mutations instead.
The inventoryAdjustQuantities
mutation supports more inventory quantity names as well as setting a reason. The mutations we're deprecating only supported setting available quantities and didn't allow you to set a reason for the adjustment.
Learn more about inventoryAdjustQuantities
on Shopify.dev or on inventory states on Shopify.dev.
April 14, 2023
Theme app extension app block deep linking Tools
As of April 14, we have enabled deep linking to theme app blocks so that merchants can easily preview app functionality in their theme.
Learn more about deep links to app blocks.
April 13, 2023
New commerce primitives for development stores test data Tools
We've added new commerce primitives such as gift cards, selling plans, and metafields to development stores populated with test data.
To speed up the development and testing process, you can create a development store that's populated with test data generated by Shopify.
Review all of the objects, configurations, and relationships that are included in the development store test data set on Shopify.dev
April 10, 2023
Write Shopify Functions in JavaScript API
Shopify Functions written in JavaScript can now be deployed in production. Going forward Rust and JavaScript will be our first-class languages for Shopify Functions. However, you can still write Shopify Functions in any WebAssembly-supported language that meets our requirements.
Learn more about JavaScript Shopify Functions here
April 01, 2023
New billingAddress field on the Storefront API Order object API
As of GraphQL Storefront API version 2023-04, the Order
object has a new field: billingAddress
. This field returns a mailingAddress
object for the address associated with the payment method.
Learn more about the Order
object on Shopify.dev.
April 01, 2023
Add Metafields to Cart API API
As of GraphQL Storefront API Version 2023-04
you can use Metafields with Carts! Metafields can be added during Cart creation, they can be queried, updated, and deleted.
Learn more: * Create Cart Metafields * Query Cart Metafields * Update Cart Metafields * Delete Cart Metafields
April 01, 2023
Server Pixels Limited Release API
As of 2023-04, select partners can use Server Pixels to consume customer events on the server-side. These new mutations are available to those partners:
April 01, 2023
Introduce onsite credit card support for payments apps API
As of version 2023-04
, payments apps will have support for onsite credit card payments through new types introduced to the GraphQL Payments Apps API.
Changes to support on-site credit card processing are as follows:
- New rejection codes are now available in the
paymentSessionReject
GraphQL mutation for credit card payments apps - A new error code is introduced in the
paymentSessionPending
GraphQL mutation
April 01, 2023
Added source_location
field to FulfillmentOrdersMove
webhook payload
API
As of API version 2023-04, FulfillmentOrdersMove
webhook payload is extended source_location
field.
The assignedLocation of the original_fulfillment_order
may be changed by the move operation. Therefore, if you need to determine the originally assigned location, you should refer to the source_location
field.
Learn more about fulfillment order move in the FulfillmentOrdersMove webhook, FulfillmentOrdersMove GraphQL mutation and Moves a fulfillment order to a new location REST endpoint documentation pages.
April 01, 2023
Action required
Deprecating PublishedTranslation
GraphQL type
API
As of 2023-04
, we are deprecating the PublishedTranslation
graphQL type in the admin API. Use the Translation
graphQL type instead.
The Translation
graphQL type contains more fields; outdated
, updatedAt
and market
.
To get up to date, make sure you no longer query the marketId
field on these objects and query using the market
field instead.
Learn more about Translation
on Shopify.dev.
April 01, 2023
Action required
ChangingCartLine
from an Object
to an Interface
API
As part of the GraphQL Storefront API 2023-04 API release, we are creating BaseCartLine
as an interface to CartLine
and we are updating CartLineConnection
to BaseCartLineConnection
.
Learn more about the Cart
object on Shopify.dev.
April 01, 2023
Filter orders by return status API
You can now filter orders by their return status.
The return_status
filter is available on the orders connection. This status corresponds to the return status merchants see in the orders page.
Learn more about the order's return status on Shopify.dev.
Learn more about return statuses on the help center.
April 01, 2023
Update Access Scope for Publishing and Unpublishing Mutations to Current Channel API
As of version 2023-04, we're deprecating the requirement of writeproductslistings
access scope for the mutations publishableUnpublishToCurrentChannel
and publishablePublishToCurrentChannel
. Use the access scope writepublications
instead.
You can provide this new access scope to your third party app or any stuff member through the admin as it is regularly being done for any other access scope. This change will provide a more restricted access to call these mutations.
April 01, 2023
Introducing the new Customer Merge API API
As of GraphQL Admin API version 2023-04, you can now use the Customer Merge API to combine two separate customer profiles with certain non-blocking criteria. You can use the new mutations and queries to:
Additionally, you can check whether a customer can be merged with another customer using the new Customer.mergeable field. This field is also available on the CustomerSegmentMember API CustomerSegmentMember. mergeable.
You can learn more about merging customer profiles on Shopify Help Center.
April 01, 2023
productVariantsBulkUpdate mutation returns data along with errors API
In the Admin GraphQL API version 2023-04, the productVariantsBulkUpdate
mutation will return product
and productVariants
data even when errors are present. Previously, the mutation would always return null
for the product
and productVariants
data.
Learn more about the mutation here.
April 01, 2023
New selected_delivery_option
error codes in cart
API
We've added the error codes INVALID_DELIVERY_GROUP
and INVALID_DELIVERY_OPTION
for cartSelectedDeliveryOptionsUpdate
mutation , allowing you to get descriptive error codes when GraphQL returns invalid delivery group id or invalid delivery options input.
April 01, 2023
Generate targeted product recommendations with the new ProductRecommendationIntent
type
API
As of the 2023-04 API version of the Storefront API, the ProductRecommendations query will accept an optional intent
argument. Additionally, a new ProductRecommendationIntent
will be introduced as a GraphQL Enum Type, defining the supported product recommendation intents. By default, the API will return RELATED
recommendations for backward compatibility.
April 01, 2023
Release of the subscriptionContractAtomicCreate and subscriptionContractProductUpdate mutations API
As of the 2023-04 release of the GraphQL Admin API, you can create a subscription contract in a single operation with the subscriptionContractAtomicCreate
mutation.
You can also replace a retired product by a new one, or update the price of a product in a subscription contract in one GraphQL call to the subscriptonContractProductUpdate
mutation.
More information on Bulk Operations can be found here
April 01, 2023
Action required
Removal of deprecated status
field in Payments Apps API 2023-04 release
API
As of 2023-04
GraphQL Payments Apps API version, we are removing the status
field as it was deprecated since 2022-04
version in favour of the state
field of the following objects returned by our GraphQL mutations:
To get up to date, make sure you no longer query the status
field on these objects and use state
instead.
Learn more about payments apps on Shopify.dev.
April 01, 2023
Set Metafield values for Locations API
As of GraphQL Admin API Version 2023-04
you can use the mutations locationAdd
and locationEdit
to set Metafield values for locations.
As of Storefront API Version 2023-04
, you can query metafields belonging to a location using the Location query object.
You can use Metafields to store aditional information for Locations.
Learn more about { Metafields } on Shopify.dev.
April 01, 2023
Accept customer address id as input for delivery address preferences in SFAPI Cart API
As of 2023-04, you can pass Customer address id as an input for CartBuyerIdentity.deliveryAddressPreferences when creating or updating carts for authenticated customers.
You can learn more about the Cart API references in here.
April 01, 2023
Web Pixels can be queried without specifying an ID API
In the Admin API version 2023-04, you can now query your web pixels installed on an online store without having to provide a Web Pixel ID.
API: https://shopify.dev/docs/api/admin-graphql/2023-04/queries/webPixel
Learn more about web pixels.
April 01, 2023
Update validations of a metafield definition API
As of GraphQL Admin API Version 2023-04
you can use the field MetafieldDefintionInput.validations
to change the validations of a metafield definition.
Also, as of GraphQL Admin API Version 2023-04
, you can query the field
MetafieldDefinitionUpdatePayload.validationJob
to get the details of the job running to validate existing metafields for the metafield definition.
Learn more about { Metafields } on Shopify.dev.
April 01, 2023
Adding additional filtering to /assigned_fulfillment_orders
REST endpoint
API
As of API version 2023-04
, you can retrieve a subset of fulfillment orders which are assigned to locations owned by the app performing the request but have not been requested for fulfillment so far.
The assignment_status
query parameter in the [/assignedfulfillmentorders.json]((https://shopify.dev/docs/api/admin-rest/latest/resources/assignedfulfillmentorder#get-assigned-fulfillment-orders) endpoint can now accept a value of fulfillment_unsubmitted
for filtering in addition to the existing fulfillment_requested
, fulfillment_accepted
, and cancellation_requested
filter values.
Learn more about retrieving assigned fulfillment orders as a fulfillment service on shopify.dev.
April 01, 2023
Action required
Updates to FulfillmentOrderLineItemsPreparedForPickupUserErrorCode resource API
As of the 2023-04 API version of the Admin API, the FulfillmentOrderLineItemsPreparedForPickupUserErrorCode GraphQL object will have the following breaking changes:
- The FULFILLMENT_ORDER_CHANGED
error code will be removed
- The UNABLE_TO_PREPARE_QUANTITY
error code will be added
April 01, 2023
Update ShopifyQL parse error codes API
As of 2023-04, parse error codes enum has been updated to remove stale codes as well as add new ones.
Added
ParseErrorCode.INVALID_DATE_RANGE
ParseErrorCode.EXCESS_BACKFILL_DIMENSIONS
ParseErrorCode.BACKFILL_DATE_RANGE_NOT_FOUND
ParseErrorCode.COMPARE_TO_MISSING_PERIOD
ParseErrorCode.EXCESS_DIMENSIONS
ParseErrorCode.SYNTAX_FAILED_PREDICATE
Removed
ParseErrorCode.VISUALIZE_TYPE_NOT_FOUND
ParseErrorCode.FUNCTION_MODIFIER_INVALID
ParseErrorCode.VISUALIZE_BY_OR_OVER_NOT_FOUND
ParseErrorCode.VISUALIZE_CONTAINS_BY_AND_OVER
ParseErrorCode.BINARY_EXPRESSION_INCOMPATIBLE_TYPES
ParseErrorCode.VISUALIZE_EXCESS_PROJECTIONS_ALPHA
ParseErrorCode.EXCESS_GROUP_BY_ALL
ParseErrorCode.GROUP_BY_ALL_DATE_RANGE_NOT_FOUND
ParseErrorCode.COMPARE_TO_WITHOUT_DURING
ParseErrorCode.GROUP_BY_EXCESS_PROJECTIONS
See the full list of parse error codes on Shopify.dev
April 01, 2023
Adds comparedTo
field to ShopifyQL query response
API
As of 2023-04, you can now use comparedTo
on comparison columns from ShopifyqlResponse
to indicate the column to compare to.
Learn more about COMPARE TO
ShopifyQL queries on Shopify.dev
April 01, 2023
Releasing new Catalogs APIs to manage pricing and product publishing for different customers API
As of API version 2023-04, you can use the Catalogs API to create a set of rules that determine the available products and their prices in different customer contexts. The Catalogs API lets you link Shopify Markets and B2B primitives to Publications and PriceLists to customize product offerings for different audiences. The same APIs also allow you to manage product publishing for sales channels.
To learn more about Catalogs API, read B2B Catalogs and Catalogs for Markets.
March 31, 2023
GraphQL Admin API now supports creating app charges using the merchant's billing currency API
As of the 2023-04 release of the GraphQL Admin API, the Billing API will allow creating app charges using currencies that match the merchant's local billing currency.
Previously, app charges could only be created using USD and were converted to the merchant's local currency using the exchange rate at the time the invoice is issued. By creating app charges in the merchant's billing currency, app developers will allow merchants to better budget their app spend without being exposed to currency exchange rate fluctuations.
You can use the shopBillingPreferences query to retrieve the merchant's local billing currency, then pass in the currency value as input to the existing GraphQL Billing APIs.
March 30, 2023
ExchangeV2s field is available behind beta flag on order graphql API
As of 2023-07 version, you can use the Order APIs exchangeV2
field to get a better exchange (an exchangeV2
object value).
This will help ERP partners to properly integrate optimal exchange values.
March 28, 2023
Update to Google Analytics 4 before July 2023 Shopify App Store
Google is sunsetting Universal Analytics in July 2023, and replacing it with Google Analytics 4 (GA4) which is Google's next-generation measurement solution. Universal Analytics will continue to collect data until its sunset in July 2023, and data will remain accessible for at least 6 months afterwards.
Visit Shopify.dev for next steps to migrate your app listing tracking from Universal Analytics to the new Google Analytics 4 or to set up tracking for the first time.
March 24, 2023
Dynamic sources for blogs and articles now live Themes
You can now use dynamic sources on blogs and articles. This means that merchants can now connect theme files to their metafields and metaobjects when working with the blog and article resources. Previously, this was only possible when working with product, collection, and page resources.
Learn more about datasources on Shopify.dev