> Note:
> We're no longer publishing API release notes. Instead, you can find the latest updates on Shopify APIs in our [developer changelog](https://shopify.dev/changelog). You can filter updates by area. For example, you can filter API updates by the API name and version, such as GraphQL Admin API changes in version 2025-04.


<table>
  <caption>The API version release date and the date that the version is no longer supported</caption>
  <thead>
    <tr>
      <th scope="col">Release date</th>
      <th scope="col">Date version is no longer supported</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td scope="row">January 1, 2023</td>
      <td scope="row">January 1, 2024</td>
   </tr>
  </tbody>
 </table>

**What's new in 2023-01**

The following features were added in version 2023-01 of Shopify's APIs.

Highlights from the GraphQL Admin API changes:

- Asynchronous queries in the Segmentation API
- Delivery settings support for more locations
- Duplicate and delete Product asynchronously
- Fulfillment API updates
- Inventory States API
- Metafields available on Company and CompanyLocation
- Metaobjects API
- ShopifyQL API
- New Webhook topics added and updated

Highlights from the GraphQL Storefront API changes:

- Metaobjects API
- StoreAvailability can now be searched based on proximity

Highlights from the REST Admin API changes:

- B2B Order Import
- New credit card fields added to Transaction

## Breaking changes

These changes require special attention. If your app uses these API resources, and you don’t adjust your usage of the resources according to the following instructions, then your app might break when you update to this API version.


### CheckoutProfiles sort order has changed

The new `EditedAt` field has been added to the [`CheckoutProfile`](/docs/api/admin-graphql/2023-01/objects/CheckoutProfile) object. CheckoutProfiles are now sorted by the `EditedAt` field instead of `updatedAt`.

### The lineItem field on FulfillmentOrderLineItem has been deprecated

The `lineItem` field on [FulfillmentOrderLineItem](/docs/api/admin-graphql/2023-01/objects/FulfillmentOrderLineItem) has been deprecated. The order line item associated with a `FulfillmentOrderLineItem` shouldn't be used to determine what to fulfill. Use the `FulfillmentOrderLineItem` and [`FulfillmentOrder`](/docs/api/admin-graphql/2023-01/objects/FulfillmentOrder) objects instead.

### Removal of error code from LocationDeactivateUserErrorCode

The error coded `INVALID` has been removed from [`LocationDeactivateUserErrorCode`](/docs/api/admin-graphql/2023-01/enums/LocationDeactivateUserErrorCode).

### Shop billing address uses a new ShopAddress type

The `billingAddress` field on [`Shop`](/docs/api/admin-graphql/2023-01/objects/Shop) uses a new [`ShopAddress`](/docs/api/admin-graphql/2023-01/objects/ShopAddress) type instead of `MailingAddress`. Since `Shop.billingAddress` never returns non-null first or last names, these fields have been marked as deprecated on the new `ShopAddress` type. You should stop requesting those fields as they will be removed in a later version.

## GraphQL Admin API changes

The following are all the changes currently introduced in the 2023-01 version of the GraphQL Admin API.

<div class="accordion-container">
  <div class="accordion-controls">
    <button class="accordion-control" data-accordion-control-type="expand-all" type="button">Expand all</button>
  </div>
  <div class="accordion-content-container">
    <div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Access controls for app metafields</h3>
  </div>
  <div class="accordion-content">
    <p>You can optionally specify an <code class="text-highlight text-highlight--grey">access</code> setting when you create or update metafield definitions via the API. This new setting will allow you to control who else can access the metafields under your definition via the Admin API.</p>
<p>Note that this setting can only be set when the definition is in your own <a href="">reserved namespace</a>.</p>
<p>Possible settings you can use are <code class="text-highlight text-highlight--grey">PRIVATE</code> (no one else can access the metafields), <code class="text-highlight text-highlight--grey">MERCHANT_READ</code> (the merchant has read-only access to the metafields via the admin UI), and <code class="text-highlight text-highlight--grey">MERCHANT_READ_WRITE</code> (the merchant can view and edit the metafields via the admin UI).</p>
<p>Learn more about access controls in our <a href="">documentation</a>.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Asynchronous queries in the Segmentation API <span id="async-segmentation" class="header-flag breaking"></h3>
  </div>
  <div class="accordion-content">
    <p>Starting in this verion, some queries could be processed and returned asynchronously based on complexity and the amount of shop data. Most queries will continue to be evaluated synchronously. This breaking change allows you to build the best possible user experience as we introduce more complex filters in Segmentation. Asynchronous queries should revolve within 5 seconds but some queries might take up to 1-2 minutes or even longer.</p>
<p>To get up to date, make sure you are handling responses returning an error code because the query must be processed asynchronously. You can follow our <a href="/docs/apps/build/marketing-analytics/customer-segments/migrate-to-async-queries">migration guide</a>.</p>
<p>Learn more about building for asynchronous queries in our <a href="/docs/apps/build/marketing-analytics/customer-segments/manage#query-a-list-of-segment-members">developer documentation</a> or visit our <a rel="external noreferrer noopener" target="_blank" href="https://community.shopify.com/c/shopify-apis-and-sdks/segmentation-api-now-available/m-p/1465812?">API forum for questions</a>.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Automated collections with metafield conditions</h3>
  </div>
  <div class="accordion-content">
    <p>Automated <a href="/docs/api/admin-graphql/2023-01/objects/Collection"><code class="text-highlight text-highlight--grey">collections</code></a> now support metafield conditions. These are controlled by enabling the respective metafield definition on your settings page.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>New EditedAt field for CheckoutProfile <span id="checkoutprofile-editedat" class="heading-flag breaking"></h3>
  </div>
  <div class="accordion-content">
    <p>The new <code class="text-highlight text-highlight--grey">EditedAt</code> field has been added to the <a href="/docs/api/admin-graphql/2023-01/objects/CheckoutProfile"><code class="text-highlight text-highlight--grey">CheckoutProfile</code></a> object. CheckoutProfiles are now sorted by the <code class="text-highlight text-highlight--grey">EditedAt</code> field instead of <code class="text-highlight text-highlight--grey">updatedAt</code>.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Due on Fulfillment is now a PaymentTermsType</h3>
  </div>
  <div class="accordion-content">
    <p>A new value of <code class="text-highlight text-highlight--grey">FULFILLMENT</code> is now available on the <a href="/docs/api/admin-graphql/2023-01/enums/PaymentTermsType"><code class="text-highlight text-highlight--grey">PaymentTermsType</code></a> enum. With this change, apps can create and update orders and draft orders with payment terms whose due date will be set upon fulfillment of the order.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Duplicate and delete Product asynchronously</h3>
  </div>
  <div class="accordion-content">
    <p>New mutations, <a href="/docs/api/admin-graphql/2023-01/mutations/productDuplicateAsync"><code class="text-highlight text-highlight--grey">productDuplicateAsync</code></a> and <a href="/docs/api/admin-graphql/2023-01/mutations/productDeleteAsync"><code class="text-highlight text-highlight--grey">productDeleteAsync</code></a>, have been added to allow you to asynchronously duplicate and delete products that have a high number of variants that are stocked at several locations. The existing mutations <a href="/docs/api/admin-graphql/2023-01/mutations/productDuplicate"><code class="text-highlight text-highlight--grey">productDuplicate</code></a> and <a href="/docs/api/admin-graphql/2023-01/mutations/productDelete"><code class="text-highlight text-highlight--grey">productDelete</code></a> may time out for these <em>larger</em> products.</p>
<p><strong>New mutations</strong>:</p>
<ul>
<li><a href="/docs/api/admin-graphql/2023-01/mutations/productDuplicateAsync"><code class="text-highlight text-highlight--grey">productDuplicateAsync</code></a></li>
<li><a href="/docs/api/admin-graphql/2023-01/mutations/productDeleteAsync"><code class="text-highlight text-highlight--grey">productDeleteAsync</code></a></li>
</ul>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>The lineItem field on FulfillmentOrderLineItem has been deprecated <span id="fulfillmentorderlineitem" class="heading-flag breaking"></h3>
  </div>
  <div class="accordion-content">
    <p>The <code class="text-highlight text-highlight--grey">lineItem</code> field on <a href="/docs/api/admin-graphql/2023-01/objects/FulfillmentOrderLineItem">FulfillmentOrderLineItem</a> has been deprecated. The order line item associated with a <code class="text-highlight text-highlight--grey">FulfillmentOrderLineItem</code> shouldn&#39;t be used to determine what to fulfill. Use the <code class="text-highlight text-highlight--grey">FulfillmentOrderLineItem</code> and <a href="/docs/api/admin-graphql/2023-01/objects/FulfillmentOrder"><code class="text-highlight text-highlight--grey">FulfillmentOrder</code></a> objects instead.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Fulfillment Events can be created</h3>
  </div>
  <div class="accordion-content">
    <p><a href="https://shopify.dev/api/admin-graphql/2023-01/objects/FulfillmentEvent"><code class="text-highlight text-highlight--grey">FulfillmentEvents</code></a> can now be created through the API using the <a href="/docs/api/admin-graphql/2023-01/mutations/fulfillmentEventCreate"><code class="text-highlight text-highlight--grey">fulfillmentEventCreate</code></a> mutation. This was previously only possible through the REST Admin API.</p>
<p><strong>New mutations</strong>:</p>
<ul>
<li><a href="/docs/api/admin-graphql/2023-01/mutations/fulfillmentEventCreate"><code class="text-highlight text-highlight--grey">fulfillmentEventCreate</code></a></li>
</ul>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>FulfillmentOrderLineItems can be marked as being ready for pickup</h3>
  </div>
  <div class="accordion-content">
    <p>Using the new <a href="/docs/api/admin-graphql/2023-01/mutations/fulfillmentOrderLineItemsPreparedForPickup"><code class="text-highlight text-highlight--grey">fulfillmentOrderLineItemsPreparedForPickup</code></a> mutation, line items associated with a <a href="/docs/api/admin-graphql/2023-01/objects/FulfillmentOrder">FulfillmentOrder</a> can be marked as being ready for pickup by the customer.</p>
<p><strong>New mutations</strong>:</p>
<ul>
<li><a href="/docs/api/admin-graphql/2023-01/mutations/fulfillmentOrderLineItemsPreparedForPickup"><code class="text-highlight text-highlight--grey">fulfillmentOrderLineItemsPreparedForPickup</code></a></li>
</ul>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Fulfillment orders can now be accessed from QueryRoot</h3>
  </div>
  <div class="accordion-content">
    <p>You can now access fulfillment orders from <code class="text-highlight text-highlight--grey">QueryRoot.fulfillmentOrders</code> in addition to the existing <code class="text-highlight text-highlight--grey">Shop.fulfillmentOrders</code> connection, which is now deprecated. To learn more, take a look at our documentation on <a href="/docs/api/admin-graphql/2023-01/connections/FulfillmentOrderConnection#connection-fulfillmentorderconnection-edges">fulfillment orders</a></p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Changes to the `metafieldsSet` mutation</h3>
  </div>
  <div class="accordion-content">
    <p>The <a href="/docs/api/admin-graphql/2023-01/mutations/metafieldsSet"><code class="text-highlight text-highlight--grey">metafieldsSet</code></a> mutation has been updated so that the <code class="text-highlight text-highlight--grey">MetafieldsSetInput.type</code> field can be omitted only when the metafield already has corresponding Metafield definitions.</p>
<p>Additionally, the mutation is now atomic and will not persist changes if any errors are encountered.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Orders can be sorted by destination</h3>
  </div>
  <div class="accordion-content">
    <p>The <a href="/docs/api/admin-graphql/2023-01/queries/orders"><code class="text-highlight text-highlight--grey">orders</code></a> query can now be sorted by destination. Using this sort key will return Orders by country, then by zone (e.g. state, province, etc.) and finally by city.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Inventory States API</h3>
  </div>
  <div class="accordion-content">
    <p>New mutations have been added that allow the editing for inventory quantities at a specific location, as well as quantities reserved and on hold. New queries are also available to retrieve quantities for every state as well.</p>
<p>For more information, check out the documentation on <a href="">Inventory States</a>.</p>
<p><strong>New queries</strong>:</p>
<ul>
<li><a href="/docs/api/admin-graphql/2023-01/queries/inventoryLevel"><code class="text-highlight text-highlight--grey">inventoryLevel</code></a></li>
<li><a href="/docs/api/admin-graphql/2023-01/queries/inventoryItem"><code class="text-highlight text-highlight--grey">inventoryItem</code></a></li>
</ul>
<p><strong>New mutations</strong>:</p>
<ul>
<li><a href="/docs/api/admin-graphql/2023-01/mutations/inventorySetOnHandQuantities"><code class="text-highlight text-highlight--grey">inventorySetOnHandQuantities</code></a></li>
<li><a href="/docs/api/admin-graphql/2023-01/mutations/inventoryAdjustQuantities"><code class="text-highlight text-highlight--grey">inventoryAdjustQuantities</code></a></li>
<li><a href="/docs/api/admin-graphql/2023-01/mutations/inventoryMoveQuantities"><code class="text-highlight text-highlight--grey">inventoryMoveQuantities</code></a></li>
</ul>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Metafields are now available on Company and CompanyLocation</h3>
  </div>
  <div class="accordion-content">
    <p>Metafields can now be added to <a href="/docs/api/admin-graphql/2023-01/objects/Company"><code class="text-highlight text-highlight--grey">Company</code></a> and <a href="/docs/api/admin-graphql/2023-01/objects/CompanyLocation"><code class="text-highlight text-highlight--grey">CompanyLocation</code></a> as part of B2B. Addtionally, a subset of mutations are now available for use asynchronous usage via <a href="/docs/api/usage/bulk-operations">BulkOperation</a>.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Querying on Metafields has been simplified</h3>
  </div>
  <div class="accordion-content">
    <p>When querying on <a href="/docs/api/admin-graphql/2023-01/queries/metafield"><code class="text-highlight text-highlight--grey">Metafield</code></a>, you can now optionally supply the <code class="text-highlight text-highlight--grey">key</code> argument in the format of <code class="text-highlight text-highlight--grey">namespace.key</code>. You will also be able to optionally supply the <code class="text-highlight text-highlight--grey">keys</code> argument to the <code class="text-highlight text-highlight--grey">metafields</code> connection as a list of strings in the same format. The key returned will also be in the format of <code class="text-highlight text-highlight--grey">namespace.key</code>.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Removal of SMS Templates as a translatable resource <span id="smstemplates" class="header-flag breaking"></h3>
  </div>
  <div class="accordion-content">
    <p><code class="text-highlight text-highlight--grey">SMS_Templates</code> has been removed from the <a href="/docs/api/admin-graphql/2023-01/enums/TranslatableResourceType"><code class="text-highlight text-highlight--grey">TranslatableResourceType</code></a> enum. The corresponding mutations and queries will no longer accept SMS Template IDs:</p>
<ul>
<li><a href="/docs/api/admin-graphql/2023-01/mutations/translationsRemove"><code class="text-highlight text-highlight--grey">translationsRemove</code></a></li>
<li><a href="/docs/api/admin-graphql/2023-01/mutations/translationsRegister"><code class="text-highlight text-highlight--grey">translationsRegister</code></a></li>
<li><a href="/docs/api/admin-graphql/2023-01/queries/translatableResource"><code class="text-highlight text-highlight--grey">translatableResource</code></a></li>
<li><a href="/docs/api/admin-graphql/2023-01/queries/translatableResourcesByIds"><code class="text-highlight text-highlight--grey">translatableResourcesByIds</code></a></li>
</ul>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Delivery settings support for more locations</h3>
  </div>
  <div class="accordion-content">
    <p>We’ve introduced a few changes that will improve managing delivery settings for merchants with a high number of locations:</p>
<ul>
<li><p>A new and more efficient way of managing locations associated with groups within a delivery profile. Instead of using the <a href="/docs/api/admin-graphql/2023-01/objects/DeliveryLocationGroup#connection-deliverylocationgroup-locations">locations</a> field, which always requires the full list of locations to have in a location group, you can now use the <a href="/docs/api/admin-graphql/2023-01/input-objects/DeliveryProfileLocationGroupInput#field-deliveryprofilelocationgroupinput-locationstoadd">locationsToAdd</a> and <a href="/docs/api/admin-graphql/2023-01/input-objects/DeliveryProfileLocationGroupInput#field-deliveryprofilelocationgroupinput-locationstoremove">locationsToRemove</a> fields to specify exactly the locations you want to adjust from a group.</p></li>
<li><p>A new argument <code class="text-highlight text-highlight--grey">locationGroupId</code> has been added to <a href="/docs/api/admin-graphql/2023-01/objects/DeliveryProfile#field-deliveryprofile-profilelocationgroups">profileLocationGroups</a> field. You can use this to query a specific <a href="/docs/api/admin-graphql/2023-01/objects/DeliveryLocationGroup#field-deliverylocationgroup-id"><code class="text-highlight text-highlight--grey">location group</code></a> and fetch its paginated locations more efficiently.</p></li>
<li><p>A new <a href="https://shopify.dev/api/admin-graphql/2023-01/objects/DeliveryProfile#connection-deliveryprofile-unassignedlocationspaginated"><code class="text-highlight text-highlight--grey">unassignedLocationsPaginated</code></a> field has been added to <a href="/docs/api/admin-graphql/2023-01/objects/DeliveryProfile"><code class="text-highlight text-highlight--grey">DeliveryProfile</code></a>. You can use this field to query locations that are not assigned to a delivery profile in a more efficient way.</p></li>
<li><p>A new <a href="/docs/api/admin-graphql/2023-01/objects/DeliveryLocationGroup#field-deliverylocationgroup-locationscount"><code class="text-highlight text-highlight--grey">locationsCount</code></a> field has been added to the <a href="https://shopify.dev/api/admin-graphql/2023-01/objects/DeliveryLocationGroup">DeliveryLocationGroup</a> object.</p></li>
<li><p>The Local Pickup API is now stable view the <a href="/docs/api/admin-graphql/2023-01/mutations/locationLocalPickupEnable"><code class="text-highlight text-highlight--grey">locationLocalPickupEnable</code></a> and <a href="/docs/api/admin-graphql/2023-01/mutations/locationLocalPickupDisable"><code class="text-highlight text-highlight--grey">locationLocalPickupDisable</code></a> mutations.</p></li>
</ul>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>DraftOrder and Order fields added to PaymentTerms object</h3>
  </div>
  <div class="accordion-content">
    <p>When querying for a <a href="/docs/api/admin-graphql/2023-01/objects/PaymentTerms"><code class="text-highlight text-highlight--grey">PaymentTerms</code></a> object, you now have access to both the associated <a href="/docs/api/admin-graphql/2023-01/objects/DraftOrder"><code class="text-highlight text-highlight--grey">DraftOrder</code></a> or <a href="/docs/api/admin-graphql/2023-01/objects/Order"><code class="text-highlight text-highlight--grey">Order</code></a>.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Fulfillment Service Creation will now throw errors without opt-in enabled <span id="fulfillment-errors-gql" class="header-flag breaking"></h3>
  </div>
  <div class="accordion-content">
    <p>When trying to create a <a href="/docs/api/admin-graphql/2023-01/objects/FulfillmentService"><code class="text-highlight text-highlight--grey">Fulfillment Service</code></a> using the <a href="/docs/api/admin-graphql/2023-01/mutations/fulfillmentServiceCreate"><code class="text-highlight text-highlight--grey">fulfillmentServiceCreate</code></a> mutation, and error will be returned if the <code class="text-highlight text-highlight--grey">fulfillment_orders_opt_in</code> field is not set to <code class="text-highlight text-highlight--grey">true</code> in the parameters.</p>
<p>Similarly, when trying to update a Fulfillment Service using the <a href="/docs/api/admin-graphql/2023-01/mutations/fulfillmentServiceUpdate"><code class="text-highlight text-highlight--grey">fulfillmentServiceUpdate</code></a> mutation, an error will be returned if the fulfillment service being updated has <code class="text-highlight text-highlight--grey">fulfillment_orders_opt_in</code> set to <code class="text-highlight text-highlight--grey">false</code> and the update request does not promote <code class="text-highlight text-highlight--grey">fulfillment_orders_opt_in</code> to <code class="text-highlight text-highlight--grey">true</code>.</p>
<p>Learn how to <a href="/docs/apps/build/orders-fulfillment/migrate-to-fulfillment-orders">migrate to fulfillment orders</a> how to <a href="/docs/apps/build/orders-fulfillment/fulfillment-service-apps/build-for-fulfillment-services">fulfill fulfillment orders as a service app</a>.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Create fulfillment events</h3>
  </div>
  <div class="accordion-content">
    <p>You can now create <a href="/docs/api/admin-graphql/2023-01/objects/FulfillmentEvent"><code class="text-highlight text-highlight--grey">FulfillmentEvents</code></a> using the GraphQL Admin API using the <a href="/docs/api/admin-graphql/2023-01/mutations/fulfillmentEventCreate"><code class="text-highlight text-highlight--grey">fulfillmentEventCreate</code></a> mutation. This was previously only possible using the REST Admin API.</p>
<p><strong>New mutations</strong>:</p>
<ul>
<li><a href="/docs/api/admin-graphql/2023-01/mutations/fulfillmentEventCreate"><code class="text-highlight text-highlight--grey">fulfillmentEventCreate</code></a></li>
</ul>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Fulfillment order holds can be flagged with an external id</h3>
  </div>
  <div class="accordion-content">
    <p>The <a href="/docs/api/admin-graphql/2023-01/input-objects/FulfillmentOrderHoldInput"><code class="text-highlight text-highlight--grey">FulfillmentOrderHoldInput</code></a> has a new field called <code class="text-highlight text-highlight--grey">externalId</code>. This can be used to track states within your own application on why a fulfillment order has been placed on hold and when it needs to be released. To learn more about the fulfillment order API see the <a href="https://shopify.dev/api/admin-graphql/2023-01/objects/FulfillmentOrder#field-fulfillmentorder-fulfillmentHolds">fulfillment order object documentation</a>.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Metaobjects API</h3>
  </div>
  <div class="accordion-content">
    <p>We are introducing a new Admin API that allows the creation of custom data structures called <a href="/docs/api/admin-graphql/2023-01/objects/Metaobject"><code class="text-highlight text-highlight--grey">Metaobjects</code></a>. Similar to metafields, which enable custom fields to be associated with core resources within Shopify, Metaobjects provide a way to create and associate entirely new data models. The API includes:</p>
<ul>
<li>Defining objects with granular access control on how merchants and apps can interact with them.</li>
<li>Creating entries of custom defined objects and making them publishable to storefronts.</li>
</ul>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Removal of the error code when deactivating Location <span id="locationdeactivateerrorcode" class="heading-flag breaking"></h3>
  </div>
  <div class="accordion-content">
    <p>We have removed the error code <code class="text-highlight text-highlight--grey">INVALID</code> from <code class="text-highlight text-highlight--grey">LocationDeactivateUserErrorCode</code>. This error code was never returned
- <a href="/docs/api/admin-graphql/2023-01/mutations/inventorySetOnHandQuantities"><code class="text-highlight text-highlight--grey">inventorySetOnHandQuantities</code></a>
- <a href="/docs/api/admin-graphql/2023-01/mutations/inventoryAdjustQuantities"><code class="text-highlight text-highlight--grey">inventoryAdjustQuantities</code></a>
- <a href="/docs/api/admin-graphql/2023-01/mutations/inventoryMoveQuantities"><code class="text-highlight text-highlight--grey">inventoryMoveQuantities</code></a></p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Release holds on multiple fulfillment orders</h3>
  </div>
  <div class="accordion-content">
    <p>You can now use the <a href="/docs/api/admin-graphql/unstable/mutations/fulfillmentOrdersReleaseHolds"><code class="text-highlight text-highlight--grey">fulfillmentOrdersReleaseHolds</code></a> mutation to release holds on multiple fulfillment orders in a single request. This will allow developers to reduce the number of individual requests used to complete bulk fulfillment actions with their apps.</p>
<p><strong>New mutations</strong>:</p>
<ul>
<li><a href="/docs/api/admin-graphql/unstable/mutations/fulfillmentOrdersReleaseHolds"><code class="text-highlight text-highlight--grey">fulfillmentOrdersReleaseHolds</code></a></li>
</ul>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Reengagement Automations</h3>
  </div>
  <div class="accordion-content">
    <p>You can now integrate marketing automation flow actions inside of our reengagement marketing automation workflows. These actions include:</p>
<ul>
<li>Abandoned checkout</li>
<li>Abandoned cart</li>
<li>Abandoned product browse</li>
</ul>
<p>To learn more about reengagement automations, check out or <a rel="external noreferrer noopener" target="_blank" href="https://www.shopify.com/ca/blog/reengagement-automations">blog post</a>.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Selling Plan Group Limit Increase</h3>
  </div>
  <div class="accordion-content">
    <p>The <a href="/docs/api/admin-graphql/2023-01/enums/SellingPlanGroupUserErrorCode#value-sellingplancountupperbound">limit on the number of associated Selling plans</a> for <a href="/docs/api/admin-graphql/2023-01/objects/sellingplangroup">Selling Plan Groups</a> has been increased from 20 to 31. We recommend paginating all queries on a Selling Plan Group&#39;s Selling Plans, rather than relying on this fixed limit.</p>
<p>Learn more about Selling Plan Groups by referring to the <a href="/docs/apps/build/purchase-options">purchase options documentation</a>.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Send payment reminders via email</h3>
  </div>
  <div class="accordion-content">
    <p>You can use the new <a href="/docs/api/admin-graphql/2023-01/mutations/paymentReminderSend"><code class="text-highlight text-highlight--grey">paymentReminderSend</code></a> mutation to send payment reminder emails to customers.</p>
<p><strong>New mutations</strong>:</p>
<ul>
<li><a href="/docs/api/admin-graphql/2023-01/mutations/paymentReminderSend"><code class="text-highlight text-highlight--grey">paymentReminderSend</code></a></li>
</ul>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Mutation to change Shipping Packages has been updated</h3>
  </div>
  <div class="accordion-content">
    <p>The <a href="/docs/api/admin-graphql/2023-01/mutations/shippingPackageUpdate"><code class="text-highlight text-highlight--grey">shippingPackageUpdate</code></a> mutation has been updated so that <code class="text-highlight text-highlight--grey">shippingPackage</code> is a required argument. <code class="text-highlight text-highlight--grey">shippingPackage</code> is a set of attributes that describes a shipping package, including: <code class="text-highlight text-highlight--grey">weight</code>, <code class="text-highlight text-highlight--grey">dimensions</code>, <code class="text-highlight text-highlight--grey">name</code>, <code class="text-highlight text-highlight--grey">default</code> and <code class="text-highlight text-highlight--grey">type</code>.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>ShopifyQL API is now available</h3>
  </div>
  <div class="accordion-content">
    <p>The <a href="/docs/api/shopifyql">ShopifyQL API</a> is now available to query analytical data from merchant stores to create reporting apps that provide business insights for merchants.</p>
<p><strong>New queries</strong>:</p>
<ul>
<li><a href="/docs/api/admin-graphql/2023-01/queries/shopifyqlQuery">shopifyqlQuery</a></li>
</ul>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Shop Policy supports Contact Information</h3>
  </div>
  <div class="accordion-content">
    <p>The <a href="/docs/api/admin-graphql/2023-01/objects/ShopPolicyType"><code class="text-highlight text-highlight--grey">ShopPolicyType</code></a> has been updated to include a new value of <code class="text-highlight text-highlight--grey">CONTACT_INFORMATION</code>. This policy is intended to allow users to add regulatory information, including a Value-Added Tax (VAT) and trade number.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Shop Resource Feedback</h3>
  </div>
  <div class="accordion-content">
    <p>The new mutation <a href="/docs/api/admin-graphql/2023-01/mutations/shopResourceFeedbackCreate"><code class="text-highlight text-highlight--grey">shopResourceFeedbackCreate</code></a> allows clients to create resource feedback to let a merchant know what steps are needed to ensure it is set up correctly.</p>
<p><strong>New mutations</strong>:</p>
<ul>
<li><a href="/docs/api/admin-graphql/2023-01/mutations/shopResourceFeedbackCreate"><code class="text-highlight text-highlight--grey">shopResourceFeedbackCreate</code></a></li>
</ul>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Shop billing address uses a new ShopAddress type <span id="shop-billing-address" class="heading-flag breaking"></h3>
  </div>
  <div class="accordion-content">
    <p>The <code class="text-highlight text-highlight--grey">billingAddress</code> field on <a href="/docs/api/admin-graphql/2023-01/objects/Shop"><code class="text-highlight text-highlight--grey">Shop</code></a> uses a new <a href="/docs/api/admin-graphql/2023-01/objects/ShopAddress"><code class="text-highlight text-highlight--grey">ShopAddress</code></a> type instead of <code class="text-highlight text-highlight--grey">MailingAddress</code>. Since <code class="text-highlight text-highlight--grey">Shop.billingAddress</code> never returns non-null first or last names, these fields have been marked as deprecated on the new <code class="text-highlight text-highlight--grey">ShopAddress</code> type. You should stop requesting those fields as they will be removed in a later version.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Payment ID has been added to OrderTransaction</h3>
  </div>
  <div class="accordion-content">
    <p>A new <code class="text-highlight text-highlight--grey">paymentId</code> field has been added to <a href="/docs/api/admin-graphql/2023-01/objects/OrderTransaction">OrderTransaction</a>. This unique ID is now sent to payment providers when a customer pays at checkout. This ID can be used to match order information between Shopify and payment providers. An Order can have more than one Payment ID. It only includes successful or pending payments. It does not include captures and refunds.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Webhook topics added for Locations</h3>
  </div>
  <div class="accordion-content">
    <p>Dedicated webhook topics have been introduced that will be sent out whenever a location is deactivated (<code class="text-highlight text-highlight--grey">locations/deactivate</code>) or when a deactivated location is re-activated (<code class="text-highlight text-highlight--grey">locations/activate</code>). Currently location deactivation and activation webhooks are lumped under the <code class="text-highlight text-highlight--grey">locations/update</code> webhook topic.</p>
<p>Webhooks on the <code class="text-highlight text-highlight--grey">locations/update</code> topic will also continue to be sent out for location activation/deactivation, in case any clients are already consuming these <code class="text-highlight text-highlight--grey">update</code> notifications for this purpose. It is recommended that such clients switch over to consuming the dedicated <code class="text-highlight text-highlight--grey">locations/activate</code> and <code class="text-highlight text-highlight--grey">locations/deactivate</code> topics, as eventually lumping them together with <code class="text-highlight text-highlight--grey">locations/update</code> webhooks will be deprecated in a future API version.</p>
<p><strong>New webhooks</strong>:</p>
<ul>
<li><code class="text-highlight text-highlight--grey">locations/deactivate</code></li>
<li><code class="text-highlight text-highlight--grey">locations/activate</code></li>
</ul>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Webhook topics updated for fulfillment orders</h3>
  </div>
  <div class="accordion-content">
    <p>Webhooks related to Fulfillment Orders have been added and updated. For a full list of topics, refer to the documentation on <a href="/docs/apps/build/orders-fulfillment/fulfillment-service-apps#webhooks">Fulfillment Order Webooks</a>.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Webhooks added for returns apps</h3>
  </div>
  <div class="accordion-content">
    <p><a href="/docs/apps/build/orders-fulfillment/returns-apps">Returns apps</a> can now give merchants greater visibility into critical returns data across platforms, and help them manage orders more efficiently.</p>
<p>Returns apps can automate the return management process by taking actions on behalf of merchants. These actions can include the following:</p>
<ul>
<li>Creating and canceling returns</li>
<li>Approving or declining return requests</li>
<li>Managing reverse fulfillment orders and deliveries, including creating a reverse delivery with shipping information, and disposing or restocking items</li>
<li>Issuing refunds</li>
<li>Closing and reopening returns</li>
</ul>
<p>We’ve also added new webhooks that your app can use to listen for events related to returns, refunds, reverse fulfillment orders, and reverse deliveries. Check out our documentation on <a href="/docs/apps/build/orders-fulfillment/returns-apps">returns apps</a> for a full list.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Webhook topic for when a payment schedule is due</h3>
  </div>
  <div class="accordion-content">
    <p>You can subscribe to the new <a href="/docs/api/admin-graphql/2023-01/enums/WebhookSubscriptionTopic#value-paymentschedulesdue"><code class="text-highlight text-highlight--grey">PAYMENT_SCHEDULES_DUE</code></a> webhook topic to be notified of when a <a href="/docs/api/admin-graphql/2023-01/objects/PaymentSchedule"><code class="text-highlight text-highlight--grey">PaymentSchedule.due_at</code></a> date is reached.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Webhooks added for subscription billing cycles</h3>
  </div>
  <div class="accordion-content">
    <p>We have added webhooks for the <a href="/docs/apps/build/purchase-options/subscriptions/billing-cycles"><code class="text-highlight text-highlight--grey">subscription billing cycles API</code></a>. The following are topics now available:</p>
<ul>
<li><code class="text-highlight text-highlight--grey">subscription_billing_cycle_edits_create</code></li>
<li><code class="text-highlight text-highlight--grey">subscription_billing_cycle_delete</code></li>
<li><code class="text-highlight text-highlight--grey">subscription_billing_cycle_edits_update</code></li>
</ul>
<p>We have also added new error codes to <a href="/docs/api/admin-graphql/2023-01/enums/BillingAttemptUserErrorCode"><code class="text-highlight text-highlight--grey">BillingAttemptUserErrorCode</code></a> and <a href="/docs/api/admin-graphql/2023-01/enums/SubscriptionBillingCycleErrorCode"><code class="text-highlight text-highlight--grey">SubscriptionBillingCycleUserError</code></a>.</p>
  </div>
</div>
  </div>
</div>


## GraphQL Storefront API changes

The following are all the changes currently introduced in the 2023-01 version of the GraphQL Storefront API:

<div class="accordion-container">
  <div class="accordion-controls">
    <button class="accordion-control" data-accordion-control-type="expand-all" type="button">Expand all</button>
  </div>
  <div class="accordion-content-container">
    <div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Metaobjects API</h3>
  </div>
  <div class="accordion-content">
    <p>You can now access custom data structures called <a href="/docs/api/storefront/2023-01/objects/Metaobject"><code class="text-highlight text-highlight--grey">Metaobjects</code></a> using the Storefront API. Similar to metafields, which enable custom fields to be associated with core resources in Shopify, metaobjects provide a way to associate entirely new data models. You can access entries of custom defined objects that were created through the Admin API and publish them to storefronts.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>New tag field has been added to the ProductFilter object</h3>
  </div>
  <div class="accordion-content">
    <p>The <a href="/docs/api/storefront/2023-01/input-objects/ProductFilter"><code class="text-highlight text-highlight--grey">ProductFilter</code></a> object has a new <code class="text-highlight text-highlight--grey">tag</code> field, which can be used for filtering if tags are enabled as a filter setting on the shop.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>StoreAvailability can now be searched based on proximity</h3>
  </div>
  <div class="accordion-content">
    <p>You can now use the <code class="text-highlight text-highlight--grey">near</code> parameter to search <a href="/docs/api/storefront/2023-01/objects/StoreAvailability"><code class="text-highlight text-highlight--grey">StoreAvailability</code></a> by proximity, via Storefront API. This parameter uses the <a href="/docs/api/storefront/2023-01/input-objects/GeoCoordinateInput"><code class="text-highlight text-highlight--grey">GeoCoordinateInput</code></a>.</p>
  </div>
</div>
  </div>
</div>


## REST Admin API changes

The following are all the changes currently introduced in the 2023-01 version of the REST Admin API.

<div class="accordion-container">
  <div class="accordion-controls">
    <button class="accordion-control" data-accordion-control-type="expand-all" type="button">Expand all</button>
  </div>
  <div class="accordion-content-container">
    <div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>B2B Order Import</h3>
  </div>
  <div class="accordion-content">
    <p>Merchants with B2B enabled on their stores can now <a href="/docs/apps/build/b2b/import-orders"><code class="text-highlight text-highlight--grey">Import Orders</code></a> in a B2B context.</p>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>New credit card fields added to Transaction</h3>
  </div>
  <div class="accordion-content">
    <p>New fields have been added to the <code class="text-highlight text-highlight--grey">payment_details</code> property on <a href="/docs/api/admin-rest/2023-01/resources/transaction"><code class="text-highlight text-highlight--grey">Transcation</code></a>.</p>
<p><strong>New fields</strong>:</p>
<ul>
<li><code class="text-highlight text-highlight--grey">credit_card_name</code>: The holder of the credit card.</li>
<li><code class="text-highlight text-highlight--grey">credit_card_wallet</code>: The wallet type where this credit card was retrieved from.</li>
<li><code class="text-highlight text-highlight--grey">credit_card_expiration_month</code>: The month in which the credit card expires.</li>
<li><code class="text-highlight text-highlight--grey">credit_card_expiration_year</code>: The year in which the credit card expires.</li>
</ul>
  </div>
</div>
<div class="accordion-item">
  <div class="accordion-link">
    <div class="chevron-up"></div>
    <div class="chevron-down"></div>
    <h3>Payment ID has been added to OrderTransaction</h3>
  </div>
  <div class="accordion-content">
    <p>A new <code class="text-highlight text-highlight--grey">paymentId</code> field has been added to <a href="/docs/api/admin-rest/2023-01/resources/transaction">Transaction</a>. This unique ID is now sent to payment providers when a customer pays at checkout. This ID can be used to match order information between Shopify and payment providers. An Order can have more than one Payment ID. It only includes successful or pending payments. It does not include captures and refunds.</p>
  </div>
</div>
  </div>
</div>