For Shopify Plus / Enterprise, a single checkout now lets customers choose "shipping" or "in-store pickup" per item within the same order. Previously, each delivery method required a separate order. Because the flow of delivery and fulfillment information changes, app developers should validate and update against the feature preview now.
Items to be shipped and items for in-store pickup had to be purchased in separate checkouts. Payment happened twice.
Choose shipping / in-store pickup per item. A single order generates multiple fulfillment orders—one for shipping and one for pickup. Payment happens once.
delivery_method(SHIPPING / PICK_UP) and route each product to its respective fulfillment path.There are no new API fields and no breaking schema changes.The existing fields are used as-is.
Existing fields will start returning values in combinations that have never come through before. If you aren't building with that in mind, things break.
| Subject | Until now | Going forward (new spec) |
|---|---|---|
Checkout's deliveryGroups |
Often effectively treated as a single group | multiple Each group represents "how that set of products is delivered." A delivery group and a pickup group can coexist. |
| Fulfillment orders within an Order | The same order generally used a single delivery method | mixed In the same order, SHIPPING and PICK_UP fulfillment orders can both exist. |
delivery_method field |
may have been read on a per-order assumption | Review needed Assigned per fulfillment order, indicating each group's fulfillment method. Read it per group. |
| Item | Previously | Ship and pickup in one order |
|---|---|---|
| Customer purchase experience | Split Separate orders and payments for shipping and pickup | Unified Choose a method per item, with one order and one payment |
| Relationship between orders and delivery methods | 1 order = 1 delivery method (assumption) | Within a single order, shipping and pickup mixed |
| fulfillment order | a single method | SHIPPING and PICK_UP can coexist |
| API schema | — | No changes The combination of existing field values changes |
| App-side changes | Not required | Updates and testing required Test it now in the feature preview |
| Affected merchants | — | Shopify Plus / Enterprise (shipping + local pickup enabled) |
Logic that doesn't anticipate multiple deliveryGroup fails during checkout and blocks the purchase.
If you total shipping, tax, inventory, and the like on the assumption of "one order = one delivery method," a mix of shipping and pickup produces incorrect figures.
delivery_method Routing everything uniformly without checking it leads to misdeliveries, such as sending pickup items to warehouse shipping.
Create a new development store from "Dev stores." Under Shopify Plan, Plus, and under "Test a feature preview," Ship and pickup select.
Place an actual test order containing both a shipped item and a store-pickup item, and verify the behavior end-to-end.
delivery_method Verify routing inThe app reads the fulfillment order's delivery_method , and verify that it routes items to the correct path.
Read the official test guide and identify the places in your code that assume "one delivery method per order" (shipping calculation, inventory allocation, fulfillment integration, and display).
If the app update changes merchant-facing behavior or workflows, contact each merchant as soon as possible. For questions and the latest information, see the developer forum.
The schema is unchanged, with no breaking changes.Existing fields return new combinations of values— that is the heart of this change. The difference shows up in the "contents," not the "shape."
deliveryGroups should be assumed to be pluralCheckout can have multiple deliveryGroups . Implementations that look only at the first group or aggregate assuming a single one need to be fixed. Loop over each group.
The same order can have both SHIPPING and PICK_UP fulfillment orders coexisting. Don't hardcode the delivery method per order.
delivery_methodthe fulfillment order's delivery_method(SHIPPING / PICK_UP) — read it to branch the routing for fulfillment integration, inventory, and notifications.
The article tags span Admin GraphQL API / Storefront GraphQL API / Checkout UI / Functions / Customer Accounts / Admin Extensions. From shipping and tax calculation, inventory allocation, delivery status display, and order display in customer accounts, all the way to delivery-related Functions,every place that holds the implicit assumption that "an order has one delivery method"should be validated with real data in the feature preview.
delivery_method read it to rework the routing so that "warehouse shipping" and "in-store hold" are branched.SHIPPING / PICK_UP 's two values can both appear on the same order, so add a test case for that.delivery_method and its progress, then rework the display to show "Shipping: tracking number" and "In-store pickup: pickup readiness" separately.SHIPPING and PICK_UP will now be mixed —a new combination is coming.delivery_method finish the changes this requires, and stamp out checkout errors and mis-deliveries before rollout."