API mutation to update deliveryMethod on a FulfillmentOrder

Please provide an API mutation to update the deliveryMethod of an existing FulfillmentOrder. This is needed for ERP order synchronization.

Use Case

Occasionally a customer will request that their order by changed from shipping to pickup or vice-versa. This type of change is simple in the ERP but it is currently impossible to push that change to Shopify.

  1. The orderUpdate mutation does not have a way to change deliveryMethod
  2. There aren’t any fulfillmentOrder… mutations to change deliveryMethod
  3. None of the orderEdit… mutations can change deliveryMethod
  4. The orderCreate mutation does not allow for setting deliveryMethod
  5. The cartCreate mutation in the StoreFront API does allow for setting deliveryMethod but there is no way to programmatically turn the cart into a completed order.

A reasonable workaround would be to use a metafield on the FulfillmentOrder but that is not supported.

The only feasible workaround at this point seems to be an order-level metafield that maps the FulfillmentOrder ID to the ERP delivery method.

Hey @Mitchell_Claborn - thanks for the detailed write-up on this.

I did some digging here and from what I can tell, you’ve mapped it out accurately. The deliveryMethod on a FulfillmentOrder reflects what the buyer selected at checkout, and right now it’s read-only - there’s no mutation that flips an existing order between shipping and pickup. The orderEdit shipping line mutations only touch the shipping line itself (title and price), not the delivery method type, and FulfillmentOrder isn’t a metafield owner type, so that route is out too. Your order-level metafield mapping the FulfillmentOrder ID to the ERP delivery method is the most workable stopgap until there’s native support.

I can see how adding this functionality would help, especially for the shipping-to-pickup swaps you’re describing. I’ll submit this as a feature request so the team has it on their radar.

Hope this helps!

@Mitchell_Claborn just a quick follow-up to share that our team has recognized this as a known product gap, we’ve captured the request and and we’ll share more once the scope and rollout path are clearer :+1:

Thanks again for raising this!