Added created_at Filters, Metaobject CompareDigest, FileDelete Paths & More

10/30/2026, 12:00:43 AM

Developers can now filter many queries by creation date: cashTrackingSessions, deliveryCustomizations, inventoryShipments, marketingEvents, staffMembers, cashActivities (on CashDrawer, PointOfSaleDevicePaymentSession, CashTrackingSessions), and the ExchangeV2 and Return connections now support a "created_at" filter. A number of sort key enums received new options (e.g. CREATED_AT) and the FulfillmentTrackingInfo company list was extended with additional carriers, with automatic status updates clearly documented. FileContentType now includes DIRECTORY and FilesErrorCode gained many directory‑related errors such as BLANK, WRITE_RESTRICTED_FILES_REQUIRED, and BATCH_DIRECTORY_MUTATION_NOT_ALLOWED. The Metaobject type now exposes a non‑nullable compareDigest field, and the mutations metaobjectUpdate and metaobjectUpsert accept a compareDigest argument to guard against stale data. New object types were added for partner account linking, including AgenticExternalAccount and ExternalAccountSetPayload, and a new mutation automationTestEventUpdate lets clients rename or update test events. The fileDelete mutation now accepts a list of "paths" in addition to file IDs for bulk deletions. Additional fields appear on AnalyticsSchemaEventFieldScope (eventLabels, validApiClientIds), and BusinessCustomerErrorCode gains a new MANAGED_BY_APP value. Finally, the removed exchangeV2s field is deprecated, with the new “returns” field now offering a richer filter set inclusive of created_at.

Query Changes

🔄 Modified Queries (7)

cashTrackingSessions

Returns a shop's cash tracking sessions for locations with a POS Pro subscription.

Tip: To query for cash tracking sessions in bulk, you can
perform a bulk operation.

~ Modified argument: query
deliveryCustomizations

The delivery customizations.

~ Modified argument: query
inventoryShipments

Returns a paginated list of InventoryShipment objects.

Supports filtering by barcode (e.g. barcode:"12345"), status (e.g. status:"draft" or status:"in_transit"), and destination (e.g. destination_id:12345).

~ Modified argument: query
marketingEvents

A list of marketing events associated with the marketing app.

~ Modified argument: query
paymentCustomizations

The payment customizations.

~ Modified argument: query
pointOfSaleDevicePaymentSessions

A list of point of sale device payment sessions in the shop. Cash management data is returned only for locations with a POS Pro subscription.

~ Modified argument: query
staffMembers

Returns a paginated list of StaffMember objects for the shop. Staff members are users who can access the Shopify admin to manage store operations.

Supports filtering by account type, email, and name, with an option to sort results. The query returns a StaffMemberConnection for cursor-based pagination.

~ Modified argument: query

Mutation Changes

➕ Added Mutations (2)

automationTestEventUpdate

Renames a test event or replaces its trigger parameters. Updating a captured test event converts it to custom and counts toward the custom test event limit.

externalAccountSet

Links a partner account to the shop's enrollment for the agentic channel that the calling app links. Every call sends the account's ID and name, and Shopify stores the name with the ID. Use null as the accountId to clear the link. An account that this mutation links replaces an account that Shopify matched automatically, and an automatic match never replaces it.

🔄 Modified Mutations (3)

fileDelete

Deletes file assets that were previously uploaded to your store.

Use the fileDelete mutation to permanently remove media and file assets from your store when they are no longer needed.
This mutation handles the complete removal of files from both your store's file library and any associated references
to products or other resources.

The fileDelete mutation supports removal of multiple file types:

  • Images: Product photos, variant images, and general store imagery
  • Videos: Shopify-hosted videos for product demonstrations and marketing content
  • External Videos: YouTube and Vimeo videos linked to your products
  • 3D models: Interactive 3D representations of products
  • Generic files: PDFs, documents, and other file types stored in your
    Files page

When you delete files that are referenced by products, the mutation automatically removes those references and
reorders any remaining media to maintain proper positioning. Product file references are database relationships
managed through a media reference system, not just links in product descriptions. The Shopify admin provides a UI
to manage these relationships, and when files are deleted, the system automatically cleans up all references.
Files that are currently being processed by other operations are rejected to prevent conflicts.

Caution:
File deletion is permanent and can't be undone. When you delete a file that's being used in your store,
it will immediately stop appearing wherever it was displayed. For example, if you delete a product image,
that product will show a broken image or placeholder on your storefront and in the admin. The same applies
to any other files linked from themes, blog posts, or pages. Before deleting files, you can use the
files query to list and review
your store's file assets.

Learn how to manage
product media and file assets
in your app.

+ New argument: paths
metaobjectUpdate

Updates a Metaobject with new field values, handle, or capabilities. Metaobjects are custom data structures that extend Shopify's data model.

You can modify field values mapped to the metaobject's MetaobjectDefinition, update the handle for a unique identifier, and adjust capabilities like publishing status. When updating the handle, you can optionally create a redirect from the old handle to maintain existing references.

+ New argument: compareDigest
metaobjectUpsert

Creates or updates a Metaobject based on its handle. If a metaobject with the specified handle exists, the mutation updates it with the provided field values. If no matching metaobject exists, the mutation creates a new one.

The handle serves as a unique identifier within a metaobject type. Field values map to the MetaobjectDefinition's field keys and overwrite existing values during updates.

+ New argument: compareDigest

Type Changes

➕ Added Types (8)

🏗️AgenticExternalAccount➕ AddedOBJECT

The partner account that's linked to the shop's enrollment for an agentic channel.

Fields: accountId
🏗️AnalyticsSchemaEventLabel➕ AddedOBJECT

A label declared for an analytics event.

Fields: eventHandle, label
🏗️AutomationTestEventUpdatePayload➕ AddedOBJECT

Return type for automationTestEventUpdate mutation.

Fields: testEvent, userErrors
🏗️AutomationTestEventUpdateUserError➕ AddedOBJECT

An error that prevented an automation test event from being updated.

Fields: code, field, message
📋AutomationTestEventUpdateUserErrorCode➕ AddedENUM

Possible error codes that can be returned by AutomationTestEventUpdateUserError.

Values: EVENT_NOT_FOUND, INVALID_EVENT_NAME, INVALID_EVENT_PAYLOAD, MAX_CUSTOM_EVENTS_EXCEEDED, MULTIPLE_TRIGGERS, TRIGGER_NOT_FOUND, TRIGGER_PARAMS_NOT_OBJECT, TRIGGER_PARAMS_TOO_LARGE ... +3 more
🏗️ExternalAccountSetPayload➕ AddedOBJECT

Return type for externalAccountSet mutation.

Fields: externalAccount, userErrors
🏗️ExternalAccountSetUserError➕ AddedOBJECT

An error that occurs during the execution of ExternalAccountSet.

Fields: code, field, message
📋ExternalAccountSetUserErrorCode➕ AddedENUM

Possible error codes that can be returned by ExternalAccountSetUserError.

Values: ENROLLMENT_NOT_FOUND

🔄 Modified Types (18)

🏗️AnalyticsSchemaEventFieldScope🔄 Modified
➕ Field added: eventLabels

Labels for the events the field lives on, when the app declared one.

➕ Field added: validApiClientIds

The API client IDs of the apps that own the field.

🏗️BusinessCustomerErrorCode🔄 Modified
➕ Enum value added: MANAGED_BY_APP
🏗️CalculatedOrder🔄 Modified
🔄 Field modified: lineItems
🏗️CashActivitiesSortKeys🔄 Modified
➕ Enum value added: CREATED_AT
🏗️CashDrawer🔄 Modified
🔄 Field modified: cashActivities
🏗️CashTrackingSessionsSortKeys🔄 Modified
➕ Enum value added: CREATED_AT
🏗️FileContentType🔄 Modified
➕ Enum value added: DIRECTORY
🏗️FilesErrorCode🔄 Modified
➕ Enum value added: BLANK
➕ Enum value added: WRITE_RESTRICTED_FILES_REQUIRED
➕ Enum value added: INVALID_DIRECTORY_MOVE
➕ Enum value added: BATCH_DIRECTORY_MUTATION_NOT_ALLOWED
➕ Enum value added: DIRECTORY_NOT_EMPTY
➕ Enum value added: DIRECTORY_ITEM_LIMIT_EXCEEDED
➕ Enum value added: DIRECTORY_NESTED_ITEM_LIMIT_EXCEEDED
➕ Enum value added: DIRECTORY_SHOP_LIMIT_EXCEEDED
➕ Enum value added: RESERVED_DIRECTORY_NAME
➕ Enum value added: USER_FILE_OUTSIDE_USER_DIRECTORY
🏗️FulfillmentEventSortKeys🔄 Modified
➕ Enum value added: CREATED_AT
🏗️FulfillmentTrackingInfo🔄 Modified
🔄 Field modified: company
🏗️InventoryShipmentSortKeys🔄 Modified
➕ Enum value added: CREATED_AT
🏗️MarketingEventSortKeys🔄 Modified
➕ Enum value added: CREATED_AT
🏗️Metaobject🔄 Modified
➕ Field added: compareDigest

The digest of the metaobject's handle, status, template suffix, and field values. Pass it as compareDigest to metaobjectUpdate or metaobjectUpsert to update the metaobject only if it hasn't changed since it was read.

🏗️MetaobjectUserErrorCode🔄 Modified
➕ Enum value added: STALE_OBJECT
➕ Enum value added: INVALID_COMPARE_DIGEST
🏗️Order🔄 Modified
🔄 Field modified: exchangeV2s
🔄 Field modified: returns
🏗️PointOfSaleDevicePaymentSession🔄 Modified
🔄 Field modified: cashActivities
🏗️PointOfSaleDevicePaymentSessionSortKeys🔄 Modified
➕ Enum value added: CREATED_AT
🏗️StaffMembersSortKeys🔄 Modified
➕ Enum value added: CREATED_AT