Revise validation API, deprecate region province types

6/27/2026, 12:00:33 AM

The validationCreate, validationDelete, and validationUpdate mutations now carry detailed descriptions that explain they manage cart and checkout validations powered by a function; the mutation signatures themselves remain unchanged. The deprecated MarketRegionProvince and MarketRegionProvinceCountry types have been removed, encouraging use of the new MarketRegionSubdivision and MarketRegionSubdivisionCountry objects. Error‑code enums have been updated extensively: the generic INCOMPATIBLE_CONFIGURATION codes in CatalogUserErrorCode and DiscountErrorCode were replaced with context‑specific names such as CATALOG_NOT_COMPATIBLE_WITH_CONDITION_TYPES and DISCOUNT_NOT_COMPATIBLE_WITH_CONDITION_TYPES. Several inventory error enums lost the ITEM_NOT_STOCKED_AT_LOCATION value, while numerous MarketUserErrorCode values switched from province‑centric errors to subdivision‑centric ones (e.g., SUBDIVISION_DOES_NOT_EXIST, INVALID_SUBDIVISION_FORMAT, MISSING_SUBDIVISION_CODE). Additional error codes were added for metafield definitions and theme contextualization to flag incompatibility with condition types. Developers should update their code to handle the new enum values, remove any references to the deleted types, and adapt error handling logic accordingly.

Mutation Changes

🔄 Modified Mutations (3)

validationCreate

Creates a cart and checkout validation: a server-side rule enforced before a customer can complete checkout. Each validation is powered by a cart and checkout validation function that you provide using functionId or functionHandle.

Use validationCreate to apply custom rules at checkout, such as limiting item quantities, enforcing order minimums or maximums, or blocking checkout for restricted shipping addresses. Validations run on Shopify's servers and are enforced throughout checkout, so they can't be bypassed by the client.

Validation errors always block checkout progress. The blockOnFailure field controls whether runtime exceptions, such as timeouts, also block checkout.

validationDelete

Deletes a cart and checkout validation, removing its rule from the shop's checkout. Once deleted, its cart and checkout validation function no longer runs during checkout.

validationUpdate

Updates a cart and checkout validation. Use validationUpdate to rename it, toggle whether it's enabled at checkout, change its blockOnFailure behavior, or update its metafields.

Validation errors always block checkout progress. The blockOnFailure field controls whether runtime exceptions, such as timeouts, also block checkout.

Type Changes

➖ Removed Types (2)

🏗️MarketRegionProvince➖ RemovedOBJECT

A province of a country which comprises a market. Deprecated: use MarketRegionSubdivision instead.

Fields: code, country, id, name
🏗️MarketRegionProvinceCountry➖ RemovedOBJECT

A country that a province belongs to. Deprecated: use MarketRegionSubdivisionCountry instead.

Fields: code, name

🔄 Modified Types (11)

🏗️CatalogUserErrorCode🔄 Modified
Enum value removed: INCOMPATIBLE_CONFIGURATION
Enum value added: CATALOG_NOT_COMPATIBLE_WITH_CONDITION_TYPES
🏗️DiscountErrorCode🔄 Modified
Enum value removed: INCOMPATIBLE_CONFIGURATION
Enum value added: DISCOUNT_NOT_COMPATIBLE_WITH_CONDITION_TYPES
🏗️InventoryAdjustQuantitiesUserErrorCode🔄 Modified
Enum value removed: ITEM_NOT_STOCKED_AT_LOCATION
🏗️InventoryMoveQuantitiesUserErrorCode🔄 Modified
Enum value removed: ITEM_NOT_STOCKED_AT_LOCATION
🏗️InventorySetOnHandQuantitiesUserErrorCode🔄 Modified
Enum value removed: ITEM_NOT_STOCKED_AT_LOCATION
🏗️InventorySetQuantitiesUserErrorCode🔄 Modified
Enum value removed: ITEM_NOT_STOCKED_AT_LOCATION
🏗️MarketUserErrorCode🔄 Modified
Enum value removed: CANNOT_DELETE_PROVINCE_MARKET
Enum value removed: CANNOT_ADD_COUNTRY_CONDITION_TO_PROVINCE_MARKET
Enum value removed: INVALID_COUNTRY_AND_PROVINCE_CONDITIONS
Enum value removed: INVALID_COUNTRY_AND_PROVINCE_DRIVERS
Enum value removed: CANNOT_ADD_ALL_PROVINCES_FOR_A_COUNTRY_TO_A_MARKET
Enum value removed: INVALID_CUSTOMIZATION_FOR_PROVINCE_CONDITION
Enum value added: SUBDIVISION_DOES_NOT_EXIST
Enum value added: CANNOT_DELETE_SUBDIVISION_MARKET
Enum value added: MISSING_SUBDIVISION_CODE
Enum value added: MARKET_MANAGER_NOT_COMPATIBLE_WITH_CONDITION_TYPES
Enum value added: INVALID_SUBDIVISION_FORMAT
Enum value added: INVALID_COUNTRY_AND_SUBDIVISION_CONDITIONS
Enum value added: SUBDIVISION_MUST_BELONG_TO_COUNTRY
Enum value added: CANNOT_ADD_ALL_SUBDIVISIONS_FOR_A_COUNTRY_TO_A_MARKET
Enum value added: INVALID_CUSTOMIZATION_FOR_SUBDIVISION_CONDITION
🏗️MetafieldDefinitionCreateUserErrorCode🔄 Modified
Enum value added: MARKET_METAFIELDS_NOT_COMPATIBLE_WITH_CONDITION_TYPES
🏗️MetafieldDefinitionUpdateUserErrorCode🔄 Modified
Enum value added: MARKET_METAFIELDS_NOT_COMPATIBLE_WITH_CONDITION_TYPES
🏗️MetafieldsSetUserErrorCode🔄 Modified
Enum value added: MARKET_METAFIELDS_NOT_COMPATIBLE_WITH_CONDITION_TYPES
🏗️OnlineStoreThemeFilesUserErrorsCode🔄 Modified
Enum value added: THEME_CONTEXTUALIZATION_NOT_COMPATIBLE_WITH_CONDITION_TYPES