Analytics Targets, Lead Capture, Order Enhancements, New Enums

4/17/2026, 12:00:23 AM

Shopify now exposes a topLevelMenuDiscoverable boolean to indicate whether the primary menu is exposed to shoppers. The new leadCaptureForDiscount mutation allows merchants to create a discount code in exchange for a customer’s email, using two new input types for customer and discount data. AnalyticsTarget queries and type descriptions have been rewritten to clarify the role of filters, sorting, and pagination, and the target fields now use fresh descriptions that reference ISO‑4217 currency codes and presentment conversions. Customer payment method queries now detail vaulted payment methods and include optional revocation, email updates, and PayPal billing agreement support, with updated, clearer descriptions. The Order type gained a cartToken field, and OrderTransaction fields totalUnsettled, totalUnsettledSet, and totalUnsettledV2 received updated descriptions and retain deprecation on legacy numeric forms. New enum values—TAKEN for AnalyticsTarget errors, AUTO_END_SESSION_* and AUTO_START_SESSION_CHECKOUT for cash‑management reason codes, and MOST_RELEVANT for collection sorting—expand available options for developers. Adjust your implementations to account for these new types, updated fields, and enhanced error handling introduced in this unstable schema release.

Query Changes

➕ Added Queries (1)

topLevelMenuDiscoverable

Whether the top level menu is discoverable.

🔄 Modified Queries (2)

analyticsTargets

Returns a paginated list of analytics targets
for the shop. Each target represents a merchant-defined goal for a specific metric over a date range.

Results can be filtered by metric, name, date range, or filter expression, and sorted by fields
such as start_date, expected_value, or metric.

Use the analyticsTargetCreate
mutation to add new targets.

customerPaymentMethod

Returns a vaulted customer payment method by its ID, including the instrument type (credit card, PayPal, etc.), billing address, and current status. Optionally includes revoked payment methods. Use this to look up a specific saved payment method for a customer — for example, to check whether a subscription's payment method is still valid or to display stored payment details.

Mutation Changes

➕ Added Mutations (1)

leadCaptureForDiscount

Creates a discount code in exchange for a customer's email address.

🔄 Modified Mutations (8)

analyticsTargetCreate

Creates an analytics target that
defines a merchant's goal for a specific metric over a date range. For example, a merchant
can set a target of $50,000 in total sales for a quarter, or 1,000 orders in a month.

Provide the target attributes through the input argument. The currencyCode defaults to the
shop's currency when not specified. A target is uniquely identified by the combination of
metric, startDate, endDate, and filters — attempting to create a duplicate returns a user error.

Use analyticsTargetUpdate
to modify an existing target, or
analyticsTargetsDelete
to remove targets.

~ Modified argument: input
analyticsTargetUpdate

Updates an existing analytics target.
Only the fields provided in the input argument are modified; omitted fields remain unchanged.
Setting a nullable field to null clears its value.

Use analyticsTargetCreate
to create a new target, or
analyticsTargetsDelete
to remove targets.

~ Modified argument: input
analyticsTargetsDelete

Deletes one or more analytics targets.
Accepts a list of target IDs and returns the IDs that were successfully deleted. If any ID
is not found, a user error is returned for that ID while the remaining valid targets are still deleted.

Use analyticsTargetCreate
to create new targets, or
analyticsTargetUpdate
to modify existing ones.

customerPaymentMethodCreditCardUpdate

Updates an existing vaulted credit card payment method for a customer, including billing address and card details. Requires a valid cardserver session from a PCI-compliant environment. Use this when a customer's card details have changed (e.g., new expiration date or replacement card) and ongoing subscriptions or saved payment methods need to be updated.

customerPaymentMethodPaypalBillingAgreementCreate

Creates a vaulted PayPal billing agreement for a customer, enabling recurring charges through PayPal. The billing agreement ID (starting with 'B-') must be obtained from PayPal. Once created, this payment method can be used for subscription billing or future order payments without requiring the customer to re-authenticate with PayPal.

customerPaymentMethodPaypalBillingAgreementUpdate

Updates the billing address associated with a customer's vaulted PayPal billing agreement. Use this when a customer's billing information has changed and their PayPal payment method record in Shopify needs to be updated accordingly.

customerPaymentMethodRevoke

Revokes a customer's vaulted payment method, preventing it from being used for future charges such as subscriptions, draft orders, or other payments. Revocation will fail if the payment method has active subscription contracts. Use this when a customer requests removal of their stored payment information or when a payment method is no longer valid.

customerPaymentMethodSendUpdateEmail

Sends an email to a customer containing a secure link to update a specific vaulted payment method. This is commonly used when a customer's credit card is expiring or has been declined, and they need to provide updated payment details for ongoing subscriptions. The email can be customized with sender and BCC fields.

Type Changes

➕ Added Types (3)

📥LeadCaptureCustomerInput➕ AddedINPUT_OBJECT

The input fields for customer information in lead capture.

📥LeadCaptureDiscountInput➕ AddedINPUT_OBJECT

The input fields for discount information in lead capture.

🏗️LeadCaptureForDiscountPayload➕ AddedOBJECT

Return type for leadCaptureForDiscount mutation.

Fields: discountNode, userErrors

🔄 Modified Types (10)

🏗️AnalyticsTarget🔄 Modified
🔄 Field modified: createdAt
🔄 Field modified: currencyCode
🔄 Field modified: endDate
🔄 Field modified: expectedValue
🔄 Field modified: filters
🔄 Field modified: metric
🔄 Field modified: name
🔄 Field modified: presentmentExpectedValue
🔄 Field modified: shopifyqlQuery
🔄 Field modified: startDate
🔄 Field modified: updatedAt
🏗️AnalyticsTargetCreatePayload🔄 Modified
🔄 Field modified: analyticsTarget
🏗️AnalyticsTargetCreateUserErrorCode🔄 Modified
Enum value added: TAKEN
🏗️AnalyticsTargetUpdatePayload🔄 Modified
🔄 Field modified: analyticsTarget
🏗️AnalyticsTargetUpdateUserErrorCode🔄 Modified
Enum value added: TAKEN
🏗️CashManagementDefaultReasonCodeEnum🔄 Modified
Enum value added: AUTO_END_SESSION_LOGOUT
Enum value added: AUTO_END_SESSION_LOCATION_CHANGE
Enum value added: AUTO_START_SESSION_CHECKOUT
🏗️CashManagementSystemReasonCodeEnum🔄 Modified
Enum value added: AUTO_END_SESSION_LOGOUT
Enum value added: AUTO_END_SESSION_LOCATION_CHANGE
Enum value added: AUTO_START_SESSION_CHECKOUT
🏗️CollectionSortOrder🔄 Modified
Enum value added: MOST_RELEVANT
🏗️Order🔄 Modified
Field added: cartToken

The token associated with the cart that was used to create the order.

🏗️OrderTransaction🔄 Modified
🔄 Field modified: totalUnsettled
🔄 Field modified: totalUnsettledSet
🔄 Field modified: totalUnsettledV2