7/11/2026, 12:00:14 AM
A new query, analyticsSchemas, lets developers request a list of analytics schemas and filter them by name to discover dimensions and metrics. The WhatsApp marketing consent mutation now has a clearer description that the customer’s WhatsApp account is identified by phone number, and the opt‑in level field’s description was updated to note when it was last set. Shipping label purchase was dramatically expanded: the mutation’s argument description now lists all validation steps, the returned ShippingLabelPurchasePayload contains an asynchronous ShippingLabelPurchaseResult with detailed errors, and the result’s errors, shippingLabels, and status fields all have more explicit descriptions. Return lines (ExchangeLineItem) now expose productId, title, variantSku, and variantTitle so apps can reference the original product data. Every inventory‑related user error enum now includes IDEMPOTENCY_PREVIOUS_ATTEMPT_FAILED to signal a retry failure. The ShippingLabelPurchaseResult’s fields were renamed to emphasize their asynchronous nature, and its status enum description was clarified with start and end states. Finally, the optInLevel descriptions on CustomerMarketingConsent, CustomerSmsMarketingConsent, and CustomerWhatsAppMarketingConsent were revised to reflect that the level represents the most recent consent update, following M3AAWG guidelines.
Returns the list of available analytics schemas with their dimensions and metrics.
Updates a customer's WhatsApp marketing consent information. Shopify identifies the customer's WhatsApp account by their phone number.
You can subscribe or unsubscribe the customer from WhatsApp marketing and specify the opt-in level. You can also include when and where the consent was collected.
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.
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 mutation can return errors in two places:
userErrors field. For example, invalid fulfillment orders, invalid package dimensions, missing customs information, or unavailable rates.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.
A data schema with its dimensions and metrics from the analytics service.
Deprecation metadata for a schema or field.
A dimension or metric field in an analytics schema.
The type of aggregation a field calculation produces.
The business domain category of a field in the analytics schema.
The data type of a field in the analytics schema.
Indicates whether a field should be promoted in the UI.
Indicates whether an increase in a metric is positive, negative, or neutral.
Variants of a field for different funnel types.
A join relationship between schemas.
Settings used to validate parameters inside of a MATCHES statement.
A join relationship for ENTITY type dimensions used in MATCHES statements.
Identifies where a metafield definition comes from.
Metadata associated with a metafield.
Configuration for multi-store reporting on a schema.
Hints for how to display a field in the UI.
optInLeveloptInLeveloptInLevelproductIdThe ID of the product at time of return creation.
titleThe title of the product at time of return creation.
variantSkuThe SKU of the variant at time of return creation.
variantTitleThe title of the variant at time of return creation.
IDEMPOTENCY_PREVIOUS_ATTEMPT_FAILEDIDEMPOTENCY_PREVIOUS_ATTEMPT_FAILEDIDEMPOTENCY_PREVIOUS_ATTEMPT_FAILEDIDEMPOTENCY_PREVIOUS_ATTEMPT_FAILEDIDEMPOTENCY_PREVIOUS_ATTEMPT_FAILEDIDEMPOTENCY_PREVIOUS_ATTEMPT_FAILEDIDEMPOTENCY_PREVIOUS_ATTEMPT_FAILEDIDEMPOTENCY_PREVIOUS_ATTEMPT_FAILEDIDEMPOTENCY_PREVIOUS_ATTEMPT_FAILEDIDEMPOTENCY_PREVIOUS_ATTEMPT_FAILEDIDEMPOTENCY_PREVIOUS_ATTEMPT_FAILEDIDEMPOTENCY_PREVIOUS_ATTEMPT_FAILEDshippingLabelPurchaseResulterrorsshippingLabelsstatus