API migration reference

Move merchant shipping logic from DeliveryProfile to Markets safely.

Merchant-owned configuration moves to Markets. App-owned profiles remain supported. The critical task is separating those two behaviors in your code.

Data model change

Product-driven → market-driven.

Legacy merchant configurationDeliveryProfile↓LocationGroup↓ShippingZone + rates
→
Market-driven configurationMarket↓Shipping options↓Product + location conditions
Audit inventory

Eight ownership-sensitive API surfaces.

These APIs are affected for merchant-owned usage. App-owned delivery profiles continue to use the DeliveryProfile API.

deliveryProfileReaddeliveryProfilesReaddeliveryProfilesCountReaddeliveryProfileLocationGroupReaddeliveryProfileLocationGroupsReaddeliveryProfileCreateMutationdeliveryProfileUpdateMutationdeliveryProfileRemoveMutation
Why this is urgent

A successful response may still be a failed migration.

On a market-driven shop, legacy merchant-profile reads can return stale snapshots. Writes can succeed without errors but fail to update the merchant’s live shipping settings.

Step 1

Detect the model

shop { features { marketDrivenShipping } }

Branch while legacy and market-driven shops coexist.

Step 2

Use the live source

markets { nodes { delivery { shipping { ... } } } }

Use the current schema from Shopify’s docs; this snippet is intentionally conceptual.

Step 3

Request the right scope

read_markets, write_markets

Writers need both. Contextual Product Feeds use read_product_listings instead.

Step 4

Test both branches

legacy dev store + feature-preview dev store

Validate rate reads, mutations, checkout behavior, errors, and rollback.

Check the repository

Turn this reference into a file-level report.

Scan my app