Action Required / Feature Preview

Shipping and in-store pickup in a single order
Ship and pickup in one order

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.

Action RequiredAdmin ExtensionsAdmin GraphQL APICheckout UICustomer AccountsFunctionsStorefront GraphQL API
On this page
  1. What's changing, in 30 seconds
  2. How it works: one order → multiple fulfillments
  3. What changes and what stays the same in the API
  4. Old vs. new behavior
  5. What happens if you ignore it (risks)
  6. How to test (3 steps)
  7. 5 points engineers should know
  8. 3 use cases you can apply to your business
  9. A one-line summary for your pitch

1What's actually changing

Until now, customers had to place a "shipping order" and an "in-store pickup order" separately. place.
Under the new behavior, for merchants who have enabled both shipping and local pickup,customers can choose "shipping" or "in-store pickup" per item in the cart, and it's combined into a single order.
Order 1 Order 2

Before: a separate order per delivery method

Items to be shipped and items for in-store pickup had to be purchased in separate checkouts. Payment happened twice.

New: mixed in one order

Choose shipping / in-store pickup per item. A single order generates multiple fulfillment orders—one for shipping and one for pickup. Payment happens once.

This applies to Shopify Plus / Enterprise merchants. It works on stores where both shipping and local pickup are enabled. Details on the rollout timing to all merchants and any usage fees are not statedin the article (it's currently a feature preview test period).

2How it works: one order → multiple fulfillments

Checkout (cart) deliveryGroup #1 Items to ship deliveryGroup #2 Items for in-store pickup Holds multiple deliveryGroups One payment Order (one) Within the same order multiple fulfillment order Fulfillment Order ① delivery_method = SHIPPING Fulfillment Order ② delivery_method = PICK_UP
The key point is that the assumption "1 order = 1 delivery method" no longer holds. Per fulfillment order, you need to read delivery_method(SHIPPING / PICK_UP) and route each product to its respective fulfillment path.

3What changes / stays the same in the API

Unchanged: the schema

There are no new API fields and no breaking schema changes.The existing fields are used as-is.

Changes: the "combinations" of data

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.

Three combinations that can newly arise

SubjectUntil nowGoing 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.
Apps that could be affected are, broadly, any that "work with delivery / fulfillment information by reading, calculating, or displaying it." The article tags also show this reaches a wide range: Admin GraphQL API / Storefront GraphQL API / Checkout UI / Functions / Customer Accounts / Admin Extensions.

4Before vs. new spec comparison

ItemPreviouslyShip 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)

5What happens if you leave it (risks)

Checkout errors

Logic that doesn't anticipate multiple deliveryGroup fails during checkout and blocks the purchase.

Calculation errors

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.

Fulfillment routing failures

delivery_method Routing everything uniformly without checking it leads to misdeliveries, such as sending pickup items to warehouse shipping.

This is a Action Required -tagged change. Apps that aren't updated directly harm the merchant's checkout experience. The testing window is already open, so complete your changes in the feature preview before rollout.

6Testing steps (3 steps)

1

Create a dev store

Create a new development store from "Dev stores." Under Shopify Plan, Plus, and under "Test a feature preview," Ship and pickup select.

2

Create a mixed order

Place an actual test order containing both a shipped item and a store-pickup item, and verify the behavior end-to-end.

3

delivery_method Verify routing in

The app reads the fulfillment order's delivery_method , and verify that it routes items to the correct path.

What to do before and after testing

Before

Review the test guide and take stock of your assumptions

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).

After

Notify merchants

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.

7Five points engineers should keep in mind

1. There are no new fields — the combination is what matters

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."

2. deliveryGroups should be assumed to be plural

Checkout 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.

3. A single order mixes shipping and pickup

The same order can have both SHIPPING and PICK_UP fulfillment orders coexisting. Don't hardcode the delivery method per order.

4. The routing key is delivery_method

the fulfillment order's delivery_method(SHIPPING / PICK_UP) — read it to branch the routing for fulfillment integration, inventory, and notifications.

5. The impact is broad — audit the "single delivery" assumption across every layer

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.

8Three use cases you can put to work

Shipping Pickup Branching
USE CASE 1

Reworking "mixed-order routing" in OMS / WMS integration apps

Challenge
Your integration app builds fulfillment instructions assuming "one order = one delivery method," so orders that mix shipping and in-store pickup risk misrouting or integration errors.
Solution
Reproduce a mixed order in a feature preview dev store, and for each fulfillment order delivery_method read it to rework the routing so that "warehouse shipping" and "in-store hold" are branched.
Result
Prevent checkout errors and misdeliveries after rollout, and clear the Action Required within the deadline.
Technical notes
Loop per fulfillment order, not per order.SHIPPING / PICK_UP 's two values can both appear on the same order, so add a test case for that.
Shipping Pickup
USE CASE 2

A proposal to raise average order value and CVR by strengthening BOPIS for Plus merchants

Problem
Customers who want to buy shipped items and in-store pickup items in a single trip are forced into separate orders, leading to cart abandonment and smaller basket sizes.
Solution
Enable this feature preview on Plus / Enterprise stores to combine shipping + local pickup into one checkout, so "ship the bulky items, pick up what's needed right away in store" can be completed in a single order.
Impact
A UX that wraps up in a single payment curbs drop-off, and proposing shipping and pickup together can lift average order value.
Technical notes
The prerequisite is that both shipping and local pickup are enabled. Use preview to check that the delivery-method display doesn't break in the theme / Checkout UI.
USE CASE 3

"Multiple-fulfillment visibility" in customer account / order-display apps

Problem
Order details and account pages show shipping status on the assumption of "one per order," so when shipped and pickup items are mixed, progress isn't displayed correctly.
Solution
For each fulfillment order, read its delivery_method and its progress, then rework the display to show "Shipping: tracking number" and "In-store pickup: pickup readiness" separately.
Impact
Customers can accurately understand how each item in a single order will arrive, which reduces inquiries and improves the experience.
Technical notes
Expand the Customer Accounts / Storefront GraphQL API queries to the fulfillment order level, and render different UI parts for shipping vs. pickup.

9A one-line summary you can use in a proposal

"For Plus / Enterprise, mixing shipping and in-store pickup in one order, one payment—a new checkout that makes it possible.
There's no API schema change, buton the same order, SHIPPING and PICK_UP will now be mixed —a new combination is coming.
Right now, in the feature preview, delivery_method finish the changes this requires, and stamp out checkout errors and mis-deliveries before rollout."