Add return policies, requested edits, analytics tiers, and theme sessionId

7/15/2026, 12:00:29 AM

Shopify now exposes return policy profiles via returnPolicyProfile and returnPolicyProfiles queries, enabling apps to fetch profile details such as default status, markets, edit and return rules. The new requestedEditDecline mutation lets a merchant decline a buyer‑initiated edit request, returning the updated RequestedEdit object and any validation errors. Orders can retrieve all pending or resolved requested edits through the added requestedEdits field, complete with pagination support. Analytics schema gained multi‑schema support flags and tier availability metadata, and fields like eventConfig, metaobjectMetadata and tiers provide richer context for app event queries. The OnlineStoreTheme.files field now accepts a sessionId argument to overlay staged files, expanding theme file querying capabilities. Several deprecated MetafieldDefinition error codes were removed, and new return policy types such as ReturnPoliciesEditRules and ReturnPoliciesReturnRules were introduced to describe buyer‑initiated edit and return logic.

Query Changes

➕ Added Queries (2)

returnPolicyProfile

Returns a return policy profile of a shop.

returnPolicyProfiles

Returns the return policy profiles of a shop.

Mutation Changes

➕ Added Mutations (1)

requestedEditDecline

Declines a requested edit on an order.

🔄 Modified Mutations (1)

shippingLabelPurchase

Purchases a shipping label for a fulfillment order.

The shippingLabelPurchase mutation buys one shipping label for one fulfillment order using Shopify Shipping.
The mutation validates the fulfillment order, shipment details, package information, and available rates before it starts an asynchronous label purchase.

Note:
The shop must have accepted the Shopify Shipping terms of service before an app can purchase labels.

FedEx label purchases are not supported.

After validation, the mutation builds the shipment details, fetches available rates, selects a rate, and enqueues the label purchase. If you provide preferredRateSelection, the mutation attempts to purchase the matching carrier and service. If you don't provide preferredRateSelection, the mutation uses Shopify Shipping's default rate selection.

Default rate selection first tries to keep the fulfillment order's buyer-selected delivery method when available. If no buyer-selected rate matches, the mutation uses the shop's preferred carrier and service when configured. Otherwise, it uses Shopify's recommended rate for the shipment destination.

For Merchant of Record (MoR) and Markets Pro orders, the mutation first removes rates from carriers that don't support Markets Pro.

A shipping label can be purchased only when the fulfillment order meets the following criteria:

  • The fulfillment order is fulfillable and requires shipping.
  • The order has a destination shipping address.
  • The fulfillment order has an assigned location that can be used as the origin address.
  • The shipment has a valid shipping date, package, weight, and required customs information.
  • At least one shipping rate is available for the shipment.

The mutation can return errors in two places:

  • Synchronous validation errors are returned in the mutation's userErrors field. For example, invalid fulfillment orders, invalid package dimensions, missing customs information, or unavailable rates.
  • Asynchronous purchase-processing errors are returned in the ShippingLabelPurchaseResult.errors field after the purchase starts. For example, carrier availability, connection, billing, or other purchase-processing failures.

Use the returned ShippingLabelPurchaseResult.id to poll the purchase status with the node query. The result starts with a status of PENDING_PURCHASE and ends with PURCHASED or PURCHASE_FAILED. When the purchase succeeds, shippingLabels contains the purchased label.

Type Changes

➕ Added Types (22)

🏗️AnalyticsSchemaEventFieldConfig➕ AddedOBJECT

Configuration for an analytics schema field in the context of app events queries.

Fields: kind, scope, sourceAttributeHandle
📋AnalyticsSchemaEventFieldKind➕ AddedENUM

Whether an analytics schema event field is custom or standard.

Values: UNSPECIFIED, STANDARD, CUSTOM
🏗️AnalyticsSchemaEventFieldScope➕ AddedOBJECT

Valid event scopes for an analytics schema event field.

Fields: validApps, validEventHandles
🏗️AnalyticsSchemaMetaobjectMetadata➕ AddedOBJECT

Metadata associated with a metaobject-backed field.

Fields: name, parentCategory, parentCategoryDescription, parentCategoryDisplayName
🏗️AnalyticsSchemaTierAvailability➕ AddedOBJECT

Availability metadata for a schema tier.

Fields: period, tierName
🏗️RequestedEdit➕ AddedOBJECT

A buyer-initiated request to edit unfulfilled line items on an order.

Fields: createdAt, id, lineItems, order, requestApprovedAt ... +4 more
🏗️RequestedEditConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple RequestedEdits.

Fields: edges, nodes, pageInfo
📥RequestedEditDeclineInput➕ AddedINPUT_OBJECT

The input fields for declining a requested edit.

🏗️RequestedEditDeclinePayload➕ AddedOBJECT

Return type for requestedEditDecline mutation.

Fields: requestedEdit, userErrors
🏗️RequestedEditDeclineUserError➕ AddedOBJECT

Errors related to declining a requested edit.

Fields: code, field, message
📋RequestedEditDeclineUserErrorCode➕ AddedENUM

Possible error codes that can be returned by RequestedEditDeclineUserError.

Values: NOT_FOUND, INVALID
🏗️RequestedEditEdge➕ AddedOBJECT

An auto-generated type which holds one RequestedEdit and a cursor during pagination.

Fields: cursor, node
🏗️RequestedEditLineItem➕ AddedOBJECT

A line item included in a buyer-initiated requested edit.

Fields: id, lineItem, quantity, resolvedQuantity
🏗️RequestedEditLineItemConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple RequestedEditLineItems.

Fields: edges, nodes, pageInfo
🏗️RequestedEditLineItemEdge➕ AddedOBJECT

An auto-generated type which holds one RequestedEditLineItem and a cursor during pagination.

Fields: cursor, node
📋RequestedEditStatus➕ AddedENUM

The status of a buyer-initiated requested edit.

Values: REQUESTED, RESOLVED, DENIED
🏗️ReturnPoliciesEditRules➕ AddedOBJECT

Rules that apply to buyer-initiated edit and cancellation requests under a return policy profile.

Fields: canAcceptEdits, editWindowMinutes
🏗️ReturnPoliciesReturnRules➕ AddedOBJECT

Return Rules that apply to returns under a return policy profile.

Fields: canAcceptReturns, extendWindowToBusinessDay, returnWindowDays, returnWindowStartingFrom
📋ReturnPoliciesReturnWindowStartingFrom➕ AddedENUM

The starting point for calculating a return window.

Values: ITEM_DELIVERY_DATE, LAST_ITEM_DELIVERY_DATE
🏗️ReturnPolicyProfile➕ AddedOBJECT

A return policy profile.

Fields: default, editRules, id, markets, name ... +2 more
🏗️ReturnPolicyProfileConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple ReturnPolicyProfiles.

Fields: edges, nodes, pageInfo
🏗️ReturnPolicyProfileEdge➕ AddedOBJECT

An auto-generated type which holds one ReturnPolicyProfile and a cursor during pagination.

Fields: cursor, node

🔄 Modified Types (8)

🏗️AnalyticsSchema🔄 Modified
Field added: supportsMultiFactQueries

Whether this schema can be selected with other schemas in a query.

Field added: tierAvailability

A list of tiers for the schema, controlling access to certain fields based on a date range.

🏗️AnalyticsSchemaField🔄 Modified
Field added: eventConfig

Configuration for this field in the context of app events queries.

Field added: metaobjectMetadata

Metadata associated with a metaobject-backed field.

Field added: tiers

The tiers that this field is valid for, when the schema defines tier availability.

🏗️AnalyticsSchemaFieldCategory🔄 Modified
Enum value added: APP_EVENT
Enum value added: METAOBJECT
🏗️MetafieldDefinitionCreateUserErrorCode🔄 Modified
Enum value removed: MARKET_METAFIELDS_NOT_COMPATIBLE_WITH_CONDITION_TYPES
🏗️MetafieldDefinitionUpdateUserErrorCode🔄 Modified
Enum value removed: MARKET_METAFIELDS_NOT_COMPATIBLE_WITH_CONDITION_TYPES
🏗️MetafieldsSetUserErrorCode🔄 Modified
Enum value removed: MARKET_METAFIELDS_NOT_COMPATIBLE_WITH_CONDITION_TYPES
🏗️OnlineStoreTheme🔄 Modified
🔄 Field modified: files
🏗️Order🔄 Modified
Field added: requestedEdits

The buyer-initiated requested edits on unfulfilled line items for this order.