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.
October 19, 2023
[Developer Preview] Mobile Checkout SDK for iOS Tools
Shopify’s Mobile Checkout SDKs enables you to provide the world’s highest converting, customizable, one-page checkout directly within a mobile app. The presented experience is a fully-featured checkout that preserves all of the store customizations: Checkout UI extensions, Scripts, Functions, Web Pixels, and more. It also provides platform idiomatic defaults such as support for light and dark mode, and convenient APIs to embed, customize, and follow the lifecycle of the checkout experience.
Today we are launching Developer Preview of the Checkout SDK for iOS, with our Android SDK coming very soon. The SDKs are open-source and ready for you start building. During this developer preview, the APIs are subject to change as we adapt to feedback.
More information can be found in our blog post as well as in the Github repository and all feedback is welcome here.
October 13, 2023
[Developer Preview] Cart Transform API - Pricing bundles per component & additional customizations API
Previously, the Cart Transform API allowed percentage based adjustments to the cost of a bundle when using expand
operations. The (weight price algorithm) (http://shopify.dev/docs/api/functions/reference/cart-transform/developer-preview#/weight-
price-algorithm) would then allocate the bundle price to its component lines based on the weight of each component line (unit price * quantity).
With this release, expand
operations will also allow you to set fixed prices on each component of the bundle, resulting in a bundle price that is the sum of each component. Additionally, the expand
operation will now allow you to define a custom title and image for each parent line item.
This gives you more control over bundle pricing and enables bundles to be used for add-on products.
More information can be found in the Cart Transform API developer preview documentation.
October 11, 2023
Display Business Imprint on Shopify's App Store and Theme Store Shopify App Store
Starting October 11, 2023, Shopify's App Store and Theme Store will display the partner's geographical address and contact information in order to be in compliance with Business Imprint legal requirements. All partners should ensure their information is up to date.
Learn more about Business Imprint in the Shopify Help Center.
October 10, 2023
App Store listings are now automatically translated into 8 languages Shopify App Store
Now every English-language primary app listing is automatically translated into the 8 languages listed below, unless the partner provides their own translated listings for any of those languages.
- Brazilian Portuguese
- Danish
- Dutch
- French
- German
- Simplified Chinese
- Spanish
- Swedish
This will improve the experience of our international merchants, and significantly boost app installs in non-English speaking markets (by as much as 20%). To maximize the effect, complement translated listings with translating your app’s UI.
Learn more about automated listing translation on Shopify.dev.
October 04, 2023
Shopify Flow - Use dev command to preview tasks and use more complex data in triggers Platform
With this update, the dev
command is now supported for Flow extensions, you can use more complex data in your triggers, and Flow in the CLI is generally available.
Flow in the CLI
Flow in the Shopify CLI is now generally available. We still welcome feedback at flow-connectors-dev@shopify.com
Previously, Flow actions and triggers were defined in the partner dashboard. As Shopify CLI adoption has expanded, this meant that you needed to manage and deploy your Flow extensions separately from the rest of your app.
Going forward, you will now create your Flow tasks and actions through the CLI. You follow these guides for how to create both triggers and actions through the CLI. In addition, you can migrate your existing tasks to be CLI-managed, unifying your code. For more details on what is possible, you can also consult Flow’s reference guide for triggers and actions.
Dev command
You can now also use the dev
command to preview Flow tasks in your development store. See our docs for triggers and actions.
Complex data in triggers
Finally, like actions, Flow triggers now support more complex data structures, like lists and objects, making it easier than ever to build your triggers in Flow.
Requirements
To create Flow extensions using the CLI, version 3.48 or higher is required. To use dev
version 3.49 or higher is required.
October 02, 2023
Shopify Function configurations now use target identifiers API
As of API version 2023-10 and Shopify CLI 3.49.5, Shopify Functions configuration now uses targets to identify backend extensibility points in Shopify, so that configuring a function is now more like configuring other app extensions.
All Shopify Function APIs now support [targeting]
configuration, with an extension target mapping to a specific WebAssembly export.
[[extensions.targeting]]
target = "purchase.validation.run"
input_query = "src/run.graphql"
export = "run"
Existing functions without targeting
specified will continue to execute and deploy without any changes required. Use of targeting
requires upgrading Shopify CLI to 3.49.4 or higher.
For more information, you can reference:
October 02, 2023
New fields available for Shopify Functions input queries API
As of API version 2023-10, Shopify Functions APIs now include the following values in their input query GraphQL schema, so that you can do more with Functions!
- A
shop
field is now available on the input root (example), which includes:- A
localTime
field, which provides the current date and allows testing the current time and date relative to provided arguments. (example) - A
metafield
field, which provides access to shop-level metafields.
- A
- All Function APIs now include
localization
as part of their input root. (example) - All Function APIs now include
presentmentCurrencyRate
as part of their input root. (example)
For more information, refer to the Shopify Function API references.
October 02, 2023
Shopify Functions now support localization of their name and description API
Shopify Functions now supports localization of the function name and description. Function names and descriptions which are displayed in admin, such as the names of function discount types, can now be translated into the user’s native language.
Use of this localization requires upgrading Shopify CLI to 3.49.5 or higher.
Learn more about localization of functions on Shopify.dev.
October 02, 2023
Updates to GraphQL Admin API for bundles API
As of 2023-10, you can now query the productvariantid field of the LineItemGroup
to identify which variant was used to model the bundle after it was purchased.
In addition, apps can now render custom UI for the bundles card on the product details page by claiming bundle ownership of the product.
Learn more about the product configuration extension for bundles.
October 01, 2023
New webhook topic added for Publication delete events API
As of API version 2023-10, a new webhook topic PUBLICATIONS_DELETE
is added. This webhook occurs whenever a publication is deleted and requires the read_publications
scope.
October 01, 2023
serviceCode is available on the DeliveryMethod API API
As of the { 2023-10 } API version, you can use { DeliveryMethod } to get the value of the { serviceCode } chosen for the related { FulfillmentOrder} . The { DeliveryMethod } object is now accessible through any of the fulfillment order scopes.
Learn more about { DeliveryMethod } on Shopify.dev.
October 01, 2023
Staff error as Order cancel reason API
As of 2023-10, we have added STAFF
to the OrderCancelReason
GraphQL type to serve as a reason for canceling orders due to staff errors.
Learn more about OrderCancelReason
on Shopify.dev.
October 01, 2023
Action required
Breaking change to metafieldDefinitionUpdate mutation: access input type changed API
Note: This change does not affect many apps and you likely aren't affected unless you are defining a variable of type MetafieldAccessInput
for the access property in your MetafieldDefinitionUpdate
mutation.
As of GraphQL Admin API version 2023-10, we are changing the input field type of MetafieldDefinitionUpdateInput.access
from MetafieldAccessInput
to MetafieldAccessUpdateInput
. This change is part of a broader API change to introduce support for explicit access grants (see Introducing explicit access grants for app-owned metafields for details), which will have a different input for updating the grants on existing definitions than for specifying grants on new definitions.
October 01, 2023
Introducing explicit access grants for app-owned metafields API
As of GraphQL Admin API version 2023-10, you can grant READ
or READ_WRITE
access to your metafields to explicitly specified apps, by using the new grants
property of the access
object in your metafieldDefinitionCreate
and metafieldDefinitionUpdate
mutations. You can pass a list of up to 16 grants per definition, specifying the grantee and the level of access to grant.
This could be useful if you need fine-grained control over access to your metafields, for example you could keep the admin access setting PRIVATE
but explicitly grant access to other app ids.
Learn more about metafield access controls on shopify.dev.
Note that the introduction of explicit grants required a breaking change to the metafieldDefinitionUpdate
mutation - see Breaking change to metafieldDefinitionUpdate mutation: access input type changed for details.
October 01, 2023
More information about the Order added to the FulfillmentOrder API API
As of { 2023-10 }, we've added the following fields to the FulfillmentOrder
graphQL object: orderId
, orderName
, orderProcessedAt
, channelId
.
With this change, order information required to fulfill an order is accessible on the fulfillmentOrder
object with any of the fulfillmentorders access scopes. The same data is available via fulfillmentOrder.order
, but this requires readorders access scope.
Learn more about FulfillmentOrder
on Shopify.dev.
October 01, 2023
Action required
App Revenue Attribution Record API Depreciated Shopify App Store
As of October 2023, the App Revenue Attribution API has been removed.
What does this mean?
appRevenueAttributionRecordCreate
and appRevenueAttributionRecordDelete
are no longer supported in this and future API versions.
What are the alternatives?
This change removes tracking for external app revenue attributions that occur outside of the Billing API. Partners can now use Google Analytics to track Shopify App Store Ads installs - which can be linked to external app revenue to calculate ad related return on ad spend and other ads related metrics.
October 01, 2023
Checkout branding is moving to stable, with an update on color settings API
As of 2023-09-15, we've made updates to the color settings available in the Checkout Branding API, moving to the 2023-10 stable release.
These changes will give merchants more control over colors in checkout including defining and applying color schemes with more controls over borders, icons, form fields and button colors
Note: please reference the new CheckoutBrandingColorsInput
element and avoid the deprecated CheckoutBrandingColorPaletteInput when making changes to checkout branding via the API. Any previous API calls that set a colorPalette have been automatically updated to the new color system. Future API calls must use the new system in order for changes to be reflected.
Learn more about our color settings here or review the reference documentation.
October 01, 2023
payment_method_name
available in PaymentDetails GraphQL and REST APIs to check for Shop Pay Installments transactions
API
As of 2023-10, a new field payment_method_name
is available in the PaymentDetails
GraphQL API and the payment_details
property in the Transaction resource of the Admin REST API. This field provides information about the payment method used to process an order transaction.
This update is in preparation for changes releasing in January 2024 where new Shop Pay Installment transactions will have a gateway
value of shopify_payments
.
Once released, relying on the gateway value to determine if an order is a Shop Pay Installments transaction will no longer be feasible. Instead, it will be necessary to utilize the payment_method_name
value to identify the transaction type.
For example, you can identify Shop Pay Installments transactions by checking that payment_method_name
has a value of shop_pay_installments
. For historical orders prior to 2023-10, you still need to check the gateway
value to identify Shop Pay Installments orders.
Learn more about the change in the PaymentDetails GraphQL API doc and Admin REST API doc for Transactions.
October 01, 2023
New error code added for MetafieldDefinitionUpdate API
As of API version 2023-10, we've added the METAOBJECT_DEFINITION_CHANGED
error code to the MetafieldDefinitionUpdateUserErrorCode
enum. This new error code is returned if you attempt to update a metaobject_reference
metafield definition so that it references a different Metaobject definition. Previously, this action would result in an INTERNAL_SERVER_ERROR
.
Learn more about METAOBJECT_DEFINITION_CHANGED
on https://shopify.dev/docs/api/admin-graphql/2023-07/enums/MetafieldDefinitionUpdateUserErrorCode
October 01, 2023
Action required
Changes to Subscription Billing Attempt creation behavior API
The SubscriptionBillingAttemptCreate
mutation now limits the creation of Billing Attempts based on the Fraud Analysis result on the Subscription Contract’s Origin Order.
As of API version 2023-10, we've added the CONTRACT_UNDER_REVIEW
error code to the BillingAttemptUserErrorCode
enum. This new error code is returned in the case where Billing Attempt creation is prevented. In previous API versions, this action will return the INVALID
error code.
Learn more about the Subscription Contracts API and Billing Attempts on Shopify.dev.
October 01, 2023
Action required
Removal of Customer averageOrderAmount fields on Admin API API
As of GraphQL Admin API version 2023-10, the following Customer
fields have been deprecated: averageOrderAmount
, averageOrderAmountV2
.
Learn more about the Customer
object on Shopify.dev.
October 01, 2023
Subscriptions Support for Automatic Discounts API
We've added a subscription options for automatic discounts so that you can create automatic discounts for all your products. See the subscription discounts page for more details.
One important observation is that starting from API versions prior to 2024-01, the DiscountType will classify any automatic discount as "MANUAL". However, from 2024-01 onwards, it will accurately represent automatic discounts as "AUTOMATIC_DISCOUNT".
October 01, 2023
New field to query Order cancellation API
As of 2023-10, we've added a new field cancellation
to Order
graphQL object.
This field can provide additional details about the order cancellation, such as staff provided notes on why the order was cancelled. This data is currently available for some orders cancelled on Point of Sale app.
Learn more about Order
on Shopify.dev.
October 01, 2023
Action required
Simplify Metafield interaction with default namespaces API
Starting from 2023-10, the Admin and Storefront GraphQL APIs have made the namespace field optional when creating, updating, or querying Metafields and Metafield Definitions. We have updated all relevant mutations and queries to accommodate this change. When working with Metafields from an App, the default namespace will be the app reserved namespace.
This update does not affect API calls that explicitly specify a namespace. However, it simplifies the process of interacting with namespaces by removing the need to provide a namespace field when the default is suitable. As a result, Apps can now create and query Metafields without the requirement of specifying a namespace.
Learn more in the Admin API and Storefront API documentation for Metafields.
October 01, 2023
Manage Quantity Price Breaks for B2B Customers API
As of the 2023-10
version of the Admin GraphQL API, you can view the quantityPriceBreaks
for a product variant on priceListPrice
and productVariantContextualPricing
. Additionally, you will be able to use the quantityPricingByVariantUpdate
mutation to manage quantity price breaks, quantity rules, and fixed prices for multiple variants.
October 01, 2023
Action required
Multiple domains on the primary market API
As of API version 2023-10, you can have multiple domains on the primary market. The following changes have been introduced to the Markets API:
- New
Market.webPresences
connection has been added - Pre-existing
Market.webPresence
field will return the primary domain web presence for a primary market with multiple web presences marketWebPresenceCreate
mutation will now allow adding additional web presences to the primary market- The required
marketId
argument has been removed from themarketWebPresenceUpdate
andmarketWebPresenceDelete
mutations. The new requiredwebPresenceId
argument should be used instead
October 01, 2023
Action required
Making the primary market more flexible API
As of 2023-10, you can customize the primary market in three new ways:
- The currency can be set to any currency independent of the merchant's shop currency.
- The country can be set independently of the primary market's currency, such that combinations like Canada and USD are now possible.
- Price lists can be created, allowing you to set fixed prices and percentage adjustments for the primary market.
October 01, 2023
Action required
Apps can now change the name and address of their fulfillment service locations API
As of the 2023-10
API version, apps can change the name and address of their fulfillment service locations using the LocationEdit GraphQL mutation.
When a fulfillment service is created, Shopify also creates a new location and associates this with the new fulfillment service. This location inherits it's name from the fulfillment service.
Apps can now update the name and address of this location. For example, when a fulfillment service is created, it will inherit the country of the shop. If the fulfillment service is located in a different country from the shop, apps can now update the location to accurately reflect the address of the fulfillment service.
API breaking changes
New user error when editing locations
The LocationEdit
mutation will return a new user error with the CANNOT_MODIFY_ONLINE_ORDER_FULFILLMENT_FOR_FS_LOCATION
code if attempting to update the fulfillsOnlineOrders
field for a fulfillment service location. This field can only be modified on manual locations. Fulfillment service locations are always enabled to fulfill online orders.
New authorization check when attempting to edit a fulfillment service location
From the 2023-10
API version, if you attempt to edit the location belonging to a fulfillment service without having the write_fulfillments
access scope, you will get the following access denied error:
Access denied for locationEdit field. Required access:
write_fulfillments
access scope is required to edit the location associated with a fulfillment service.
Earlier API versions would return a user error with the NOT_FOUND
code.
October 01, 2023
Cart Line Items Now Ordered in Reverse Chronological Order Based on Time of Addition API
As of API version 2023-10, we've made changes to the ordering of line items in the cart. In the past, newly added items were placed at the end of the cart without explicit sorting. Now, line items will be sorted in reverse order by the time they were added to the cart, meaning the most recently added items will be positioned at the top.
Developers, be aware that this change could affect the ordering of cart items in your applications. If your app or store's functionality relies on the order of line items or an item's position in the cart, this update is especially relevant to you.
October 01, 2023
New compare-at price range field on Product API API
As of version 2023-10 of the GrapqhQL Admin API, we've added the compareAtPriceRange
field to Product
which will return the minimum and maximum compare-at prices across a product's variants.
October 01, 2023
Action required
Deprecation of metafield(id)
query
API
As of 2023-10, the metafield(id)
query is no longer supported. Metafields should be queried via the HasMetafields
connection of metafield owners. If necessary, metafields can be queried by ID via the Node
interface.
October 01, 2023
Action required
Removing Shop.shopifyPaymentsAccount
on Admin API
API
As of 2023-10
, we're removing the deprecated Shop.shopifyPaymentsAccount
field. Use the shopifyPaymentsAccount query instead.
September 27, 2023
Storefront API now supports product bundles API
It’s now possible for merchants using Hydrogen or the Headless Channel in the admin to offer bundles with Shopify.
Headless merchants can choose from creating fixed bundles and multipacks with our free Shopify Bundles app, using one of these updated bundle apps for more bundle support or using our APIs (Shopify Plus and Shopify partners only) to create a custom bundle offering.
September 27, 2023
POS UI extensions 1.4.0 update: new API, props API
As of September 27, we added the following updates to POS UI Extensions:
- Introduced a
Connectivity API
which gives the UI extension access to the information about the device connectivity. - Added optional
BadgeStatus
prop to theBadge
component - Added optional
overrideNavigateBack
prop to theScreen
component - Added
isDevice
function to theDevice API
All of the changes are available for POS UI extensions version 1.4.0 and POS app version 8.18.0. See the version log for all version details.
September 22, 2023
New input setting text_alignment launched Themes
A new input setting of type text_alignment has been introduced, featuring an icon-based segmented control design.
The setting comes pre-built with default values left
, center
and right
, which cannot be changed.
Learn more about the text_alignment setting in our development documentation.
September 22, 2023
Enhancements to range and select input settings Themes
New quality of life updates are here for the range and select input settings! Featuring enhancements to the design and functionality of these settings, these two changes will improve the theme editing experience.
We have introduced a new input box as part of the range setting updates. Merchants now have two ways to set their range value, either by using the existing slider or by typing in a value, which offers more flexibility and precision when setting values.
The select setting can now present itself in one of two ways, either as a dropdown list, or as a new segmented control. Depending on the options passed in, the setting will apply the ideal visual treatment accordingly.
Learn more about the range setting and select setting changes in our developer documentation.
September 18, 2023
New Liquid section properties and default lazy loading for image tags Themes
We've added default lazy loading for the image_tag
when it occurs in sections further down the page.
We've also added new section properties so you can customize this behavior as well as fix other web performance issues dependent on layout position:
section.index
- the 1-based index of a section within its locationsection.index0
- the 0-based index of a section within its locationsection.location
- the location of the section (e.g., template, section group type, etc.)
You can now fix performance anti-patterns like lazy loading images above the fold and layout shifts due to async CSS loading without depending on section settings.
Learn more about the new image_tag
behavior and how to use the new section properties.
September 14, 2023
New GraphQL Admin API field CustomerAccountsV2 exposes shops' customer accounts settings API
As of Admin GraphQL API version 2023-10, you can query the CustomerAccountsV2 field on the Shop object to get information about the shop's customer accounts settings. CustomerAccountsV2 will let you adapt your app's behaviour to the merchant's customer accounts settings.
Learn more about CustomerAccountsV2 on Shopify.dev.
September 13, 2023
Updates to the Theme Store Requirements Themes
We've made updates to the Theme Store requirements, in relation to the prohibited use of externally hosted scripts, and code which interferes with native Shopify functionality. These requirements are contained within Section 7, Consistency and functionality and inform that:
- Scripts included in theme code must be hosted on Shopify's servers, with the exception of approved third-party libraries.
- Themes must not include any Javascript or code that interferes with, or augments, any native Shopify feature within the theme editor or Shopify admin.
These requirements are to ensure all themes in the Shopify Theme Store are secure, reliable, performant, and maintain a consistent user experience.
The new requirements can be viewed on Shopify.dev.
September 13, 2023
Cart validation errors on online store cart and Storefront API API
As of Storefront GraphQL API version 2023-10, we’ve added the VALIDATION_CUSTOM
error type to CartErrorCode
so that you can use validation errors in carts.
Learn more about cart validation errors on Shopify.dev.
September 13, 2023
Admin action extensions are now generally available Tools
Admin action extensions are now generally available and can be deployed to apps. These new extensions enable you to seamlessly integrate your app's functionality into the Shopify admin by embedding workflows and UX on core admin pages.
Once deployed, merchants can find actions in the “More actions” menus at the top of Products, Orders, and Customers pages in the admin. When a merchant launches the extension, it will appear as a modal over the current page. By giving merchants access to your app's functionality, without the need to navigate away from their current task, these extensions help increase efficiency and productivity.
Admin action extensions come with direct API access, enabling them to use the Admin GraphQL API without having to proxy the calls through their app's backend resulting in faster and more responsive apps.
Learn more about admin action extensions on Shopify.dev.
September 12, 2023
Introducing homepage ads on the Shopify App Store Shopify App Store
Developers can now generate more demand for your apps by showcasing them on the homepage of the Shopify App Store.
Learn more about homepage ads on our blog and shopify.dev.
September 12, 2023
Full-funnel Google Analytics attribution Shopify App Store
We’ve added visibility into the app install event itself as part of our existing integration with Google Analytics. This addition enables developers to more easily compare the performance of your Shopify App Store Ads with your other marketing activities on and off Shopify.
In addition to having full visibility into the app install event, you can also now tie the app install event to a Shop ID, enabling richer insights on the type of merchants that are installing your app.
Learn more on our blog and shopify.dev.
September 11, 2023
New APIs added to the latest version of App Bridge Tools
With the latest version of App Bridge, you can use the Print, Scanner and Share APIs.
Both Print and Share rely on web standards. Learn more about these APIs on Shopify.dev
September 11, 2023
Automatic free shipping discount now available on GraphQL Admin API API
It is now possible to offer automatic free shipping discounts using the GraphQL Admin API using discountAutomaticFreeshippingUpdate and discountAutomaticFreeshippingCreate.
Learn more on Shopify.dev.
September 07, 2023
Liquid Console: Test and evaluate Liquid snippets quickly using Shopify CLI Tools
Liquid Console is now available, a tool that enables Liquid testing and evaluation directly in your code editor through Shopify CLI. This feature accelerates your feedback loop, simplifies debugging, and assists developers learning Liquid.
Get started by running the command shopify theme console
in your terminal. This command opens up an efficient way to experiment with Liquid filters and explore Liquid object data structures.
Learn more about Liquid Console on Shopify.dev.
September 07, 2023
Action required
Removal of UsageCharge billing_on field on Admin REST API API
As of Admin REST API version 2023-10, the following UsageCharge
fields have been deprecated: billing_on
.
Learn more about the UsageCharge
object on Shopify.dev.
September 06, 2023
Action required
Breaking changes to ShopResourceLimits API: Deprecate "skuResourceLimits" API
As of GraphQL Admin API version 2023-10, we're deprecating the "skuResourceLimits" field from the ShopResourceLimits
query object. We're no longer enforcing a limit of SKUs at a shop level. Instead, please use "maxProductVariants" to determine the limit of variants at a product level.
Learn more about ShopResourceLimits
on Shopify.dev
August 31, 2023
Removed minimum character requirement for reviews Shopify App Store
We’re simplifying feedback collection and reducing non-informative content. These ratings contribute to the overall score without impacting the recent review ranking updates.
August 28, 2023
Action required
Updates to our Terms of Use and Partner Program Agreement Shopify App Store
EFFECTIVE AUGUST 28, 2023 ACTION REQUIRED
We've made changes to our Partner Program Agreement and API License and Terms of Use. These updates include terms that clarify a partner's responsibility to sync back order data when any type of data is taken off of Shopify and facilitates an order, as well as other important updates.
These changes come into effect as of today, August 28, 2023.
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.