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.
June 24, 2024
Webhook subscriptions now support filters API
As of 2024-07, when creating, updating or querying a webhook subscription you can now include a filter parameter. This parameter, which is specified using Shopify Search Syntax, allows you to specify conditions as to when webhooks should be emitted for a subscription.
Learn more about webhook filters on Shopify.dev.
June 24, 2024
Webhook subscriptions subTopic has been removed API
As of 2024-07, the subTopic argument has been removed for creating webhook subscriptions. For creating subscriptions that previously required a subTopic the filter argument should be used instead.
Learn more about webhook filters on Shopify.dev.
June 23, 2024
More data in web pixels API
We've added more data fields to Web pixels so that you can capture richer data and improve the performance of your integrations.
Standard API -> init -> shop object including: * Country code * myShopify url * Payment settings
Standard Events -> checkout object including: * Discount amounts * Email marketing consent * Final line item price * Line item properties * Line item selling plan * Localization * Payment method * Selected delivery options * SMS marketing consent
June 21, 2024
Easily find all of Shopify's webhook topics, and their sample payloads, in new Webhooks reference docs Tools
Shopify webhoks are first-class citizens with our APIs, and we now finally have a reference experience too! Now, all of Shopify's webhook topics are discoverable in a single-source-of-truth place. The reference docs include sample payloads, which topics are available for subscription based on the method you use, and key information like required access or approval scopes.
June 21, 2024
Subscribe to webhook topics using the app configuration file Tools
Webhooks are now managed by Shopify! Configure app-specific subscriptions as opposed to per shop. Using Shopify CLI v3.63.0 or later, add, modify and deploy app-specific subscriptions in your app configuration file (shopify.app.toml
), then view the latest version in your Partners dashboard.
To get started, use the new tutorial for Shopify webhook subscriptions.
June 21, 2024
Create extensions for the pre-authenticated Order Status Page Shopify App Store
Build extensions on the pre-authenticated Order Status Page as a part of the Customer Account Extensibility Developer Preview to create a consistent experience for customers, regardless of their login or authentication state.
Customer account extensibility, currently available in developer preview, enables partners to add unique and powerful customizations by building extensions directly into new customer accounts.
Learn more about the pre-authenticated Order Status Page in our developer documentation.
June 21, 2024
Preview and configure customer account UI extensions in the Checkout and Accounts Editor Shopify App Store
As a part of the Customer Account Extensibility Developer Preview, you can now add, remove, preview, and reposition customer account UI extensions in new customer account pages, to better understand how merchants configure apps in the checkout and accounts editor.
Included in this update, you can also:
- Group extensions into collections: Extension collections guide merchants on which extensions work well together by creating collections that help merchants confidently enable your recommended customer experience.
- Set default placements: Default placements automatically add an extension to a specified UI block.
Customer account extensibility, currently available in developer preview, enables partners to add unique and powerful customizations by building extensions directly into new customer accounts.
Get started by reading our developer documentation.
June 21, 2024
Write data to metafields with the Customer Account API API
Store and access customer information by writing data to metafields with the Customer Account API, and build experiences for merchants that enable logged-in customers to update information about themselves.
Custom customer data previously stored exclusively outside of Shopify can now be accessed and added directly to the customer record via using the Customer Account API. With the 2024-07 release of the Customer Account API, use the metafieldsSet mutation to assign metafield values on Customer, Order, Company, and CompanyLocation resources.
Learn more about writing data to metafields with the Customer Account API by reading our developer documentation.
June 21, 2024
Shopify Functions log streaming and replay is available in beta Tools
As of Shopify CLI 3.63, log streaming and replay for Shopify Functions is available in beta.
Log streaming for Shopify Functions enables faster development, testing, and debugging of functions by bringing function execution logs to Shopify CLI. You can also replay function executions locally using input from these logs.
Learn more about enabling and using log streaming on Shopify.dev.
June 21, 2024
Integrate with Shopify Flow by creating a workflow template app extension Tools
You can now contribute your own templates to Flow’s template library using the Shopify CLI. Templates show merchants how to automate something in their store and typically accelerate adoption of new tasks.
Once you have a workflow to share as a template, you can use the Shopify CLI to generate a new template app extension, configure all of its metadata including localizations, preview the extension, and deploy it. Once approved by the Flow team, it will appear in Flow’s template library.
View the Create a workflow template documentation to learn more about the process of creating and deploying template app extensions.
June 20, 2024
Introducing easier app billing with managed pricing Shopify App Store
Managed pricing makes it easier to set up app pricing plans through your Partner Dashboard. Define recurring monthly/annual and free plans in your app listing page, then embed the URL in your app. Shopify handles creating and hosting your plan selection page, and automates most common billing tasks, such as recurring charges, free trials, proration, test charges, and price updates.
Managed pricing also allows you to easily issue app discounts and trial extensions through the Partner Dashboard. Merchants get an automated confirmation email when discounts and trial extensions are applied to their accounts.
Learn more about getting started with managed pricing.
June 20, 2024
Add seamless printing to your app with admin print action extensions Platform
Developers can now add admin print actions to their apps. These extensions let your apps create seamless workflows for printing documents - such as packing slips, invoices, and product information - direcly from the Order and Product pages in the Shopify admin.
Get started today by learning how to develop and deploy a print extension!
June 20, 2024
Real-time Metrics for Shopify App Store Ads Shopify App Store
Shopify App Store Ads’ metrics now update in real-time. Partners will get immediate feedback when they refresh their ad report on their ads’ performance as auctions, impressions, clicks, and installs are happening live. To learn more about these metrics visit Shopify.dev.
June 18, 2024
GraphQL Admin API: new APIs for Menus are now available in 2024-07 API
As of version 2024-07 of the GraphQL Admin API, you can now read and modify Menus.
June 18, 2024
Structured app category details now available for 30 more categories Shopify App Store
Structured app category details are now available for 30 more categories. You can fill out the fields from your app listing pages. This new information will help us match your apps to the right merchants more accurately, optimize ads bidding, and improve the overall discovery.
The 30 categories that now supports structured app category details are:
- Abandoned cart
- Ads
- Affiliate programs
- Analytics
- Badges and icons
- Banners
- Bulk editor
- Cart customization
- Chat
- Cookie consent
- Currency and translation
- Digital products
- Image editor
- Invoices and receipts
- Inventory sync
- Marketplaces
- Order tracking
- Payments
- Print on demand (POD)
- Product feeds
- Product variants
- Retail
- Search and filters
- Shipping
- Shipping rates
- SMS marketing
- Social proof
- Store data importer
- Upsell and cross-sell
- Workflow automation
For more information, please refer to our dev documentation.
June 18, 2024
JSON is better on Liquid themes now Themes
Writing JSON for Liquid themes is already easy with intelligent code completion and inline documentation, but now it's also easier to refactor as we move objects in your schema tags and your settings_schema.json
files with support for trailing commas and comments.
Note: Apps that parse JSON definitions from themes can still use pure JSON, but they should introduce support for reading (parsing) comments and trailing commas to handle eventual changes made directly on theme files.
Learn more about the JSON editing experience and JSON with comments at Shopify.dev - VS Code extension and Shopify.dev - Theme architecture. Happy coding!
June 17, 2024
Storefront API Cart now supports one-time use delivery addresses API
As of version 2024-07 of the GraphQL Storefront API, Cart supports one-time use delivery addresses with the new oneTimeUse property of the DeliveryAddressInput. Use this new property to pass an address that should not be saved to the account of the buyer after checkout, for example for gifting scenarios.
API Reference - DeliveryAddressInput
June 17, 2024
Merchant Plan-Based Targeting Now Available for Built for Shopify Apps for Shopify App Store Ads Shopify App Store
Partners with apps that qualify for Built with Shopify status are now able to target their search ads on the Shopify App Store to specific merchant plans.
Learn more at Shopify.dev.
June 17, 2024
Action required
OptionValue in Storefront API API
A new type called ProductOptionValue
has been added to the new storefront API and is nested as a new field optionValues
on the ProductOption
type.
As of 2024-07, you can use the optionValues
field to fetch the option values associated with an option. This field deprecates the existing values
and provides richer option value information including swatches.
June 17, 2024
Action required
OrderDisplayFulfillmentStatus
now returns REQUEST_DECLINED
when appropriate
API
As of 2024-10
, OrderDisplayFulfillmentStatus will now return REQUEST_DECLINED
for an order that has had its fulfillment request rejected by a third-party Fulfillment Service. Previously, orders in this state would return an UNFULFILLED
status.
June 15, 2024
Add a new error code for handling missing payment method for subscription draft commits API
As of 2024-07, you will receive a detailed error message when missing payment information for subscriptionDraftCommit mutation.
June 14, 2024
draftOrderLineItemInput now accepts bundleComponents and the CartTransform function runs on all draft orders API
As of version 2024-07 of the GraphQL Admin API, draftOrderLineItemInput now accepts bundleComponents. Apps can view a bundle item's components on a draft using the bundleComponents field and can add a bundle item to a draft order by including this field in the draftOrderLineItemInput.
Additionally, the CartTransform function will automatically run on all draft orders.
Learn more about bundleComponents on shopify.dev.
June 14, 2024
Action required
Category on ProductInput API
In 2024-04 we released a new Taxonomy API for products. This included introducing a new TaxonomyCategory type and updating the product type to return a new category field.
As of 2024-07 the ProductInput type will also accept a category field that accepts the GID of a category.
We've also deprecated shop.allProductCategories
in favor of shop.allProductCategoriesList
June 13, 2024
Action required
UI Extensions - Support for split shipping in Shipping method option list and item targets API
Breaking change: UI Extensions on version 2024-07
can use new API capabilities to integrate with split shipping capabilities.
Split shipping in checkout allows buyers to select different shipping options for items arriving in multiple shipments. In split shipping scenarios, Checkout will include UI changes to offer more transparency and options for buyers in the shipping section, while making the selection process easy with split shipping options (“Lowest price”, “Fastest” or “Custom”).
API updates
As of 2024-07
, purchase.checkout.shipping-option-list.render-before
and purchase.checkout.shipping-option-list.render-after
will receive a new DeliveryGroupList
target representing the list of delivery groups for One Time Purchase or Subscription delivery groups. These targets continue to be duplicated for the possible types of delivery groups. We’re also introducing deliverySelectionGroups
which represents the list of predefined choices for the “Lowest price”, “Fastest” or “Custom” shipping options that are presented to the buyer. You can view these changes on the ShippingOptionListApi.
Note that useDeliveryGroupTarget() is deprecated in favor of useDeliveryGroupListTarget(). Extensions on 2024-01
and 2024-04
are compatible with split shipping but will only receive the first delivery group of each type (One Time Purchase or Subscription).
UI extension target updates
purchase.checkout.shipping-option-item.render-after
and purchase.checkout.shipping-option-item.details.render
targets can now be rendered in different contexts: inline as part of the split shipping options, or in an overlay for the “More shipping options” modal.
As a result:
- ShippingOptionItemApi has been updated to include a
renderMode
indicating in which context the target is rendered. - Only
purchase.checkout.shipping-option-item.render-after
can be rendered in both contexts. purchase.checkout.shipping-option-item.details.render
will also be duplicated for the selected shipping option of each delivery group.
If your extension is capturing buyer inputs at Checkout (for example using an app metafield), you will need to update your logic to account that this information should be scoped to a specific delivery group, instead of the entire order.
You can learn more about the new placement of targets and see examples.
These changes can be previewed today on the unstable
api version and will be available on the stable branch with version 2024-07
.
Learn more about these api changes on shopify.dev
June 13, 2024
We have refreshed app taxonomy for better discoverability Shopify App Store
We have refreshed our app taxonomy for better app discoverability. Designed to streamline categories and reduce complexity, this update will help merchants more easily find the best apps for their needs.
We encourage you to:
- Review the new taxonomy: See new categories and how it affects your app’s placement. All apps will continue to be discoverable and we’ll do our best to choose a suitable alternative for those impacted.
- Update your app’s category: Select the most suitable category for your app from your partner dashboard. All apps can make a one-time category change. Any subsequent changes will require an appeal.
- Impact on ads: Your category ads campaigns may be impacted if they are in these categories. You may need to relaunch your campaign.
June 13, 2024
GraphQL Admin API: RefundLineItem.id
field added
API
As of 2024-07
, you can use the RefundLineItem.id
to return the id of specified RefundLineItem
object.
Learn more about working with RefundLineItem
on Shopify.dev.
June 13, 2024
Preserve line properties in CartLinesUpdate mutation API
The CartLinesUpdate mutation behavior has been updated to preserve existing line properties when the attributes parameter is either omitted or explicitly set to null.
Previously, omitting the attributes parameter would reset the line properties. Passing an empty hash { }
to reset line properties is an existing capability and remains unchanged.
June 13, 2024
Updated default sort order for discount queries API
As of 2023-04, the default sort key for discountNodes
, codeDiscountNodes
, and automaticDiscountNodes
queries has changed to ID
. Previously the default sort key was CREATED_AT
. This change improves performance.
June 11, 2024
Action required
Deprecation of buyerIdentityInput.walletPreferences
in favour of buyerIdentityInput.preferences.wallet
API
As of 2024-07
, we're deprecating buyerIdentityInput.walletPreferences
. Use buyerIdentityInput.preferences.wallet
instead.
Learn more about these changes on Shopify.dev.
June 10, 2024
Automatic Discount Functions now apply to B2B checkouts for review API
Discount Functions are now compatible with B2B companies that are required to submit orders as drafts for review.
Previously, Discount Functions weren’t applicable when B2B buyers submitted orders as drafts for review. This restriction has now been lifted, and buyers will have discounts applied at checkout.
June 07, 2024
Merchants can now share all function run details for an app within the last 24 hours Platform
It is now possible for merchants to share all function run details for an app within the last 24 hours with the app developer. This will share function run details for every function on the app, including both success and failure runs.
To learn how merchants can perform this action, see the relevant dev docs.
June 06, 2024
Added Maximum Limit to number of fulfillment constraint rules for a shop API
We are adding a limit to the number of fulfillment constraint rules that can be applied to a shop - currently, this limit is 10. As a result, we are also adding a new error code to the API.
As of API version 2023-07
, the error code maximum_fulfillment_constraint_rules_reached
will be added to the FulfillmentConstraintRuleCreate
mutation. This error code is returned when you add more than the maximum number of rules to a shop.
June 05, 2024
Hydrogen June 2024 release Platform
Hydrogen v2024.4.3 is out today. The June 2024 Hydrogen release contains several new features and bug fixes, including:
- A new
useOptimisticCart
hook - A new
<RichText />
component to renderrich_text_field
metafields - Stable analytics
- An upgrade to Remix 2.9.2
Check out our full Hydrogen June 2024 release blog post for more details. And please drop your comments, feedback, and suggestions in GitHub Discussions!
June 05, 2024
Discount Functions support on Shopify Point of Sale Platform
With POS app version 9.10 we now officially support discounts created by Discount Functions.
Here are some of the things to be aware of with regards to this announcement:
What are Shopify Functions?
Shopify Functions give you the flexibility to extend or replace native Shopify server-side business logic, to meet your unique business needs. For Discount Functions, that means being able to create discounts that cover more advanced use cases than what’s offered natively in the Shopify Admin discounting functionality.
Some use cases: - Trigger discounts based on attributes not available to be used natively, such as custom metafields or the customer’s lifetime value - Create more advanced criteria for discounts to be eligible, such as “Buy A, B and (C or D), get E for free” - Link discounts to other functionalities (loyalty, gift registry, membership)
What’s the lifecycle of a Shopify Function?
- App developers create and deploy apps that contain functions
- Merchants install the app on their Shopify store and configure the function. An API call is made with the function configuration
- Customers interact with a Shopify store, for example by visiting a retail location and buying a number of products, Shopify executes the function as the cart is updated and the merchants’ staff checks out the customer
Important information:
What exactly is changing now?
Over the last couple of months we launched new features on Shopify POS such as the ability to combine discounts as well as the support for BXGY discount codes. With these releases, we increased the support for more advanced Discount Function scenarios.
With v9.10 we are releasing some improvements that further bring the use of Discount Functions into the POS ecosystem, including automatic discounts, the ability to create smart grid tiles for discount codes that trigger a Discount Function, as well as improved error handling for discount codes.
Limitations:
There are currently a few limitations that are important to be aware of: - Discount Functions are automatically available to any sales channel, meaning that if a Discount Function was set up to automatically apply based on a certain input, it would be applied to orders that qualify in both Online Store as well as POS. The same counts for Discount Functions that are applied through discount code - Stores on any plan can use public apps that are distributed through the Shopify App Store and contain functions. Only stores on a Shopify Plus plan can use custom apps that contain Shopify Function APIs
For app developers:
- We have extensive pre-existing docs on Shopify Functions - General and API - available on our .dev docs website. A tutorial can be found here
In Shopify admin:
- Any previously created Discount Functions are automatically available to be leveraged on POS
- For staff members to be able to leverage a Discount Function, a discount will have to be created with an app that deploys that function
- To make a discount created by Discount Functions available for smart grid tile linking, it has to be “published” to the POS, which can be done via bulk editor in the Admin > Discounts list overview
In store flows:
- For the staff in store, nothing will change. Discounts created through native functionality or discount functions will behave the same on POS
- Discount Functions can be configured to apply automatically, or can be triggered by entering a discount code
Technical:
- The following API’s are relevant to this functionality:
- There are no functional changes to APIs
Reporting: - Discounts created through Discount Functions are of the same type as native discount (automatic / code, product/order/shipping). These discounts are reported on regardless of whether they were created natively or through discount functions
June 04, 2024
Action required
Introducing the URLParameterValue field on all marketing activities and aligned types on userErrors in the Marketing Activity API API
As of API version 2024-07
, you can use the url_parameter_value
as a tracking parameter in the MarketingActivityCreate
and MarketingActivityUpdate
mutations. This feature is currently available on a limited basis to some partners only. UTMs should continue to be used for most partners' tracking parameters.
Additionally, MarketingActivityUserError
will be the required type on the user_errors
field for the MarketingEngagementCreate
mutation. This will match the user_error
types of the other mutations that belong to the Marketing Activity and Engagements API.
June 04, 2024
A little spring cleaning for your App Store listing Shopify App Store
We've given listing pages a refreshing uplift to improve overall density and readability.
A sticky sidebar keeps important highlights and the Install app CTA always in merchants' view. We continue to roll out more support for structured features for more app categories, so we've adjusted this section to accommodate growth.
This listing update is entirely a front-end refresh to keep the browsing experience high-quality for our merchants. No listing functionality will be impacted.
June 01, 2024
Added new field ordersCount
to the query root
API
As of version 2024-07
of the Admin GraphQL API, you can use the new ordersCount
field to count the orders for a given shop.
Learn more about ordersCount
on Shopify.dev.
June 01, 2024
New fields on Order GraphQL Object API
As of Admin API 2024-07
, Order object will expose the following new fields:
* staffMember
* sourceName
Learn more about Order GraphQL object on Shopify.dev
June 01, 2024
New mutation to delete an order API
As of GraphQL Admin API 2024-07 version, you can make use of a new mutation to delete an order.
Learn more about orderDelete
on Shopify.dev.
May 29, 2024
Action required
Deprecating the Ability to Set Available Quantities on Already Active States on the InventoryActivate
GraphQL Mutation
API
As of Admin GraphQL API version 2024-10
, we're deprecating the ability to set the available quantity on the InventoryActivate
GraphQL mutation for already active states. Moving forward, use the InventorySetQuantities
GraphQL mutation instead. This change will take into full effect starting on the 2024-10
version of the Admin GraphQL API.
May 28, 2024
Note length is now validated (<5000 char) API
As of Storefront API version 2024-07, you will get a NOTE_TOO_LONG
user error in cart mutations in case the note exceeds the maximum number of 5000 characters.
May 24, 2024
Updates to MetafieldAccessInput and MetafieldAccessUpdateInput enum values API
As of 2024-07
, the admin
and storefront
fields of MetafieldAccessInput
and MetafieldAccessUpdateInput
will begin using dedicated input enum types - MetafieldAdminAccessInput
and MetafieldStorefrontAccessInput
.
Learn more about access controls for metafields on Shopify.dev.
May 24, 2024
Customize the address autocomplete provider in Checkout with the Address Autocomplete API API
Customize the address autocomplete provider in Shopify Checkout with the Address Autocomplete API. The Address Autocomplete API unlocks the ability for developers to replace the default provider of address suggestions in Shopify Checkout. This allows merchants who have upgraded to Checkout Extensibility to leverage a growing ecosystem of third-party apps that augment the address autocomplete experience.
API Reference * purchase-address-autocomplete-suggest * purchase-address-autocomplete-format-suggestion
May 23, 2024
Even more personalized guidance during app submission Shopify App Store
Pre-select your app’s capabilities early in the submission process to get a simpler, personalized list of requirements. If your app review gets paused due to a blocking error, a clear summary of issues and a straightforward resubmission process will help you (and your app review) quickly get back on track.
We are rolling this out to English speaking partners first this week. For more information on app review, see our dev docs.
May 23, 2024
Apps can now trigger marketing automations that use the Customer subscribed to email marketing trigger API
Apps can now trigger Shopify's marketing automations that use the Customer subscribed to email marketing trigger (welcome new subscriber, and welcome series) by integrating with the Customers API.
When developers provide consentUpdatedAt
upon updating the email marketing consent for a customer, the trigger and associated marketing workflow will fire as long as consentUpdatedAt
is within the last 24 hours.
This change allows standalone lead capture apps to connect seamlessly with the rest of Shopify’s marketing automation tools. Apps that also offer automations should make sure merchants are aware they should choose to automate welcome emails in one place, not both, to avoid duplicate messages.
May 23, 2024
Zero-value tax lines are now returned for tax exempt orders API
Tax lines created as a result of tax exemptions on orders (typically have price=0
) will now be returned in API responses. This includes cases when the order, customer or product variant have been marked to not collect taxes (i.e. when the "Charge taxes" or "Collect Tax" checkbox is set to false).
This change is being released to stores progressively, with a plan to fully release it by May 23, 2024. The change will affect orders on stores that have the feature and have the appropriate tax registrations set up for collecting taxes on those orders
May 22, 2024
New preferences fields for prefilling checkout in the Storefront (cart) API API
As of 2024-04
, you can use the preferences
object in the Cart API to prefill a checkout session.
These changes help merchants streamline their checkout process for their customers by prefilling information such as the preferred delivery method and pickup location. This change is additive to the 2024-04
version.
Learn more about these new fields in the cartCreate
reference page and the CartBuyerIdentity
reference page
For more information, an updated tutorial is also available.
May 22, 2024
Better support for accelerated checkout methods in payment customization functions API
As of 2024-07
, the Payment Customization API has two new features that give you better control over accelerated checkout methods:
1. Improved naming: the function input graph now has more descriptive and specific names for accelerated checkout methods.
2. Placement control: Shopify Plus merchants will also be able to pass an optional placements
argument in the hide
operation, allowing them to explicitly hide accelerated checkout methods from the first or last step of checkout independently.
To learn more about payment customization functions, please refer to the documentation.
May 21, 2024
New checkout functionality for merchants on Basic, Shopify, and Advanced plans Tools
UI extensions and web pixels for public or custom apps on the Thank you and Order status pages are now available to merchants on Basic, Shopify and Advanced plans. In tandem, merchants will also have access to the new checkout and accounts editor, an all-in-one place for making customizations.
Additional scripts and apps with script tags on the Thank you and Order status pages will be turned off with one year notice. These must be replaced with a compatible app from the Shopify App Store or rebuilt with UI extensions and web pixels.
As previously stated, customizations for the Thank you and Order status pages achieved using checkout.liquid, script tags, and additional scripts will be turned off for Plus merchants on August 28, 2025.
More information can be found in our developer documentation.
May 10, 2024
The orderCapture API now supports finalCapture API
Shopify Plus merchants using Shopify Payments are able to partially capture authorizations more than once. However, sometimes you know that the capture you're about to perform will be the last one. To reflect this, the orderCapture mutation has been updated in the 2024-07 version to support a new finalCapture
parameter.
When you know you're capturing an authorization for the last time, setting the finalCapture
parameter to true will release any uncaptured funds back to your customer. Doing so is likely to increase customer satisfaction and decrease the risk of chargebacks.
See also:
- Shopify Payments now supports multiple payment captures for the same order
- Shopify Payments now supports multiple payment captures for the same order in Australia and Romania
For merchants not on the Shopify Plus plan, the finalCapture
parameter will have no effect: these authorizations can only be captured once, and uncaptured funds are always returned immediately to the customer.
At the time of writing, the finalCapture parameter only applies to transactions made through Shopify Payments. When capturing authorizations processed through other gateways, finalCapture must either be omitted, or set to null
.
May 09, 2024
Enhanced handling of large quantities in the Carts API update endpoint API
When handling requests with exceptionally large quantities (exceeding 1,000,000), the update
endpoint of the Carts API previously capped the value to 1,000,000 and returned a 200/OK
status without notifying the user.
We have now modified this behavior. While the update
endpoint will continue to limit the quantity to 1,000,000, it will also issue a 422/Unprocessable Entity
status alerting the API users to the adjustment.
The endpoint will not perform any additional quantity checks against inventory levels; this aspect remains consistent with previous functionality.
May 09, 2024
Updates to metafield access controls API
It is now possible for apps to view the access
field of metafield definitions they have access to but do not own. An AuthorizationError
error was previously returned when accessing the field for definitions the app didn't have permissions to manage. Note that accessing the access.grants
field still requires permissions to manage the definition and an error will be returned if accessing the field with insufficient permissions.
As of 2024-07
, the admin
and storefront
fields of MetafieldAccess
will also start returning values in more cases instead of null
. Metafields that do not have associated access grants will return PUBLIC_READ_WRITE
for admin
access and LEGACY_LIQUID_ONLY
for storefront
. In addition, definitions that were created with a storefront access of NONE
will start returning NONE
instead of null
. Finally, it will also now be possible to set PUBLIC_READ_WRITE
as the admin
access control.
Learn more about access controls for metafields on Shopify.dev.
May 08, 2024
Hydrogen May 2024 release Platform
Hydrogen v2024.4.2 is out today. The May 2024 Hydrogen release contains several new features and bug fixes including:
- Redeploys on Oxygen
- B2B Support
- Improved support for third party requests in the request profiler
- Improved HMR stability
- Node 21 compatibility
- Content security policy improvements
- Analytics improvements
h2 upgrade
command detects outdated devDependencies- Codegen schema resolution fix
- cli-kit improvements
Check out our full Hydrogen May 2024 release blog post for more details. And please drop your comments, feedback, and suggestions in GitHub Discussions!
May 08, 2024
New error code added for the MetafieldDefinitionDelete mutation API
As of API version 2024-07, we've added the RESERVED_NAMESPACE_ORPHANED_METAFIELDS
error code to the metafieldDefinitionDelete
mutation. This error code is returned if you attempt to delete a definition in a reserved namespace without setting deleteAllAssociatedMetafields
to true.
May 06, 2024
Action required
Cart cookie value now includes key param Themes
The cart cookie value for the Online Store now includes a key param. Not including the key param will result in the removal of buyer details and your updates will be applied to a newly generated cart. This behavior is applied retroactively to all themes.
This change is rolling out now, and enforcement will go into effect after a grace period of 1 week.
Example Format: ** * Before: value=c1-7a2abe82733a34e84aa472d57fb5c3c1 * After: value=c1-7a2abe82733a34e84aa472d57fb5c3c1?key=824bdj25mhg1242bdb385**
*Action Required: * Provide the complete cart cookie value which includes the key param as well as the cart token.
Ensure that theme code is free from hard-coded assumptions (ex. Using regex to identify a cart token) on the format and structure of the cart cookie. This is especially critical if the cart cookie is manually constructed.** If your theme utilizes the value set by default without modification, no action is needed. **
May 06, 2024
Action required
Storefront API Cart ID now includes key param API
The Storefront API Cart ID now includes a key param that must be included for any mutation or query operations where the Cart ID is passed. Updating a cart without including the key param will result in the removal of buyer details and your updates will be applied to a newly generated cart. This behavior is applied retroactively to all versions of the Storefront API.
This change is rolling out now, and enforcement will go into effect after a grace period of 1 week.
Example Format: ** * Before: gid://shopify/Cart/c1-7a2abe82733a34e84aa472d57fb5c3c1 * After: gid://shopify/Cart/c1-7a2abe82733a34e84aa472d57fb5c3c1?key=824bdj25mhg1242bdb385**
Action Required: Provide the complete cart ID which includes the cart token as well as the key param. This value is returned from the graphQL API response when the cart is created.
Ensure that any app and theme code is free from hard-coded assumptions (ex. Using regex to identify a cart token) on the format and structure of the cart token. This is especially critical if the Cart ID is manually constructed. *If your app utilizes Cart.Id without modification, no action is needed. *
May 02, 2024
Pixels now support more customer privacy setting configuration API
You can now configure the customer privacy permissions and data sale settings for app pixels using the Web Pixel API. This will provide more insights by collecting events whenever the proper permissions are given by customers.
Learn more about Web Pixels on Shopify.dev.
May 01, 2024
Image and swatch presentations for product filters API
You can now create visual filters with an image presentation. This allows developers and merchants to specify when filters are best displayed as detailed images instead of color and pattern swatches.
In the Liqudi API, we've added filter_value.image
intended for better display support for icons, logos, and other detailed imagery. The filter_value.swatch
is intended for color and pattern swatches.
Merchants must use Shopify's Search & Discovery app to set visual filters for their store.
May 01, 2024
Action required
ShopifyQL Admin GraphQL API sunset API
As of Admin API and 2024-07 version, we're sunsetting ShopifyQL API. Use the Admin GraphQL APIs instead for extracting data for your use-cases. For example, the Orders API should be useful as a starting point.
April 30, 2024
Translatable Default Values in Theme Settings Schema Themes
Now, theme developers can utilize schema translation files to make default values in theme sections translatable. This ensures that themes are equipped to support multiple languages right from the onboarding state and when integrating new sections. For detailed guidance on how to reference schema translations, please refer to the developer documentation.
April 30, 2024
GraphQL Admin Files Query includes 3D Models and External Videos API
As of version 2024-07, 3D Models and External Videos will be included in the GraphQL Admin Files Query.
April 29, 2024
Webhook includeFields
now apply to all topics
API
As of version 2024-07 of the webhooks API, the includeFields that are specified on a webhook subscription will be available for all webhook topics.
April 29, 2024
GraphQL Admin API: Support for metafield connections in online store objects API
As of version 2024-07 of the GraphQL Admin API, you can use the Metafield
and MetafieldDefinition
connections in the OnlineStoreArticle
, OnlineStoreBlog
, and OnlineStorePage
objects.
Previously, you could only do this using the REST API.
April 26, 2024
Action required
GraphQL Admin API: location
field removed from the Order
object.
API
As of GraphQL Admin API version 2024-07 the location
field on the Order
object has been removed. Use the retailLocation
field instead.
Learn more about the Order object on Shopify.dev.
April 24, 2024
The DiscountEffectInput
input object now accepts amount
API
The GraphQL Admin API's DiscountEffectInput
input object now includes an amount
field. This change is backported to version 2024-01.
April 22, 2024
GraphQL Admin API: retailLocation
field added to Order
object
API
As of GraphQL Admin API version 2024-07, you can use the new retailLocation
field on the Order
object to query the physical location where a retail order is created or completed.
Learn more about the Order object on Shopify.dev.
April 18, 2024
Update: New maximum value for gift cards API
Effective May 15, 2024, a maximum value of $2,000USD (or equivalent in global currencies) has been added to gift card issuance. All versions of the Gift Card API will respond with an error for issued gift cards that exceed $2,000USD (or equivalent in global currencies) after this date. The purchase limit for gift card products will be $10,000USD (or equivalent in global currency).
To help you and Shopify merchants stay within this limit, we’ve introduced a new Gift Card Limits query that returns the maximum value in any given currency.
This change will help keep Shopify merchants compliant with laws that apply to gift cards and help ensure they do not inadvertently violate them. The new maximum value will not affect gift cards issued before May 15, 2024.
Visit our Help Center for more information.
April 17, 2024
App Bridge Performance Enhancements & Potentially Breaking Changes Platform
We are currently testing a feature that can halve load times for embedded Shopify apps using App Bridge via script tag and have found cases where apps break when they rely on an undocumented name="app-iframe"
property to access their iframe
If your app uses the name="app-iframe"
property to find its embedded app iframe, please either upgrade to App Bridge React v4 or reference the snippet below (gist here for reference) to avoid your app breaking in mid May when we begin rolling out these performance enhancements
The performance enhancement works by keeping multiple app iframes in the DOM at any given time. The name=”app-iframe”
prop will no longer be unique
const APP_ID = ''; // accessible via window.shopify.config.apiKey
interface FrameList extends Window {
[index: number]: Window;
}
function findAppFrameSafely(frameName: string) {
if (window.parent) {
const frames = window.parent.frames as FrameList;
for (let i = 0; i < frames.length; i++) {
const frame = frames[i];
try {
// referencing the name prop of a cross-origin frame will throw when there are multiple frames with the same name
if (frame.name === frameName) {
return frame;
}
} catch (_) {
// noOp
}
}
}
}
const legacyFrameName_doNotUse = 'app-iframe';
const futureProofFrameName = `frame:${APP_ID}/main`;
const appFrame = findAppFrameSafely(legacyFrameName_doNotUse) || findAppFrameSafely(futureProofFrameName);
// continue doing whatever you were doing with the app's main frame
appFrame?.postMessage({}, window.location.origin);
- Where
APP_ID
is your app’s apiKey, either provided during config or accessible onwindow.shopify.config.apiKey
- Your app’s iframes are same-origin while other apps’ iframes will be cross origin. The
try / catch
finds only same-origin frames, in this case, your app’s iframe - To be future proof, also use the unique
name=”frame:${APP_ID}/main”
. At the close of this project, app iframe names will be changed from the staticname=”app-iframe”
to a unique identifier pivoting onAPP_ID
. Please accommodate this new pattern now so your app doesn’t break when we update names!
April 16, 2024
Shopify CLI is now unified for app, theme, and Hydrogen development Tools
As of Shopify CLI 3.59, commands have been unified under a single npm package and our recommended installation method is as a global npm package. This provides developers with a single installation and upgrade point for all development with Shopify CLI.
Dependencies for Shopify CLI are now bundled into the package as well, reducing installation time and potential conflicts with developer dependencies.
Existing use of Shopify CLI as a local dependency in app and Hydrogen projects is still supported.
Learn more about installation in the new centralized Shopify CLI documentation and learn about migrating your app to use a global installation.
April 15, 2024
Action required
InventoryItem Input Unification API
Up to this point, you can send Inventory Item data in two places: through Product Variant mutations or on the InventoryItemUpdate mutation. Each of these places has a different input object type with very similar fields, with some keys showing up in one instead of the other.
As of Admin GraphQL API version 2024-07, these two input types are being unified. InventoryItemInput
will now be the input object type on inventoryItemUpdate
instead of InventoryItemUpdateInput
.
At the same time the following fields were added on InventoryItemInput
:
sku
countryHarmonizedSystemCodes
countryCodeOfOrigin
provinceCodeOfOrigin
April 11, 2024
Hydrogen April 2024 release Platform
Hydrogen v2024.4.0 is out today. The April 2024 Hydrogen release contains several new features:
- Built-in Shopify analytics with an improved developer experience and support for third-party services
- Vite support is now stable, providing hot-module reloading that’s up to 10 times faster
- Improved tooling for SEO
env push
command to bulk upload environment variables is now stable- Customer Account API client to simplify authentication.
- SSL tunneling functionality in the CLI.
In addition to these new features, Hydrogen 2024.4.0 includes a range of updates, performance upgrades, and bug fixes.
Check out our full Hydrogen April 2024 release blog post for more details. And please drop your comments, feedback, and suggestions in GitHub Discussions!
April 09, 2024
Storefront API Cart now supports applying Gift Cards API
As of version 2024-07 of the GraphQL Storefront API, Cart supports adding and querying for Gift Cards.
Updating Gift Cards can be achieved in two ways:
- When creating a cart - adding the CartInput
giftCardCodes
property.
- After a cart is created - performing the cartUpdateGiftCardCodes
mutation.
You can also query the cart for applied Gift Cards using the appliedGiftCards
property.
April 08, 2024
DraftOrderInput now accepts discountCodes and acceptAutomaticDiscounts. API
As of version 2024-07 of the GraphQL Admin API, DraftOrderInput now accepts discountCodes and acceptAutomaticDiscounts. These optional input fields will allow you to apply discount codes to a draft order and decide whether or not to accept automatic discounts during calculation.
Additionally, a new type field named DraftOrderPlatformDiscount has been added that describes details about how the platfom discount has been allocated across the draft order line items, the discount type, its name, and more.
Learn more about DraftOrderPlatformDiscount on Shopify.dev
April 08, 2024
Support for Plus merchants currently using products to represent additional fees or charges in checkout Platform
We have released a feature for Plus merchants who use products to represent additional fees or charges in checkout, and are using checkout.liquid to customize the order summary. Plus merchants can reach out to their MSM or support teams to request access to this feature.
April 05, 2024
Query cash transactions for a Shopify POS cash tracking session API
In version 2024-04 of the GraphQL Admin API, we exposed the cash tracking sessions that are created by Shopify POS. As of version 2024-07, you can use the API to query the cash transactions that are associated with each cash tracking session. The new cashTransactions
connection returns all of the cash order transactions that affected the amount in the cash drawer during a cash tracking session.
To learn more, see CashTrackingSession (cashTransactions
) in the GraphQL Admin API reference.
April 02, 2024
CartDiscountCode#code has been fixed to be case insensitive. API
CartDiscountCode#code
has been corrected to be case insensitive. For example, providing the input ["DISCOUNT", "dIsCoUnT", "discount"]
on cartCreate
or cartDiscountCodeUpdate
will return a cart payload with one CartDiscountCode
with the code
value set to DISCOUNT
.
April 01, 2024
Expanded targets for Admin Action Extensions Platform
You can now seamlessly integrate your app using admin action extensions at many more locations in the Shopify admin. These include draft orders pages, abandoned checkouts pages, and variant pages. You can find the full list of targets in the admin extension targets API reference.
Learn how to create your first admin action extension on Shopify.dev.
April 01, 2024
Cart checkoutChargeAmount returns amount before the discounts API
As of version 2024-04 the Storefront API field Cart.cartCost.checkoutChargeAmount
will now return an estimated amount before taxes and discounts. In previous versions Cart.cartCost.checkoutChargeAmount
was incorrectly returning the discounted cost.
April 01, 2024
Action required
Preloaded Cart and Checkout Validation configuration in Admin UI extensions API
We've added preloading of the Validation record and its metafields so that you can access them without the need of a fetch
call. The Validation API will be gated by a new read_validations
access scope in the near future, so you need to migrate to this new format for your extension to continue to work or the fetch
call will start failing.
Learn more about Cart and Checkout Validation configuration on Shopify.dev.
April 01, 2024
New sort options for fulfillment orders API
As of GraphQL Admin API version 2024-04, you can use the new sort options in fulfillmentOrders query.
createdAt
: The date that the fulfillment order was created.fulfillBy
: The date by which the fulfillment order should be fulfilled by the merchant.
April 01, 2024
New access scopes added to the Validation GraphQL Admin API API
As of today, the read_validations
access scope will be required for the validation
and validations
queries. The write_validations
access scope is required if you're using the validationCreate
, validationUpdate
or validationDelete
mutations.
If you're building an extension for Cart and Checkout Validation configuration check our updated tutorial on Shopify.dev to see how to update it so that you don't need the new access scope.
April 01, 2024
Metafield-linked product options API
As of version 2024-04 of the Admin GraphQL API, you can use the productOptionsCreate
, productCreate
, and productOptionUpdate
mutations to create metafield-linked product options.
Metafield-linked product options are only available in Shopify taxonomy early access.
April 01, 2024
Action required
Unification of count fields API
As of 2024-04
, fields that returned a count of resources will be removed and replaced with new count fields that have consistent API design and improved features.
API design and naming
Count fields are now standalone fields with a common naming pattern and their own arguments instead of being a field under a connection type.
Before:
query {
products(first: 0) {
totalCount
}
}
After:
query {
productsCount {
count
}
}
In the before example, the products
connection field was overloaded with multiple behaviors (count and pagination) which caused confusion as to how, and if, arguments affected the resulting count.
With the new count fields, there's one clear behavior and it simplifies how field arguments affect the count.
Return type
Instead of varying Int
or UnsignedInt64
return type, all count fields now return a Count
object type with precision
and count
fields.
Precision
The new precision
field indicates if a server limit was reached such that we returned early, reporting that there were "at least" n records.
For example, counting the number of products has a server limit of 10,000
. If there were 42
products, the count object would look like { count: 42, precision: "EXACT" }
. If there were 10,042
products, the count object would look like { count: 10000, precision: "AT_LEAST" }
Filtering
Some count fields will now accept filter arguments matching that of a neighboring connection, such as products
and productsCount
.
Migration
CatalogConnection.totalCount
-->CompanyLocation.catalogsCount
,Market.catalogsCount
,QueryRoot.catalogsCount
Collection.availablePublicationCount
-->Collection.availablePublicationsCount
Collection.productsCount
-->Collection.productsCount
Collection.publicationCount
-->Collection.resourcePublicationsCount
Company.contactCount
-->Company.contactsCount
Company.locationCount
-->Company.locationsCount
Company.orderCount
-->Company.ordersCount
CompanyLocation.orderCount
-->CompanyLocation.ordersCount
CompanyLocationCatalog.companyLocationsCount
-->CompanyLocationCatalog.companyLocationsCount
CustomerJourneySummary.momentsCount
-->CustomerJourneySummary.momentsCount
DeliveryLocationGroup.locationsCount
-->DeliveryLocationGroup.locationsCount
DeliveryProfile.productVariantsCount
-->DeliveryProfile.productVariantsCount
DeliveryProfile.productVariantsCountV2
-->DeliveryProfile.productVariantsCount
DiscountCodeApp.codeCount
-->DiscountCodeApp.codesCount
DiscountCodeBasic.codeCount
-->DiscountCodeBasic.codesCount
DiscountCodeBxgy.codeCount
-->DiscountCodeBxgy.codesCount
DiscountCodeFreeShipping.codeCount
-->DiscountCodeFreeShipping.codesCount
FulfillmentOrderLocationForMove.availableLineItemsCount
-->FulfillmentOrderLocationForMove.availableLineItemsCount
FulfillmentOrderLocationForMove.unavailableLineItemsCount
-->FulfillmentOrderLocationForMove.unavailableLineItemsCount
InventoryItem.locationsCount
-->InventoryItem.locationsCount
PriceRule.discountCodesCount
-->PriceRule.discountCodesCount
Product.availablePublicationCount
-->Product.availablePublicationsCount
Product.mediaCount
-->Product.mediaCount
Product.publicationCount
-->Product.resourcePublicationsCount
Product.sellingPlanGroupCount
-->Product.sellingPlanGroupsCount
Product.totalVariants
-->Product.variantsCount
ProductBundleComponent.componentVariantsCount
-->ProductBundleComponent.componentVariantsCount
ProductBundleComponent.nonComponentVariantsCount
-->ProductBundleComponent.nonComponentVariantsCount
ProductComponentType.componentVariantsCount
-->ProductComponentType.componentVariantsCount
ProductComponentType.nonComponentVariantsCount
-->ProductComponentType.nonComponentVariantsCount
ProductConnection.totalCount
-->Channel.productsCount
,Collection.productsCount
,QueryRoot.productsCount
ProductVariant.sellingPlanGroupCount
-->ProductVariant.sellingPlanGroupsCount
Publishable.availablePublicationCount
-->Publishable.availablePublicationsCount
Publishable.publicationCount
-->Publishable.resourcePublicationsCount
QueryRoot.channelCount
-->QueryRoot.publicationsCount
QueryRoot.companyCount
-->QueryRoot.companiesCount
QueryRoot.discountCodeCount
-->QueryRoot.discountCodesCount
QueryRoot.giftCardsCount
-->QueryRoot.giftCardsCount
QueryRoot.publicationCount
-->QueryRoot.publicationsCount
QueryRoot.segmentCount
-->QueryRoot.segmentsCount
SellingPlanGroup.productCount
-->SellingPlanGroup.productsCount
SellingPlanGroup.productVariantCount
-->SellingPlanGroup.productVariantsCount
Shop.limitedPendingOrderCount
-->QueryRoot.pendingOrdersCount
Shop.pendingOrdersCount
-->QueryRoot.pendingOrdersCount
SubscriptionBillingCycleEditedContract.lineCount
-->SubscriptionBillingCycleEditedContract.linesCount
SubscriptionContract.lineCount
-->SubscriptionContract.linesCount
SubscriptionContractBase.lineCount
-->SubscriptionContractBase.linesCount
April 01, 2024
Company and CompanyLocation metafields are now available in the Customer Account API API
As of 2024-04, you now have read access to metafields on Company and CompanyLocation resources via the Customer Account API.
Learn more about the Metafield
object on the GraphQL Customer Account API at Shopify.dev.
April 01, 2024
New GraphQL product APIs that support up to 2000 variants now available in 2024-04 API
As of 2024-04, new GraphQL product APIs are now available in stable release.
These new APIs increase per-product variant support from our historical max of 100 to a new limit of 2000.
In addition to higher variant support, you can use the product option mutations to manage options and option values on your products. You can also query for your product's productOptions
and your product variants' optionValues
.
Learn more about the new product and option value GraphQL APIs on Shopify.dev.
Also included in this stable release, you can use the productSet
mutation to set the entire state of a product from an external data source into Shopify, in addition to the existing mutations for adding/deleting/updating individual variants.
Learn more about the new productSet
GraphQL API on Shopify.dev.
See our guide to sync product data from an external source for more information.
With the 2024-04 API release, we will also be deprecating management of both variants
and options
via the GraphQL ProductInput
object and the /products
and /variants
REST API endpoints. Learn more here.
April 01, 2024
Action required
Deprecation timelines related to new GraphQL product APIs API
With the 2024-04 API release, along with the introduction of the new GraphQL product APIs, we are removing management of both the variants
and options
via the GraphQL ProductInput
object and have marked as deprecated the /products
and `/variants' REST API endpoints.
Below you can find migration information for public and custom apps built on existing GraphQL and REST product APIs.
Public Apps
All public apps built on existing GraphQL product APIs or REST product APIs must migrate to the new GraphQL product APIs by Feb 1st, 2025.
Custom Apps:
Custom apps built using the existing GraphQL product APIs must migrate to the new GraphQL product APIs by April 1st, 2025.
Custom apps built on REST will also need to migrate if they end up needing to support more than 100 variants.
Custom apps built on REST that do not need to support more than 100 variants can continue to use the deprecated REST product APIs, however it is important to note:
-Developers should expect that the GraphQL API will be the only supported API over the long term and will be made aware of these timelines as they become available.
-The deprecated REST product APIs are in maintenance mode; all new features and support will be built only for the new GraphQL product APIs.
-Any merchant using custom apps built with these deprecated APIs will not be able to increase their variant limit past 100.
April 01, 2024
ShippingLineInput now accepts priceWithCurrency API
As of 2024-04, you can use priceWithCurrency
to provide the price of the shipping rate along with the currency, whereas price
uses the shop currency. If priceWithCurrency
is provided, price
will be ignored.
Learn more about priceWithCurrency
on Shopify.dev.
April 01, 2024
Set LineItem attributes using CartTransform API
As of 2024-04, you can set LineItem attributes on Bundle items using CartTransform
Merge
and Expand
operations.
You can set custom attributes to either the Bundle item or its components using the new field.
Learn more about Bundles on Shopify.dev.
April 01, 2024
Storefront API now supports per-market Fulfillable Inventory API
As of Storefront API version 2024-04, you can use the @inContext
directive to query product
and productVariant
fulfillable inventory for specified market country. The Fulfillable Inventory feature must be enabled.
query Contextualized @inContext(country:CA){
product(id:"gid://shopify/Product/1" )
{
availableForSale
totalInventory
variants(first:1)
{
edges
{
node
{
id
availableForSale
quantityAvailable
currentlyNotInStock
}
}
}
}
}
Learn more about Fulfillable Inventory on Shopify help docs.
April 01, 2024
Fulfillment Orders Searching and Sorting by updated_at
field
API
As of 2024-04 developers can now sort and search Fulfillment Orders in GraphQL queries by the UPDATED_AT
field.
This will help app developers and fulfillment services to prioritize their work on fulfillment orders and reduce the query cost when sorting and searching through other filters.
Learn more about sort and search parameters for fulfillment orders on Shopify.dev
April 01, 2024
Action required
Deprecation of Checkout APIs API
As of API version 2024-04 the Checkout API’s will be marked as deprecated. This deprecation will impact both the Admin REST API (excluding Abandoned Checkout) and Storefront GraphQL API endpoints. To maintain continuity and unlock new capabilities, apps will need to migrate to either the Storefront Cart API, and or Checkout Sheet Kit for mobile apps.
Deprecation Schedule:
April 1, 2024 (Version: 2024-04
)
All affected fields within the Checkout APIs will be marked as deprecated. This is the final stable version where the Checkout APIs will remain available. The fields will also be removed from unstable
and the 2024-07
Release Candidate versions onwards. We strongly recommend you to start migrating to the new API when possible to avoid any disruptions.
April 1, 2025 (Version: 2025-04
)
The 2024-04
API version will reach its end of life. As a result, Checkout mutations will no longer be available on any version.
Recognizing the need for a high throughput cart, Shopify introduced the Storefront Cart API in 2021 as the successor to the Checkout API, and we have been continually enriching it with new features. The Cart API offers improved performance, scalability, and a richer feature set including subscriptions, product bundles, and contextual pricing. Additionally, it integrates with Shopify's web checkout for further customization using Shopify Functions and UI extensions.
The Checkout Sheet Kit, compatible with Android, Swift, and React Native, streamlines mobile app development by integrating a fully-featured web checkout. This eliminates the need for a separate checkout build, reducing maintenance while preserving all customizations and business logic.
Action Required:
Follow the Cart API Migration Guide to update any application calling Admin REST API or Storefront GraphQL API checkout endpoints prior to 2025-04
to utilize the Cart API or Checkout Sheet Kit to avoid disruption.
If you have questions, please utilize the feedback repository.
April 01, 2024
Action required
receipt
removed from OrderTransaction GraphQL Admin API
API
As of 2024-04, OrderTransaction.receipt
will be removed from the Admin GraphQL API. The field has been deprecated since 2019-04 and is replaced by OrderTransaction.receiptJson
Both fields contains the same data but in different formats. receipt
was returning a Ruby hash formatted as a string, while receiptJson
is returning JSON.
Standardizing around JSON-formatted receipts will make it easier for developer to build consistent integrations and removing duplicate fields will simplify our API.
Learn more about the change in the OrderTransaction GraphQL API documentation
April 01, 2024
Action required
Update note to be required in cartNoteUpdate API
As part of the GraphQL Storefront API 2024-04 API release, we've updated the cartNoteUpdate
API to make the note
argument required.
Learn more about the Cart
object on Shopify.dev.
April 01, 2024
Action required
Removal of Customer order-related sort keys on Admin API API
As of GraphQL Admin API version 2024-04, the following Customer sort keys have been deprecated: LAST_ORDER_DATE
, ORDERS_COUNT
, TOTAL_SPENT
. Ordering customers by these attributes is available when filtering customers using segments.
Learn more about customer segmentation on Shopify.dev.
April 01, 2024
Introducing metafieldsDelete API
As of 2024-04, you can use the metafieldsDelete
mutation to delete up to 25 metafields
at once.
Learn more about metafields on Shopify.dev.
April 01, 2024
New inventory_management
boolean argument on fulfillmentServiceUpdate
mutation
API
As of 2024-04 version Admin GraphQL API, you can update inventory_management
boolean value on the FulfillmentService object using the [fulfillmentServiceUpdate mutation]((https://shopify.dev/docs/api/admin-graphql/2024-04/mutations/fulfillmentServiceUpdate) .
Learn more about inventory_management
argument on Shopify.dev.
April 01, 2024
Action required
New Create Fulfillment Request Validation API
As of Admin version 2024-04 , there cannot be multiple of the same fulfillment_order_id
within the line_items_by_fulfillment_order
param for the REST "Creates a fulfillment for one or many fulfillment orders" API and GraphQL fulfillmentCreateV2
mutation.
Please combine any payload with the same fulfillment_order_id
into one group.
April 01, 2024
Action required
Deprecation of the fulfillmentService.fulfillmentOrdersOptIn
field
API
The fulfillmentOrdersOptIn
field on the FulfillmentService
GraphQL and REST API objects, along with the related mutations and endpoints, is being deprecated as the migration to the Fulfillment Orders API has been completed. All properly functioning fulfillment services now have the fulfillmentOrdersOptIn
field set to true
.
In the 2024-04
API version, the fulfillmentOrdersOptIn
field becomes nullable and defaults to true
in the fulfillmentServiceCreate mutation and the Create Fulfillment Service REST endpoint. This field will be removed from the mutation input and the REST endpoint parameters in the subsequent API version (2024-07
). To prepare for the 2024-07
API version release, stop supplying the fulfillmentOrdersOptIn
parameter when creating a new fulfillment service.
April 01, 2024
Action required
Removal of productDuplicateAsync
mutation from the GraphQL Admin API
API
As of 2024-04, we're removing the deprecated productDuplicateAsync
mutation. The mutation was deprecated since 2023-07
version.
Use the productDuplicateAsyncV2 mutation instead.
April 01, 2024
Adding additional value to FulfillmentOrderAssignmentStatus API
As of API version 2024-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
parameter in the assignedFulfillmentOrders query can now accept a value of FULFILLMENT_UNSUBMITTED
for filtering in addition to the existing FULFILLMENT_REQUESTED
, FULFILLMENT_ACCEPTED
, and CANCELLATION_REQUESTED
filter values.
April 01, 2024
New Storefront GraphQL APIs for B2B are available in 2024-04 API
As of GraphQL Storefront API version 2024-04
, we are adding support for query contextualization for B2B buyers via the @inContext
directive. This allows developers to query the products and prices a B2B buyer may have for a particular company location.
Developers will also be able to query associated volume pricing and quantity rules, and work with a Cart that is aware of B2B specific rules and pricing.
Developers will also be able to query a purchasing company associated with a cart.
Learn more about B2B on Shopify.dev.
April 01, 2024
Customer APIs: Allow querying of customer subscription contracts API
As of the 2024-04 release of the GraphQL Customer API, you can now query for a customer's subscription contracts using the subscriptionContracts
or subscriptionContract
fields.
This allows developers to query for all subscription contracts belonging to a customer, or to query for a specific subscription contract.
Learn more about querying for a customer's subscription contracts on Shopify.dev.
April 01, 2024
Action required
New Error codes and updated error code mapping for payment and billing API
As of 2024-04, Added the following fields to the SubscriptionBillingAttemptErrorCode
enum
InsufficientFunds
PurchaseTypeNotSupported
Paypal Error
CardNumberIncorrect
FraudSuspected
Additionally, the following payment error code mappings have changed: * “Insufficient Funds” has been removed from “Invalid Payment Method” and now receives its own billing attempt error * “Pick up card” has been removed from “Payment Method Declined” and is now classified as “Fraud Suspected” * “Invalid Item Total” has been added to “Payment Method Declined”
And the following codes from payment processors have changed:
-
- 2007 now maps to “Card Number Incorrect”
- 2014 now maps to “Fraud Suspected”
- 2105 now maps to “Transient Error”
- 2106 now maps to “Transient Error”
- 2107 now maps to “Invalid Payment Method”
- 2108 now maps to “Invalid Payment Method”
-
- 10417 now maps to “Paypal Error General”
-
- cardnotsupported now maps to “Invalid Purchase Type”
- invalid_account now maps to “Card Number Incorrect”
- invalid_amount now maps to “Payment Method Declined”
April 01, 2024
Action required
Inventory Mutations and Fields Removal API
As of Admin API 2024-04, we are removing the following fields and mutations:
- InventoryLevel.available
- InventoryLevel.incoming
- InventoryLevel.deactivationAlertHtml
- Mutation.InventoryAdjustQuantity
- Mutation.InventoryBulkAdjustQuantityAtLocation
After building new fields to handle inventory quantities other than available, new fields and mutations that can handle all quantities were needed and released in 2023-01.
InventoryLevel.available
and InventoryLevel.incoming
should be replaced with InventoryLevel.quantities
.
InventoryLevel.deactivationAlertHtml
should be replaced with InventoryLevel.deactivationAlert
.
Mutation.InventoryAdjustQuantity
and Mutation.InventoryBulkAdjustQuantityAtLocation
should be replaced with Mutation.InventoryAdjustQuantities
or Mutation.InventoryMoveQuantities
.
For those still using these fields on unstable
, they will continue to work until 2024-04 is no longer supported.
More information on how to use these new fields can be found here
April 01, 2024
[Checkout Branding API] New color schemes API
As of version 2024-04 of the Admin API, you can use the checkoutBrandingUpsert
mutation to configure two new color schemes: scheme3
and scheme4
.
With this change, up to four color schemes can be configured and used in different sections.
Learn more about these new color chemes here
April 01, 2024
[Checkout Branding API] Initial release of header and footer style customizations API
As of version 2024-04 of the Admin API, you can use the checkoutBrandingUpsert
mutation to configure styling for the header and footer of your checkout.
With this change, header and footer sections can now be customized with color and spacing controls.
You can learn more about customizable header and footer in the GraphQL Admin API docs.
The new customizable fields are colorScheme
and padding
.
April 01, 2024
Action required
Taxonomy API API
Shopify has introduced a public product taxonomy, serving as an open-source, standardized, and global classification of products sold on Shopify. This taxonomy, composed of product categories, attributes, and attribute values, is utilized across Shopify and integrated with numerous marketplaces. You can view the latest product taxonomy on our taxonomy explorer.
The new product taxonomy is now available in our public API with the 2024-04 release. This feature allows developers to navigate the taxonomy tree for categories, attributes, and values.
In order to support this change a number two existing APIs have been deprecated and replaced in favor of queryRoot.taxonomy.categories
queryRoot.productTaxonomy
queryRoot.productTaxonomyNodes
Additionally the following changes have been made:
- The
ProductTaxonomyNode
type has been replaced with aTaxonomyCategory
type. - The
productCategory
field onProduct
has been deprecated and replaced bycategory
. This field directly references the newTaxonomyCategory
type.
March 28, 2024
Action required
Orders with payment terms no longer always include an OrderTransaction
when created from a Draft Order
Platform
Orders with payment terms no longer always include an OrderTransaction
when created from a Draft Order. Going forward, the transactions
field on these Orders will be treated as an output that provides specific information about payments and other financial events related to the order, rather than as an implicit signal or side effect of creating an order from a draft.
If your app depends on implicit OrderTransactions
that are added by creating an order from a draft, then you will need to switch to alternative options, for example recording payments or payment methods on an order to create an OrderTransaction
.
March 28, 2024
Introducing the new Pickup Points in early access - we want your feedback! API
Introducing Pickup Points, a new Shopify Function that enables developers to build custom apps for Plus shops that offer pickup points in checkout to locations like post-offices and parcel lockers.
Developers can integrate third-party pickup locations from any network of their choice, customize delivery information based on business logic, and define location-based pricing.
Pickup Points is only available for Shopify Plus merchants.
We want your feedback! Try Pickup Points early and share feedback that will directly guide development. To request access, contact us at pickup-point-generator-early-access@shopify.com.
Visit the developer documentation for more information.
March 27, 2024
Action required
Plan-level trial configuration in the App Store app listing submission page Shopify App Store
We are changing how trials can be configured on your app listing:
- Trials will now be plan-level rather than app-level
- Free plans can no longer have a trial associated with them as they should not be time bound
- The change applies to apps with recurring monthly/annual subscription plans
- The change does not impact apps that are listed as completely free, or free to install
This update gives you more control on how you market trials on the App Store.
Shopify has auto-filled the app-level trial data to each plan card based on the last app listing submission form configuration. Please update these default values in the app listing submission form if you have plans with different trial lengths.
There is a grace period before plan-level trial changes appear on Shopify App Store app listing pages, which will happen on April 29th. This grace period does not apply to other fields in your app listing submission form, which you can still edit and update in real-time.
To modify trial durations, manage your app’s listing in the Partners Dashboard under the Distribution tab. Learn more about configuring your app listing on Shopify.dev.
March 27, 2024
Introducing a new, guided app submission process Shopify App Store
Get your apps published faster with our streamlined app review experience. It provides a clear, guided process that ensures you’ve checked off some key requirements before submitting and contextual guidance that reduces rework. You'll know exactly where you are in the process at a glance with actionable statuses that let you know what to expect next.
Learn more about the app submission process on Shopify.dev.
March 26, 2024
Action required
Removal of deprecated tactics and add ability to query is_external API
As of 2024-04, we are making it easier to use our External Marketing API by removing old deprecated values and exposing is_external
as a value.
Breaking Changes
- The deprecated
follow_up
,receipt
,display
,search
,seo
anddirect
marketing tactics are being removed from the2024-04
API version. See the MarketingTactic documentation for which tactics should be used instead.
Non-breaking Changes
- The
is_external
attribute can be fetched in theMarketingActivities
query to know if an activity was created and is managed by an external platform.
March 25, 2024
Network access for Shopify Functions is now available in early access API
Network access for Shopify Functions is now available in early access. Primarily for merchants on Shopify for enterprise, this powerful new capability allows merchants to integrate Shopify with their own commerce ecosystem and fetch information from external services.
Network access is currently supported in early access on the following Shopify Functions:
- Cart and Checkout Validation
- Local Pickup Delivery Option Generator
- Pickup Point Delivery Option Generator
To learn more about Network access for Shopify Functions, please refer to the documentation.
March 21, 2024
REST API 2024-04 reports resource deprecation API
As of REST API 2024-04, we’re deprecating the Reports resource.
The REST API Reports resource used to create custom reports in analytics has been deprecated. You can still use previous, stable versions of the REST API to continue creating custom reports in admin for the time being.
March 21, 2024
Action required
Product Feed variant images no longer fall back to product image API
As of API version 2024-07, the variant image field in the product_feed/incremental_sync
and product_feed/full_sync
webhooks will no longer fall back to the product's first image when an image has not been explicitly set for the variant. Instead, no image will be returned.
If this change is undesirable for your use case, you can replicate the old behavior by assigning the first product image to the variant when it is null after receiving the webhook.
March 21, 2024
Action required
Update on deprecation of unpublished apps Shopify App Store
In May 2022, Shopify announced that unpublished apps would no longer be supported. To ensure merchant trust and security, all apps must now pass Shopify App Store review to guarantee the best app experience including branding, installation, onboarding, functionality, and quality. Developers with unpublished apps are required to take action by either converting them to public apps by meeting Shopify App Store requirements and submitting them to Shopify for review, or sunsetting their unpublished apps.
Impacted developers will receive an email outlining next steps, including the deadline to submit your apps for review. Please ensure your contact information is up to date.
If your unpublished apps have not been submitted for review or sunset by the deadline, these apps will have their API access revoked and will be uninstalled from all merchant stores. Developers will be notified at least 60 days prior to any changes being made.
For more information, please visit our documentation.
March 21, 2024
New timeout parameters for the Order Status Page Platform
To enhance the security of merchant and customer information and provide additional protection for customer data, we’ve implemented level 2 protected customer data requirements for partners and developers, alongside new timeout parameters and login requirements to the Order Status Page.
After an order is created, customers can access the Order Status Page without logging in for a limited timeframe and/or number of browser visits. After these timeout parameters have been reached, customers must provide credentials to access the Order Status Page, such as phone number, email address, order number, or by using passwordless login.
We recommend that partners and developers who send transactional SMS on behalf of merchants include the customer’s order number alongside any links to the Order Status Page.
Learn more about changes to the Order Status Page in our developer documentation.
March 18, 2024
Validation mutation endpoints now include optional title attribute API
As of version 2024-04 of the GraphQL Admin API, a new optional field title
has been added to validationCreate
and validationUpdate
. This will allow you to create multiple instances of the same Validation function where the unique title
will help merchants easily differentiate between them.
March 18, 2024
New Location fields on GraphQL Admin API API
As of version 2024-04 in the GraphQL Admin API, new fields createdAt
, updatedAt
, and isFulfillmentService
have been added to the Location
object.
Learn more about Location
fields on the GraphQL Admin API at Shopify.dev.
March 15, 2024
Action required
Level 2 protected customer data requirements are now needed to access the order.statusPageUrl
field
API
We are requiring apps to meet Level 2 Protected Customer Data Requirements in order to acess the field order.statusPageUrl
on the Admin GraphQL API and on the Admin REST API.
This change is applicable to all API versions. We recognize that this may be a breaking change for some apps. However, this change is necessary to ensure the protection of customer data.
Learn more about Protected Customer Data, including the actions you need to take to enable existing apps to continue to have access to order.statusPageUrl
on Shopify.dev.
March 15, 2024
ui-save-bar
component added to the latest version of App Bridge
Tools
With the latest version of App Bridge, you can use the ui-save-bar
component and the SaveBar
React component to declaratively control the contextual save bar, including setting loading
and disabled
states of the Save and Discard buttons. Learn more about it in the documentation.
March 15, 2024
Modal src
attribute added to the latest version of App Bridge
Tools
With the latest version of App Bridge, you can use the src
attribute with the ui-modal
component and the Modal
React component to display content from the provided URL. Learn more about it in the documentation.
March 15, 2024
Query retail cash tracking sessions with the GraphQL Admin API API
As of version 2024-04, you can use the GraphQL Admin API to query a shop's Shopify POS cash tracking sessions. The API returns cash tracking data for locations that have a Shopify POS Pro subscription
Below are some examples of the data that's available on the new CashTrackingSession
type:
- Opening and closing times, and the staff member who performed each action
- Adjustments to add or remove cash from the cash drawer, and the staff member who performed each action
- Notes attached to the actions listed above
- Aggregations, such as the total cash sales, total cash refunds, and the net cash sales that were processed during the cash tracking session
- Discrepancies between the amount counted in the cash drawer and the amount expected
To find out more, see CashTrackingSession in the GraphQL Admin API reference.
March 14, 2024
Swatches and images for product filters API
As of version 2024-04 of the Storefront API, you can use new attributes of the Filter and FilterValue objects to create visual filters for your custom storefront.
We are adding FilterValue.swatch
intended for color and pattern swatches and FilterValue.image
for more detailed imagery. Use the new Filter.presentation
attribute to know the intended display of each filter.
Merchants must use Shopify's Search & Discovery app to set visual filters for their store.
March 13, 2024
POS UI Extensions 1.7 Update: Support for multiple cart discounts API
As of March 13, we added the following updates to POS UI Extensions:
- Added a
discounts
property to the Cart object, which includes all cart discounts. - Added
addCartCodeDiscount
to the Cart API, which allows the UI extension to add a code discount. The existingapplyCartDiscount
will still function for code discounts, too. - Added
remove AllDiscounts
to the Cart API, which allows the UI extension to remove all cart discounts. - Added a
listHeaderComponent
to the List component.
All of the changes are available for POS UI extensions version 1.7.0 and POS app version 9.4.0. See the version log for all version details.
March 13, 2024
Field isGiftCard
on all line item types
API
As of Admin GraphQL API version 2024-04, the isGiftCard
field that was present on DraftOrderLineItem
and CalculatedDraftOrderLineItem
is now also present on:
ExchangeCheckoutLineItem
ExchangeV2LineItem
LineItem
LineItemMutable
It is now preferable to use this field to check whether a line item is a gift card instead of using the fulfillment service.
March 13, 2024
New Shopify App Store apps require the latest App Bridge Shopify App Store
As of March 13th, 2024, net new Shopify App Store apps must use the latest Shopify App Bridge by adding the app-bridge.js
script tag to the <head>
of each document of your app.
March 12, 2024
Customer Redaction support on Subscriptions APIs API
As of version 2024-04 of the Admin GraphQL API, the subscriptionContractAtomicCreate and subscriptionContractCreate mutations will return a new error code CUSTOMER_REDACTED when creating new subscription contracts for customers scheduled for redaction or have been redacted.
Learn more about customer redaction here.
March 12, 2024
New filter value swatch drop available, replacing the deprecated filter value's display drop API
You can now use a Liquid swatch drop to create visual filters for your Online store themes.
The filter value display drop is now considered deprecated in favour of swatch
. The display
drop will continue to function as it does today for backwards compatibility in merchants’ themes.
March 11, 2024
Delivery Groups now contain a group type API
As of Storefront API's 2024-04 release, you can use cart.deliveryGroups.groupType
to determine whether a delivery group represents a single delivery (ONE_TIME_PURCHASE
) or is a recurring delivery (SUBSCRIPTION
)
March 08, 2024
More data available in the checkout_completed customer event API
You can now collect the id of a customer within the order object of the checkout_completed customer event. This gives you more customer insights to improve marketing campaign targeting and analytics.
Learn more about the checkout_completed event in our developer documentation
March 08, 2024
Clarifications in the Webhooks Reference docs Tools
- Clarified webhooks-related terminology in the Webhooks Overview page to make it easier to get started
- Updated accuracy of Limitations on webhook delivery guarantees
- Updated technical implementation accuracy of Avoiding debounces
March 07, 2024
Hydrogen March 2024 release Platform
Hydrogen v2024.1.3 is out today. The March 2024 Hydrogen release contains several new features:
- Hydrogen now includes experimental support for Vite.
- A new
env push__unstable
command to upload local environment variables to Oxygen from the command line - You can now get comments on GitHub PRs when Oxygen creates a preview deployment on your connected storefront.
In addition to these new features, Hydrogen 2024.1.3 includes a range of updates, performance upgrades, and bug fixes, including an upgrade to Remix v2.8.
Check out our full Hydrogen March 2024 release blog post for more details. And please drop your comments, feedback, and suggestions in GitHub Discussions!
March 06, 2024
App submissions now require a screencast demo Shopify App Store
Developers must create a video demo that illustrates how to use their app, as a now mandatory requirement for submission.
New apps that are in a Draft status will be asked to provide this prior to submitting for initial review. Submitted apps that are already in initial review may be asked to provide one before they can be published. Published apps that become Delisted may be asked to provide one before they can become published again.
This requirement will substantially help our review team to understand app flows and functionality during testing, and will speed up the review process.
March 06, 2024
Action required
Return Sales and Exchange APIs API
Returns will now create corresponding Sales entries.
As of 2024-04, SalesAgreements made as part of a return will have the type ReturnAgreement. The OrderActionType enum can have a type of RETURN.
As of 2024-04, the SaleLineType enum can now have a type of FEE. Fees can be of the type RestockingFee or ReturnShippingFee, representing corresponding fees on a return.
Any Admin API consumers of OrderActionType or SaleLineType will need to accept this new enum value. Previous versions of the Admin API will show these values as "UNKNOWN".
You can now view ExchangeLineItems on their associated return. This provides context on returns that will be resolved with an exchange.
A new webhook "returns/update" has been added. This webhook will fire when fees or line items on a return are modified or removed. All returns webhooks will now display restock and shipping fees, as well as exchange line items.
Dispositions can no longer be created for canceled reverse fulfillment orders. This will result in the new error code INVALID_STATE.
March 05, 2024
Action required
Inventory Item new fields and ProductVariant deprecations API
As of Admin GraphQL API 2024-04, there will be new fields exposed on InventoryItem
(and related input types) and some fields on ProductVariant
(and related input types) that were marked as deprecated.
For InventoryItem
and related input types:
InventoryItemMeasurement
andInventoryItemMeasurementInput
were added as new types, with a single field:weight
(which is aWeight
type).measurement
was added as a field toInventoryItem
.harmonizedSystemCode
,measurement
, andrequiresShipping
were all added as input fields toInventoryItemInput
.
For ProductVariant
and related input types:
fulfillmentServiceEditable
,weight
, andweightUnit
were all marked as deprecated onProductVariant
.harmonizedSystemCode
,requiresShipping
,weight
, andweightUnit
were all marked as deprecated onProductVariantInput
andProductVariantBulkInput
.
These changes are all in support of removing long-deprecated fields on ProductVariant
and removing the duplicated fields between ProductVariant
and InventoryItem
.
March 04, 2024
Introducing category page ads on the Shopify App Store Shopify App Store
Developers can now generate even more demand for their apps by showcasing them on the category and subcategory pages of the Shopify App Store.
Learn more about category page ads on Shopify.dev.
March 01, 2024
Filter product media by media_type API
As of 2024-04, you can filter the results returned by the Product.media connection to a specific media_type
.
Using the Product.media
connection enables you to retrieve all the media that's associated with a product including images, video, and 3D models or filtering to a specific media_type
such as IMAGE
. We recommend that developers migrate their apps from the Product.images
connection to Product.media
.
February 29, 2024
Add and remove shipping lines with new mutations on the order editing API API
As of GraphQL Admin API version 2024-04
, you can add new shipping lines or remove existing shipping lines when editing an order. You can also continue to query removed shipping lines.
The mutation orderEditAddShippingLine
allows you to add a new, custom shipping line to an existing order.
The mutation orderEditRemoveShippingLine
allows you to remove existing shipping lines from an order.
The mutation orderEditUpdateShippingLine
allows you to update the attributes of a newly added shipping line before committing the order edit.
The new field shippingLine.isRemoved
allows you to determine whether a shipping line has been removed.
The new parameter includeRemovals
on the connection order.shippingLines
allows you to query removed shipping lines. The default value for this parameter is false, so removed shipping lines will not be returned by default.
For REST API users, removed shipping lines will continue to be returned in the payload of the Order resource. As of API version 2024-04
, you can determine whether a shipping line has been removed by checking the value of the new attribute is_removed
.
For consumers of Order webhooks, removed shipping lines will also continue to be returned in the payload. As of API version 2024-04
, the payload for shipping lines will have a new key is_removed
. You can consume the order/edit
webhook to be notified when shipping lines have been added or removed from an order.
For more information about editing shipping lines, visit the tutorial on editing an existing order with the Admin API.
February 28, 2024
OrderPaymentStatus Now Exposes Related Order Transactions API
As of 2024-04, you can now query the OrderPaymentStatus object to obtain information about its corresponding transactions.
February 28, 2024
New amount field on the OrderCreateMandatePayment Mutation API
As of 2024-04, you can specify custom amounts to be charged from a vaulted card through the OrderCreateMandatePayment mutation for Shopify Plus merchants.
February 28, 2024
New transactionVoid Mutation API
As of version 2024-04 of the Admin GraphQL API, you can now void a transaction through the transactionVoid mutation.
February 28, 2024
Defer Directive for Storefront API is now available in developer preview API
The @defer directive is now available in developer preview, allowing developers to prioritize part of a GraphQL query without having to make multiple requests to fetch the remaining information. Clients can make a single request and data will be received in a stream of responses.
This developer preview will guide our decision on the inclusion of this directive in the Storefront API. It will also provide insights into whether clients can effectively support the @defer directive in their implementations, as we are planning the introduction of fields that require mandatory use of @defer.
Test out the defer directive today by enabling the developer preview and following our tutorial . We value your input, please share your feedback on Github.
February 26, 2024
App Bridge React v4 released Platform
React developers can start using the App Bridge React v4 via NPM. This optional NPM package works with the required App Bridge library loaded via the <script>
tag.
For those already using App Bridge React v3 or lower, please refer to the migration guide for how to upgrade.
February 23, 2024
lineItem.discountedTotalSet
can optionally include code based discounts
API
As of the 2024-04 version of the GraphQL Admin API, you can use the new argument withCodeDiscounts
on the order.lineItem.discountedTotalSet
field to include or exclude line item discounts originating from a discount code. The current behaviour of discountedTotalSet
is to exclude code based discounts and as such, the default value for this option is false
so there will be no change required for clients who want to continue to have them excluded.
See the documentation for discountedTotalSet
on Shopify.dev. The argument is already available on the unstable
Admin API.
February 20, 2024
Action required
Return mutation will update sales (previously unchanged until time of Refund) API
As of February 20, 2024, the returnCreate
mutation and the returnApproveRequest
mutation will create return sales on the order. Each returned item will create a product
type return sale. Previously, these mutations did not create sales.
This new behavior is applied to all non-Plus merchants, and Plus merchants who have enabled Exchanges capabilities using Test Drive. Learn more about feature test drives in our Shopify help docs
To keep track of line item or value changes to the order due to returns, we will soon provide more information on subscribing to enhanced Return related webhooks. Stay tuned for these details.
Related changes
Return fees as RETURN
type
When a merchant adds return fees to a return using the admin, return fees will show up as a RETURN
OrderActionType
on a SalesAgreement
.
LineItem.currentQuantity
and LineItem.refundableQuantity
definition changes
Previously, both LineItem.currentQuantity and LineItem.refundableQuantity returned identical numbers. They represented the total quantity of the line item minus the quantity that had been removed.
The definitions of these properties have been updated:
- LineItem.currentQuantity
: This property now considers returns that are in progress, even if they haven't been refunded yet. CurrentQuantity will now be the line item's total quantity minus the removed or returned quantity.
- LineItem.refundableQuantity
: It now represents the line item's total quantity minus the refunded quantity, not the removed quantity. This indicates the quantity of line items that are available for a refund, including items in a return.
These changes affect all currently supported APIs (GraphQL, REST, liquid, etc.)
Use ReturnRefund when refunding a return line
Use the returnRefund
GraphQL mutation when refunding a line item on a return to guarantee accurate sales ledger entries. We strongly encourage developers to migrate away from using refundCreate
and POST refund to refund return line items due to potential inaccuracies in the sales ledger due to both returns and refunds producing product
type return sales.
February 15, 2024
POS UI Extensions 1.6 Update: Banner on CameraScanner and paginated variant fetching API
As of February 15, we added the following updates to POS UI Extensions:
- Added optional
bannerProps
to the CameraScanner component, which allows the UI extension to surface banners within the context of the CameraScanner. - Added
fetchPaginatedProductVariantsWithProductId
to the ProductSearch API, which allows the UI extension to fetch pages of variants for a product by ID.
All of the changes are available for POS UI extensions version 1.6.0 and POS app version 9.2.0. See the version log for all version details.
February 14, 2024
February 12, 2024
Deprecation of Order Risk APIs and Introduction of Risk Assessments API API
Starting from April 2024, the Order risk REST and GraphQL APIs are deprecated:
Clients are advised to use the new Risk Assessments API instead:
To create assessments, you can now use the new mutation orderRiskAssessmentCreate.
Additionally, a new webhook topic is available: ORDERSRISKASSESSMENT_CHANGED
February 06, 2024
New additionalInformation
object argument on fulfillmentOrder
query
API
As of version 2024-04 of the Admin GraphQL API, you can read the additionalInformation
object value on the deliveryMethod
object using the fulfillmentOrder
query .
Learn more about additionalInformation
argument on Shopify.dev.
February 01, 2024
Store Credit Primitive and API now available in developer preview API
Help merchants with post-purchase customer service by enabling them to issue, track, and report accurately on store credit using Shopify’s new Store Credit Primitive and API, available in developer preview.
Streamline checkout, customer support and workflows, with a single, reloadable store credit balance for customers. Start using the store credit GraphQL API today to add key functionality that enables differentiation between gift cards and store credit, the linking of store credit directly to a sole customer, and more.
January 31, 2024
New OAuth2 Token Exchange API & Shopify managed install authorization flows available Platform
We've introduced OAuth2 Token Exchange and Shopify managed install to eliminate screen flickering due to full page redirects on app load and provide uninterrupted & faster embedded app loading and installs.
To avoid unnecessary redirects and page flickers during the app installation process, configure your app's required access scopes using Shopify CLI. This allows Shopify to manage the installation process for you.
OAuth2 Token Exchange allows embedded apps to exchange session tokens for access tokens. This avoids the multiple requests and redirects as a result of OAuth authorization code grant, making it easier to retrieve both online and offline access tokens.
Use Shopify CLI to generate a starter app, which uses token exchange and leverages Shopify managed install. For existing Remix apps, please refer to our migration guide.
January 31, 2024
Cart and Checkout Validation Function API API
You can now use Admin UI extensions to provide a user interface for merchants to configure your Cart and Checkout Validation Functions.
Additionally, merchants on any plan can now use validation functions provided by public apps distributed through the Shopify App Store.
Learn more on Shopify.dev.
January 31, 2024
Checkout branding supports container styles API
The Checkout Branding API now supports container styling for sections in the main and the order summary areas of checkout. This change is available in the 2024-04 release candidate.
These changes will give merchants more control over section corner radius, border styles, color scheme, spacing and shadow customizations within or between sections. We will be releasing an update to customize the header and footer sections in a subsequent release.
Learn more through our reference documentation.
January 31, 2024
Checkout supports header and footer customizations API
As of 2024-01-31, Checkout Extensibility enables merchants to customize checkout's header and footer with their brand and navigation intent.
Use the GraphQL Admin API's checkout branding to: * Hide the logo, breadcrumbs, default footer content, and Back to cart links * Control the footer position and alignment
Use checkout UI extensions to add content and replace hidden content, with the new header and footer extension targets in Checkout and the Thank you page.
Learn more on Shopify.dev.
January 31, 2024
New Discounts Allocator Function API in Developer Preview API
You can now use the Discounts Allocator Function API in Developer Preview to implement custom logic for distributing discounts across multiple products or orders.
This new API allows you to define your own logic for how discounts are distributed, enabling the implementation of merchant-specific discount strategies.
Learn more about the Discounts Allocator Function API in our developer documentation.
January 31, 2024
Theme Check 2.0: Unified theme developer tools everywhere Themes
Theme Check 2.0 marks the grand unification of Shopify theme developer tools. Now, you can use all Language Server Protocol (LSP) features in the admin code editor, on the Shopify Liquid VS Code extension, and on Shopify CLI.
Here's what's now available everywhere:
- Hover documentation support
- Code completion for theme, section, and block settings
- Code completion for theme translations
- Code completion for HTML tags, attributes, and values
- Code completion for Liquid filters, objects, and tags
- Enhanced auto-closing pair user experience
- Automatic support for new Liquid tags, filters, and objects
We're excited to see how these changes will enhance your theme development process. Learn more about Theme Check 2.0 on Shopify.dev and happy coding!
January 31, 2024
Gain more customer behavior analytics with DOM events API
You can now subscribe to select DOM events with the Web Pixels API, including input_changed, input_blurred, input_focused, form_submitted, and clicked.
These new events will help merchants better understand how visitors are engaging with their online stores.
Learn more about Web Pixels on Shopify.dev.
January 31, 2024
Hydrogen updates: Tool that make your path to production painless Tools
With the latest release, Hydrogen and Oxygen make the path to production more seamless than ever. We’ve added new developer tools so you can more easily debug and optimize your build before you deploy:
- Subrequest profiler: get a more detailed look at what’s happening inside your Remix loaders — identify query waterfalls, inefficient API calls, and suboptimal caching behavior.
- Error console: stack-trace errors back to your source code, right from the Shopify admin, so you can get right to the fix.
- CLI deploys: Deploying to Oxygen is easier than ever. Run the new deploy command to create deployments from your local dev environment, or build your own CI/CD processes on any platform.
- End-to-end testing support: Automatically and securely run E2E tools like Playwright or Cypress on every Oxygen deployment with our new E2E testing tokens.
- Shareable storefront previews: Share progress with colleagues and stakeholders — even if they don’t have access to your Shopify Admin — with our new revocable, token-based shareable links.
- Runtime mirroring: Hydrogen’s development server runtime is now nearly identical to production Oxygen, and now serves assets from a separate domain to better replicate how Shopify’s CDN works.
- Bundle insights: analyze your worker bundle file to find bloated dependencies, optimize your bundle size, and reduce cold start times, so your app stays fast over time.
- CLI upgrade command: Stay up-to-date with the latest version of Hydrogen and Remix with h2 upgrade command from your CLI. Your project’s critical dependencies will all be updated to the latest version, along with a custom migration guide.
- It’s easier than ever to learn Hydrogen, with our refreshed docs, and a new suite of examples.
Learn more about our latest release in detail.
January 31, 2024
Customer Privacy API now available on Hydrogen & Oxygen API
You can now integrate the Customer Privacy API and the Shopify Privacy & Compliance app into your Hydrogen storefront, making it easier to comply with data protection laws and increase customer trust. This allows consent to flow to Shopify so it can be honored on Pixels, Checkout and other services.
January 31, 2024
New structured app category details Shopify App Store
The Shopify App Store is introducing structured app category details to make it even easier for merchants to evaluate relevant apps within the same category. Starting today, category details can be added for apps classified under:
- Product reviews
- Dropshipping
- Product bundles
- Subscriptions
- Loyalty and rewards
- SEO
- Page builder
- Pop-ups
- Discounts
- Email marketing
Using this structured data, merchants will soon be able to see this information on the app details page, as well as on the compare apps page
Learn more about how App Category Details work at shopify.dev
January 31, 2024
New install modal and data access section for apps with defines permissions Shopify App Store
When you define the permissions your app requests, they will now show up in a new "Data Access" section on your app details page to help build merchant trust.
Your installation flow will also be updated to a new installation modal, rather than a full page experience, which will streamline the install process for merchants.
January 31, 2024
[General Availability] Checkout Sheet Kit for Android, React Native, Swift v1.0.0 Tools
Shopify’s Checkout Sheet Kit enables you to provide the world’s highest converting, customizable, one-page checkout directly within a mobile app. Today we are happy to announce that the v1.0.0 of Checkout Sheet Kit for Android, React Native and Swift is officially available and no longer in developer preview. The libraries are open-source and ready for you to start building.
More information can be found in documentation as well as in the Github repositories linked above.
January 31, 2024
New GraphQL APIs that support 2000 product variants now in developer preview API
Now in developer preview, we’ve introduced new GraphQL product APIs that support 2000 variants, allowing for support of more complex catalogs.
January 31, 2024
Guided Search Shopify App Store
Merchants can now discover your app in the new AI-powered guided search that supports merchant’s natural language queries, and provides insights to help them make a better informed app decision. This can be accessed through the search bar in the Shopify App Store under the "Ask about apps" section. Keep your listing accurate and up-to-date with the solution that you provide to help the right merchants find your app.
January 31, 2024
Action required
Coming soon: New way to deploy app configuration using Shopify CLI Tools
An upcoming release affects the app configuration deployment process using Shopify CLI, which includes breaking changes that require your attention.
Effective January 31, 2024, we're introducing an improved way to release your app configuration and extensions together using the shopify app deploy
command. With this update, you can version and roll back changes to your app configuration as part of app versions!
Upcoming Breaking Change Details: The Shopify CLI shopify app config push
command will no longer be supported in any CLI version. Instead, you should use the shopify app deploy
command to release your app configurations and extensions.
Next steps starting January 31, 2024:
- Developers using
shopify app config push
to release app configuration need to update to the latest Shopify CLI version and useshopify app deploy
instead. - Developers using
shopify app config push
in CI/CD workflows need to update their deployment scripts to remove this command.
Detailed migration instructions will be provided in app configuration documentation at the time of release on January 31.
January 31, 2024
Subscribe to compliance topics using PubSub or Eventbridge Tools
You can now subscribe to compliance topics using you app's TOML configuration file and use PubSub or Eventbridge URIs as your subscription endpoint.
Learn more about mandatory compliance topics here.
January 25, 2024
POS API added to the latest version of App Bridge Tools
With the latest version of App Bridge, you can use the POS API. This provides the ability to retrieve the POS user, device, and location data, while also interacting with the cart and closing the app.
January 22, 2024
Release the isFromCustomStorefront field on Abandonment into stable version API
As of 2024-04, the Abandonment.isFromCustomStorefront
field has been released into stable version.
January 16, 2024
Action required
Prepare for IPv6 adoption for Storefront domains Platform
In preparation for supporting IPv6 on storefront domains, merchants and partners should update any third-party tools, such as firewall rules, to allow traffic in the CIDR range 2620:127:f00f::/48
and 2620:127:f00e::/48
by January 16, 2024.
Outbound traffic from Shopify will not be affected.
January 15, 2024
Add new fields firstName
and lastName
on CompanyAddress
API
As of version 2024-01, you can use the GraphQL Admin API to get and set a firstName
and lastName
on the CompanyAddress
.
January 15, 2024
Action required
Locale fields on MarketWebPresence
now return ShopLocale
object
API
As of 2024-04
the following fields on the MarketWebPresence
object will no longer return locale strings and will instead make use of the ShopLocale
type:
defaultLocale
alternateLocales
We’re making this change as it allows callers to query for more information regarding locales on a market, such as whether it is published or primary. Please ensure to update your API calls using MarketWebPresence.defaultLocale
or MarketWebPresence.alternateLocales
to use the ShopLocale
type.
Learn more about the MarketWebPresence
object on Shopify.dev.
January 11, 2024
GraphiQL in Shopify CLI for apps Tools
As of Shopify CLI version 3.53+, you can use GraphiQL in the CLI while running app dev
by simply pressing the g
hotkey.
This GraphiQL instance uses your app's credentials, working with the same data and access scopes, ensuring that what works in GraphiQL will work exactly the same in your app. We expect this feature to streamline how you create and edit GraphQL queries.
Learn more about in our documentation.
January 09, 2024
Filter query added to the App Bridge Resource Picker API Tools
With the latest version of App Bridge, you can use the filter query option with the Resource Picker API to filter resources without showing the query in the Resource Picker search bar.
January 08, 2024
TaxLine Channel Liable REST-API Improvement API
As of the 2024-01 version of the REST Order APIs, channel_liable field
on the TaxLine
has been updated to reflect the value indicated by the app. The behaviors now align between the REST and GraphQL endpoints.
The channel_liable
field lets developers inform merchants that another party is responsible for sales tax remittance, which then helps merchants better understand the tax that they are responsible for.
channel_liable
can contain the following values:
- true
indicates that the channel is responsible for remittance of the tax line
- false
indicates that the channel is not responsible for remittance of the tax line
If the channel_liable
field is not populated, a value of false
will be assumed.
January 08, 2024
New error codes added for metafield capabilities API
As of API version 2024-01, we've added the CAPABILITY_VIOLATION
error code to the MetafieldsSetUserErrorCode
enum. This error code is returned if you attempt to update a metafield in a way that doesn't conform to the enabled capabilities.
January 02, 2024
New and updated operations for the Cart Transform API API
Previously, the Cart Transform Function API allowed percentage based adjustments to the cost of a bundle when using expand
operations. The weight price algorithm would then allocate the bundle price to its component lines based on the weight of each component line (unit price * quantity).
As of the 2024-01
Cart Transform Function API version, 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.
A new update
operation will allow you to override the price, title, and image of a given line item. This gives you more more flexibility to make additional customizations to items in the cart. The update
operation is only available for Plus merchants.
To see what operations are available for a shop, you can query the cartTransform
field on ShopFeatures
.
Finally, the CartTransformCreate mutation in the Admin API now supports a blockOnFailure
field that determines if cart and checkout operations should be blocked if the CartTransform function fails to run. This can be used as a safeguard if the Cart Transform is considered a critical component in resolving merchandise attributes (e.g. price, title, image).
More information can be found in the Cart Transform API documentation and the CartTransformCreate mutation.
January 01, 2024
New optional argument to include translations when duplicating product API
As of 2024-01 version in the admin GraphQL API, you can specify whether to include translations when calling the productDuplicate mutation. When this optional argument is passed in as true
, all translations that are saved on the product, its variants, and its metafields are copied over to the new product.
January 01, 2024
Reset to default functionality for Checkout Branding Admin API mutation API
As of Admin API 2024-01, you can use the checkoutBrandingUpsert
mutation to reset branding settings to their default state without resetting each leaf field explicitly. It is now possible to pass in a null
value to the checkoutBrandingInput
argument to clear all of the branding settings, which will revert the branding of the Checkout to its default state.
Note that for all API versions, it is also possible to pass in a null
value to a non-leaf subfield, for example design_system.colors.schemes.scheme1
, to reset a given group of parameters.
Both of these changes enhance the usability of the Checkout Branding API by allowing to easily reset groups of branding parameters.
January 01, 2024
Bugfix to Returns API: Block refunds on requested returns API
As of API version 2024-01, we fixed a bug that had allowed refunds specifically against a requested return. Refunds are blocked on returns with a REQUESTED
status.
- Learn more about the
status
of a return on Shopify.dev. - Learn more about
requesting returns
on Shopify.dev - Learn more about self serve returns on the help center
January 01, 2024
Expose line_item field on AbandonedCheckout GraphQL API to public API
As of 2024-01, the line_items
field on AbandonedCheckout
GraphQL API will be available to public.
January 01, 2024
Action required
Improved support for syncing external marketing activities and receiving aggregate marketing data API
We're revamping the External Marketing APIs in the 2024-01 version of the GraphQL Admin API.
Breaking changes
- The
channel
field in marketingActivityCreateExternal and marketingActivityUpdateExternal has been renamed tomarketingChannelType
. utcOffset
andisCumulative
are now required fields and thefetchedAt
field has been removed from marketingEngagementInput.- The
utm
field has been deprecated from MarketingActivityUpdateExternalInput.
Improvements on the creation of marketing activities
- marketingActivityUpsertExternal can be used to sync externally managed activities without having to keep track of Shopify IDs.
- marketingActivityCreateExternal or marketingActivityUpsertExternal can be used to create a hierarchy of activities. Activities can be created to represent ads, ad groups, or campaigns.
- Bulk mutation support has been added for marketingActivityUpsertExternal. Learn more about bulk mutations on Shopify.dev.
Now supporting the deletion of marketing activities
- marketingActivityDeleteExternal can be used to delete a single external marketing activity.
- marketingActivitiesDeleteAllExternal can be used to enqueue a job to bulk delete all external marketing activities. This can be used to cleanup data if a store owner revokes permission to sync data to Shopify.
Improved support for syncing aggregate data
- The
remoteId
can be used to reference a marketing activity in marketingEngagementCreate. - marketingEngagementCreate can be used to sync aggregate data at the activity level and at the channel level.
- Bulk mutation support has been added for marketingEngagementCreate. Learn more about bulk mutations on Shopify.dev.
- marketingEngagementsDelete can be used to enqueue a job to delete all channel-level data that was sent through marketingEngagementCreate. This can be used to cleanup data if a store owner revokes permission to sync data to Shopify.
January 01, 2024
Adding Scheduled Changes to Inventory API
As of the 2024-01 version, you can Schedule Changes to your inventory quantities. For example, if an application user creates a purchase order and adds some incoming quantities for a specified inventory item at a location, they can then create a Scheduled Change that states the date these quantities are expected to be transitioning from incoming to available.
This information can then be used for planning to help the merchant make better buying or selling decisions. It will not automatically change any quantities, that still has to be done using one of the existing quantities mutations for inventory such as InventoryAdjustQuantitites. As part of this change there will be a new mutation inventorySetScheduledChanges along with the scheduledChanges field on the InventoryLevel query model which will allow the merchant to access the Scheduled Changes for a specific item at a given location.
You can include links inline in the text, and add another link at the end in this format:
Learn more about Inventory Scheduled changes on Shopify.dev.
January 01, 2024
ChoiceList branding controls exposed in Checkout Branding API API
As of Admin API 2024-01, you can use the Checkout Branding API to customize the look of the ChoiceList components on your checkout with customizations.choiceList
.
Learn more about the ChoiceList component on Shopify.dev.
January 01, 2024
Metaobjects exposed as market localizable API
As of 2024-01 Metaobjects will be exposed as a MarketLocalizableResourceType. This means that metaobjects with the translatable capability will be eligible for custom content by market through the Translations API as well as the Translate and Adapt app. Localizable fields will be determined by the Metaobject type.
January 01, 2024
OrderTransaction now exposes the multiCapturable field API
As of 2024-01
the OrderTransaction
endpoint now exposes the multiCapturable
field, to inform whether a transaction can be captured multiple times.
Learn more about OrderTransaction.
January 01, 2024
Action required
Removal of accepts marketing fields in Admin API customer resources API
As of API version 2024-01, the following customer resource fields have been removed: acceptsMarketing
, acceptsMarketingUpdatedAt
, and MarketingOptInLevel
. They have been deprecated since 2022-04 and the field emailMarketingConsent
should be used instead.
Learn more about the affected resources:
- Customer
object in GraphQL Queries.
- CustomerInput
object on GraphQL Mutations.
- customer
resource in REST.
- customers/create
, customers/delete
, customers/disable
, customers/enable
, and customers/update
webhook topics (https://shopify.dev/docs/api/admin-rest/2024-01/resources/webhook#event-topics).
January 01, 2024
Discounts API - New fixed amount option for Buy X Get Y discount API
Buy X Get Y discounts now support setting a fixed amount discount. This new option can be utilized alongside the existing percentage or free item discount options for a minimum qualifying purchase.
Use this option to create promotions such as “Buy 2 items, get $20 off”. This option is available as both an automatic discount or a discount code using the Discounts GraphQL API.
For more details on how to implement this new feature, refer to our API Guide in the Shopify Developer Documentation.
January 01, 2024
Delete multiple market regions in a single mutation API
As of API version 2024-01, you can use the marketRegionsDelete
mutation to delete multiple market regions in a single mutation.
Learn more about markets on Shopify.dev.
January 01, 2024
Add, remove, and update discounts with the newest order editing API API
You can now add, remove, and update discounts to new or existing items when editing orders.
The orderEditAddLineItemDiscount mutation allows you to add a fixed amount or percentage discount to an already existing item during an order edit. Previously, this mutation was limited to applying discounts to new products or custom items added to the order.
In addition, two new mutations allow you to remove and update discounts. The mutation orderEditRemoveDiscount removes discounts on newly added, existing products, or custom items, while the orderEditUpdateDiscount mutation allows for updating discounts.
For more information about using discounts with order edits, visit the tutorial on editing an existing order with the Admin API.
January 01, 2024
created_by_app and created_by_user fields on Metaobject and MetaobjectDefinition types API
We are introducing two new fields in the MetaobjectDefinition
type:
- createdByApp
: The app used to create the metaobject definition.
- createdByStaff
: The staff member who created the metaobject definition.
Similarly, we are introducing two new fields in the Metaobject
type:
- createdByApp
: The app used to create the object.
- createdByStaff
: The staff member who created the metaobject.
Additionally, we are deprecating the staffMember
field in the Metaobject
type. This field is being deprecated, and the createdByStaff
field should be used instead.
January 01, 2024
Update storefront access control settings in custom data API
Upcoming in API version 2024-01, access controls (access.storefront) are modified to be more explicit for custom data. These changes affect how reserved prefixes can be modified in the admin as well as how access controls are set by apps.
As a reminder, by default metafields and metaobjects are owned by Shopify and provide no restrictions to reading, writing, or modifying.
For app reserved prefixes, access is configurable. For example, if you set access for admin
to be MERCHANT_READ
and storefront
to be PUBLIC_READ
then the merchant will have read-only access in the Shopify admin, and the metafields will be publicly readable in the storefront surface area (Liquid templates and Storefront API).
Learn more about access controls for metafields and metaobjects respectively on Shopify.dev.
January 01, 2024
Order Cancellation now available on GraphQL Admin API API
As of GraphQL Admin API version 2024-01, you can use the orderCancel mutation to cancel an order. The mutation allows apps to specify some options for cancellation (eg whether or not to refund the customer, restock inventory quantities, notify the customer) as well as a reason for cancellation and a merchant-facing staff note. The mutation performs cancellation asynchronously in a background job and as such, returns a job
that can be queried for using the job API
January 01, 2024
Action required
Subscription Billing Attempt is now prevented if a subscription contract has terminal status API
As of the 2024-01 release of the GraphQL Admin API, the SubscriptionBillingAttemptCreate
mutation now prevents the creation of Billing Attempts if a subscription contract has a terminal status: EXPIRED
, CANCELLED
, STALE
.
We've also added the CONTRACT_TERMINATED
error code to the BillingAttemptUserErrorCode
enum. This new error code is returned in the case where Billing Attempt creation is prevented.
Learn more about the Subscription Contracts API and Billing Attempts on Shopify.dev.
January 01, 2024
"Awaiting return items" fulfillment hold reason API
AWAITING_RETURN_ITEMS
The fulfillment hold is applied because of return items not yet received during an exchange.
The new hold reason is applied to a fulfillment hold on a fulfillment order when a return is created with exchange items.
January 01, 2024
Updates to Split and Merge Feature API
As of API Version 2024-01 we've added a few extra documentation details around our recent Split and Merge feature.
- Webhooks for Split and Merge are now available.
- FulfillmentOrderLocationForMove has had the
availableLineItems
andunavailableLineItems
connections added along with a count of each. - A new error code No Line Items Provided To Split has also been added.
January 01, 2024
Enhanced the FulfillmentOrder API with additional Order details and FulfillmentOrderLineItem with financialSummaries API
As of REST and GraphQL API Version 2024-01 we have added more information to the FulfillmentOrder
and FulfillmentOrderLineItem
objects.
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 fulfillment_orders
access scopes. The same data is available via fulfillmentOrder.order
, but this requires read_orders
access scope.
Additionally we've added the financialSummaries
field to the FulfillmentOrderLineItem
graphQL object. Within this field you have access to these subfields: approximateDiscountedUnitPriceSet
, discountAllocations
, originalUnitPriceSet
and quantity
. However, the quantity
value on the FulfillmentOrderLineItem.financialSummaries
reflects the quantity with respect to the FulfillmentOrderLineItem
. The same data is available via the REST api when the query parameter include_financial_summaries=true
is sent with the request.
With this change, order information required to calculate the financial specifics of an order is accessible via the fulfillmentOrder.lineItems
connection with any of the fulfillment_orders
access scopes. The same data is available via fulfillmentOrder.order.lineItems
, but this requires read_orders
access scope.
Learn more about FulfillmentOrder
on Shopify.dev and FulfillmentOrderLineItem
on Shopify.dev.
January 01, 2024
New webhook topics added for Metaobject events API
As of API version 2024-01 of the GraphQL Admin API, your app can subscribe to metaobjects/create
, metaobjects/update
and metaobjects/delete
.
These new webhook topics use sub-topics so you can subscribe to events for the specific types of metaobjects your app cares about. Learn more about sub-topics on Shopify.dev
January 01, 2024
Subscriptions Contracts APIs: Introduce new mutations to update Subscription Contract status API
As of the 2024-01 release of the GraphQL Admin API, you can update the status field of a subscription contract in a single operation with the subscriptionContractActivate
, subscriptionContractPause
, subscriptionContractCancel
, subscriptionContractFail
, subscriptionContractExpire
mutations.
As of the 2024-01 release of the GraphQL Customer API, you can update the status field of a subscription contract in a single operation with the subscriptionContractActivate
, subscriptionContractCancel
and subscriptionContractPause
mutations.
January 01, 2024
Subscriptions Billing Cycles APIs: Introduce new mutations to update SubscriptionBillingCycle skipped field API
As of the 2024-01 release of the GraphQL Admin API and GraphQL Customer API, you can update the skipped field of a subscription billing cycle in a single operation with the subscriptionBillingCycleSkip
and subscriptionBillingCycleUnskip
mutations
January 01, 2024
Webhook topics introduced for updating subscription contract status API
As of the 2024-01 release of the GraphQL Admin API, new dedicated webhook topics have been introduced to notify whenever there is a change in the status of a subscription contract.
The topic subscription_contracts/activate
is added when the subscription contract status turns to active, subscription_contracts/expire
when a subscription contract's status turns to expire, subscription_contracts/fail
when the status turns to failed, subscription_contracts/cancel
when the status turns to cancelled, and subscription_contracts/pause
when the status turns to paused.
More information on webhooks can be found here
January 01, 2024
Action required
Subscriptions Contracts APIs - Deprecate subscriptionContract stale
status
API
As of Admin GraphQL 2024-01, the SubscriptionContractSubscriptionStatus.STALE
status is being deprecated. Instead, please use EXPIRED
or CANCELLED
.
Any existing contracts with the STALE
status will be returned as CANCELLED
.
Additionally, we are now preventing the update of Subscription Contracts to have the STALE
status.
January 01, 2024
Subscriptions Contracts APIs: Introduce SubscriptionContractFetchDeliveryOptions and SubscriptionContractSelectDeliveryMethod mutations API
As of the 2024-01 release of the GraphQL Customer API, you can fetch the available delivery options for a subscription contract with subscriptionContractFetchDeliveryOptions
. And you can select an option from a delivery options result and update the delivery method on a subscription contract with the subscriptionContractSelectDeliveryMethod
mutation.
December 22, 2023
Product type is now translatable API
Using the TranslationsRegister GraphQL API, you can now register translations for Product types.
Product type filters will now be displayed to customers shopping in the store's non-default language.
Learn more about TranslatableResourceTypes
on Shopify.dev.
December 22, 2023
Metaobject Pages now available in Storefront Menus API
As of API version 2024-01, you are now able to incorporate links to Metaobject pages as menu items in your Storefront Menus. Please note that only Metaobjects with both Renderable
and OnlineStore
capabilities enabled are eligible for Online Store URLs.
Learn more about Metaobject Pages on shopify.dev
December 19, 2023
Optional Address Validation in Storefront API API
As of Storefront API's 2024-04 release, you can use buyerIdentity.deliveryAddressPreferences.deliveryAddressValidationStrategy
(accepted values STRICT
or COUNTRY_CODE_ONLY
) to enable address validation on the passed deliveryAddress
for any cart mutations that accept a buyer identity as input (like cartCreate
or cartBuyerIdentityUpdate
).
Passing STRICT
will perform a full validation on the address fields, and will raise CartUserError
s for invalid addresses. Invalid addresses will not be stored on the cart.
Passing COUNTRY_CODE_ONLY
or omitting the field will only validate the presence of a valid country in the address (unchanged behavior from previous version).
December 19, 2023
Theme editor now supports metaobject references in text settings Themes
The richtext, text, and inline_text settings in the theme editor are now compatible with text fields of metaobject reference lists. For example, merchants can now create a list of product materials on a product detail page via the richtext setting using dynamic sources.
This includes updates to the metafield_tag and metafield_text Liquid filters to support metaobject reference metafields. For example: {{ product.metafields.custom.authors | metafield_text: field: "name" }} will output an author's name. More information on the liquid implementation can be found on the dynamic sources docs.
December 14, 2023
Modal API added to the latest version of App Bridge Tools
With the latest version of App Bridge, you can use the modal API with custom DOM content.
You can also use the new max modal variant. This is the replacement for the previous Fullscreen API. Learn more about it in the documentation.
December 07, 2023
General availability of Shipping Discount Function API API
As of API Version 2024-01
, the Shipping Discount Function API will be available to use on all merchant stores.
This Discount Function API can be used for use cases such as:
- Discounting specific delivery options (e.g. Free standard shipping only)
- Discounting shipping based on contents of cart (e.g. Buy this candle and get free shipping)
- Discounting shipping based on buyer identity, how many orders they’ve placed, etc.
Please note that the discountApplicationStrategy
on FunctionRunResult
(and its predecessor, FunctionResult
field) is being deprecated, and removed in 2024-01
.
You can learn more about the Shipping Discount Function API here.
December 06, 2023
InventoryQuantity
GraphQL object now has a globally-unique ID in Admin API
API
As of GraphQL Admin API version 2024-01 , you can use the ID
field to identify an InventoryQuantity object. This object now implements Node
interface.
December 06, 2023
Customer Accounts Extensibility is now available in Developer Preview Shopify App Store
We’ve unlocked the ability for partners to add unique and powerful functionality to the customer account experience by building extensions directly into new customer accounts.
Starting today, customer accounts extensibility is now available in developer preview, allowing partners to build extensions on new customer account pages (such as the order index, order status and customer profile pages), add highly visible order actions and create full-page extensions tailored to specific merchant needs.
Join us in creating better buying experiences, where customers navigate seamlessly across apps, with one single login.
Get started by reading our developer documentation and join us on Discord December 14, 2023 at 1pm EST.
December 06, 2023
Action required
UI Extensions - Shipping method option list targets will be duplicated for possible types of delivery groups (One Time Purchases and Subscription) API
Breaking change: UI extensions on versions 2023-10
or older that use either the purchase.checkout.shipping-option-list.render-before
or the purchase.checkout.shipping-option-list.render-after
will no longer render if the checkout contains both a one time purchase and subscription item.
As of 2024-01
, purchase.checkout.shipping-option-list.render-before
and purchase.checkout.shipping-option-list.render-after
will be duplicated for possible types of delivery groups (One Time Purchase and Subscription). You can use the new ShippingOptionListApi
to target each delivery group in your extension.
The delivery group the extension is attached to will be passed as a target
. In React, you can also use the useDeliveryGroupTarget()
hook to retrieve the current delivery group. The target will be undefined
if the group is not available, for example when the buyer hasn’t entered an address on One-page checkout, or when shipping is unavailable for this address.
We’re also introducing a new unique id
on a DeliveryGroup
to identify each delivery group.
If your extension is capturing buyer inputs at Checkout and storing the information in a metafield, you can use checkout attributes with a namespaced key to capture information for multiple delivery groups rendered on Checkout. See examples.
These changes can be tested today using the Checkout Extensibility developer preview using the unstable
api version.
Learn more about these API changes on shopify.dev
December 06, 2023
Action required
Automatic Discount Functions now apply to B2B sessions API
As of December 6th, 2023, Automatic Discounts created using Shopify Functions will apply by default to B2B customers. Previously, it wasn't possible to target B2B customers with discounts. Discount codes created using Shopify Functions are also available, but gated behind a beta flag, so merchants will need to explicitly opt-in for their store.
App developers can use the BuyerIdentity.purchasingCompany attribute on the Cart input to detect a B2B customer, and use that to customize the discount behavior for a merchant’s B2B audience. Examples of this could include:
- a discount that applies to B2B customers only
- a discount that applies to a specific B2B company only
- a discount that applies to D2C customers only
Note: at this time, discounts are not compatible for B2B customers configured to Submit all orders as drafts for review.
December 06, 2023
Shopify Function to uniformly use the GraphQL scalar Handle API
As of 2024-01, fields returning a "handle" will use an appropriate Handle
scalar as their type, instead of a String
. This signals that this type is not just any string, but specifically a handle. This specificity will help prevent bugs that could be caused by unexpected data.
December 05, 2023
Action required
Addition of LineItem current_quantity on Admin REST API API
Partners currently using refund line items to calculate a line item’s current quantity should migrate to using the new currentquantity field as it is a more reliable method. We recommend migrating to GraphQL as a general practice, however the currentquantity field has been added to indicate a line item’s current quantity after removals as of Admin REST API version 2024-01.
Learn more about the Order.line_items object on Shopify.dev.
December 04, 2023
Customer Account API schema improvements API
As of release candidate API version 2024-01, the schema for the Customer Account API has evolved significantly resulting in breaking changes. This update is necessary to ensure a more streamlined developer experience. Support has also been added to redirect buyers to a specific URI after logout with the post_logout_redirect_uri
query parameter, providing a solution for custom storefronts with multiple domains. Additionally, mutations for modifying marketing subscriptions have been added with customerEmailMarketingSubscribe
and customerEmailMarketingUnsubscribe
. The Customer Account API is available in Developer Preview and accessible via the Hydrogen and Headless channels. We encourage developers to provide feedback to help shape future iterations of this API.
Learn more about the schema updates and the new features in the developer documentation.
December 04, 2023
Collaborator request code now required to initiate request for store access Tools
Partners must now obtain a unique code to initiate a collaborator request and access a merchant’s store.
Collaborator request codes, previously optional, are now enabled by default for all merchants. This change gives merchants more control over who can access their store as collaborators, by ensuring that only those with the unique code can send a collaborator request.
Learn more about collaborator requests in the Shopify Help Center.
December 04, 2023
Introducing webhook topics for discount events API
We’ve introduced dedicated webhook topics that will be sent out whenever a discount has been created, updated or deleted, enabling developers to keep their discount apps in sync.
Learn more here
November 30, 2023
Introducing the new Customer Data Erasure API API
As of GraphQL Admin API version 2024-01, we are excited to introduce the Customer Data Erasure API. This API allows merchants to handle customer data erasure requests in compliance with GDPR, CCPA, and other data protection regulations. The API includes two new mutations:
- customerRequestDataErasure enqueues a request to erase customer's data.
- customerCancelDataErasure cancels a pending erasure of a customer's data.
To learn more about how data erasure is processed and the impact on customer data, please refer to the Shopify Help Center.
November 29, 2023
Shopify Functions run logs now include production store executions API
All Shopify Functions executions are now visible for production stores in your Partner Dashboard.
Run details are only available for failed runs that have been shared by users.
More information can be found on Shopify.dev:
November 28, 2023
Action required
AppSubscriptionDiscountInput.durationLimitInIntervals will no longer accept 0 API
As of Admin API 2024-01, AppSubscriptionDiscountInput.durationLimitInIntervals will no longer accept 0. To create a discount with an unlimited duration, durationLimitInIntervals should not be provided.
November 16, 2023
[Developer preview] Checkout Kit for Android Tools
Shopify’s Checkout Kit for Android 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 Mobile Kit for Android, as a follow up to our iOS deverloper preview launch on October 19th.
More information can be found in our blog post as well as in the Github repository.
November 14, 2023
Breaking changes to Variants API: Removal of "ProductVariantsBulkInput.imageId" and "ProductVariantsBulkInput.imageSrc" API
As of GraphQL Admin API version 2024-01, we are removing the deprecated imageId
and imageSrc
fields from the ProductVariantsInput
input object. Please use the mediaId
and mediaSrc
fields instead.
Learn more about the usage of the media
fields on Shopify.dev
November 10, 2023
Action required
Breaking changes to returns API: Deprecate "reverseDeliveryDispose" mutation API
As of GraphQL Admin API version 2025-01, we're deprecating the reverseDeliveryDispose
mutation. Use the reverseFulfillmentOrderDispose
mutation instead.
Learn more about managing reverse fulfillment orders on Shopify.dev.
November 07, 2023
UI extensions on the Thank you and Order status pages have launched Platform
As of 2023-11-07, Checkout Extensibility on the Thank you and Order status pages is available to plus merchants. Merchants can now make code-free, app-based, upgrade-safe customizations throughout the buying journey to create holistic and consistent experiences.
Checkout Extensibility replaces checkout.liquid, apps with script tags and additional scripts on the Thank you and Order status pages.
Script tags, additional scripts and checkout.liquid on the Thank you and Order status pages are now deprecated. Merchants have been notified of the following turn off dates: * August 13, 2024 - the removal date of checkout.liquid for in-checkout pages * August 28, 2025 - the removal date of checkout.liquid, apps with script tags and additional scripts on the thank you and order status page
Shops that aren't upgraded during these dates will be upgraded to an un-customized out-of-the-box Shopify Checkout.
November 06, 2023
Storefront API Cart.checkoutUrl
now contains key param
API
The Storefront API Cart now returns a new key
param appended to CheckoutUrl
that is required to render buyer information in checkout. This behavior is applied retroactively to all versions of the Storefront API.
The param is validated and removed as the buyer is navigated into checkout. This change is transparent to the buyer and does not affect what they see in the browser or their ability to copy and share checkout URLs. When a checkout is loaded without the valid key, the cart is cloned, and buyer information is removed.
Example Format: https://example-shop.com/cart/c/c1-09av29f248bb6420de3842b051f6a1a3?key=824bdj25mhg1242bdb385
Action Required:
If your app is manually constructing checkout URLs from cart IDs, you need to switch and use cart.checkoutUrl
. If you’re augmenting the cart.checkoutUrl
with additional parameters, update and validate that your code does not override the parameter and returns a valid destination URL.
November 01, 2023
Theme Store Full-funnel Google Analytics attribution Themes
We’ve added visibility into the theme install event itself as part of our existing integration with Google Analytics.
In addition to having full visibility into the theme install event, you can also now tie the theme install event to a Shop ID, enabling richer insights on the type of merchants that are installing your theme.
Learn more on our blog and shopify.dev.
November 01, 2023
Introduce subscriptions contracts cleanup mechanism Shopify App Store
We've added a new cleanup process for Subscription Contracts.
This process involves automatically canceling any Subscription Contracts owned by the subscription app that have not been terminated. These contracts may be in the active
, paused
, or failed
status. The cancellation will occur 48 hours after a user uninstalls the app.
This is aligned with our purchase options cleanup process.
October 31, 2023
[Developer Preview] Cart Transform API - Updating lines in the cart API
Previously, the Cart Transform API enabled functions to expand
a single cart line item to form a bundle of components or add-on products, or merge
multiple cart lines into a single line that represents a bundle.
With this release, update
operations will also allow you to override the price, title, and/or image of a given line item. This gives you more more flexibility to make additional customizations to items in the cart.
More information can be found in the Cart Transform API developer preview documentation.
October 31, 2023
Hydrogen 2023.10 has been released Platform
Hydrogen v2023.10 is now available. This release includes a number of new features and breaking changes.
Remix 2.0 (breaking change)
- Hydrogen 2023.10 now uses Remix 2.
- Remix has also been made a peer dependency, so you can keep your Remix package updated independently of Hydrogen.
Other breaking changes
- Hydrogen's default caching strategy has been updated to have a longer
stale-while-revalidate
period. - A dependency bump for
@graphql-codegen/typescript
to v4 will require updates toScalar
types if you import them directly from Hydrogen or Hydrogen React.
Other changes
- All packages and examples now query
v2023-10
API versions. - Hydrogen now includes an API client for the Customer Account API.
- Custom cart methods are now stable.
- The GraphiQL client available through the local development server now includes the GraphiQL Explorer plugin, which makes it easier to browse GraphQL resources.
- Props and parameters that were deprecated in v2023-07 have been removed.
- Additional dependency bumps, patches, and fixes.
October 31, 2023
Action required
Changes to Point of Sales (POS) payment processing behavior API
We're changing how payments are processed on POS in order to bring order cancellations to POS. These changes will go into effect beginning October 31, 2023 for POS Pro and January 22, 2024 for Shopify Plus.
Payments may be authorized for up to 15 minutes before being captured automatically or voided by retail staff. As such, you may notice a few changes to the Admin and Storefront APIs.
On the Admin API, you may see:
AUTHORIZED
as theOrderDisplayFinancialStatus
for up to 15 minutes before transitioning toPAID
. The status will transition toVOIDED
if the order gets canceled within these 15 minutes.- Separate
OrderTransaction
objects withAUTHORIZATION
andCAPTURE
as theOrderTransactionKind
when the payment is authorized and captured, instead of a single transaction with theSALE
kind. - Separate
OrderTransaction
objects withAUTHORIZATION
andVOID
as theOrderTransactionKind
when the payment is authorized and voided. - An empty array for
SuggestedRefund.suggestedTransactions
until payments in the order have been captured.
On the Storefront API, the OrderFinancialStatus
will exhibit the same behavior as the OrderDisplayFinancialStatus
on the Admin API.
Learn more about canceling orders on POS here.
Learn more about OrderDisplayFinancialStatus, OrderTransactionKind, and SuggestedRefund on Shopify.dev.
October 24, 2023
Breaking changes to Products API: Deprecate "ProductInput.images" API
As of GraphQL Admin API version 2024-01, we're deprecating the images
field from the ProductInput
input object and replacing it with a media
argument in the productCreate
and productUpdate
mutations.
Learn more about the usage of the media
field on Shopify.dev
October 24, 2023
UI extensions - the order status page is getting a new look API
As of 2023-10-24, the order status page is getting a new look with updated visual treatment that is consistent with new customer accounts. This change will be rolling out progressively to all developer shops on checkout extensibility developer preview to ensure a smooth transition.
To view this change in developer shops on the checkout extensibility developer preview, navigate to Settings > Checkout > Customize and select Order Status from the page dropdown.
No action is required and there should be no changes to any UI extensions in development.
Learn more about UI extensions on the thank you and order status pages on Shopify.dev.
October 23, 2023
New fields on Country Liquid object API
We've added the available_languages
, continent
and popular?
properties on the country
object in Liquid.
You can now access the languages that have been added to the market that a country belongs to, the country's translated continent name, and whether the country is a popular one amongst those that the shop sells to.
These properties provide flexibility when building a localization switcher, allowing customers to switch country and language simultaneously and allowing for grouping or sorting countries in a theme's country selector
Learn more about these new fields in the dev docs.
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
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
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
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
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
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
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.