Assigned fulfillment orders & different sales channels

Topic summary

A custom/private fulfillment app that fetches “assigned fulfillment orders” via the Shopify Admin REST API can retrieve orders across different sales channels, provided those channels use the same fulfillment service for the variants they sell.

Key point: Required API scopes (permissions) to read assigned fulfillment orders do not change just because orders originate from different channels, as long as the channel routes fulfillment to your service.

Possible additional scopes (depending on how the merchant/channel fulfills orders and what the app does):

  • write_third_party_fulfillment_orders
  • write_merchant_managed_fulfillment_orders

Notes:

  • “Scopes” are API access permissions that control what the app can read/write.
  • Whether extra scopes are needed depends on the merchant’s fulfillment model and the channel configuration.

Status: Question answered with guidance. Next step is to verify the channel’s fulfillment setup and ensure the app has the appropriate scopes.

Summarized with AI on January 26. AI used: gpt-5.

We have an existing custom/private fulfillment app that uses the Shopify Admin REST API to fetch orders which have been assigned to our fulfillment service. We now need to use this same app for a new customer who uses different sales channels. Will fetching ‘assigned fulfillment orders’ via the relevant endpoint return orders from all sales channels?

The scopes that you need to fetch orders that are assigned to your service won’t change, as long as the sales channel that you’re talking about is still using your fulfillment service to fulfill variants that are stocked on their channels.

There are two other scopes that are available for fulfillment apps, write_third_party_fulfillment_orders and write_merchant_managed_fulfillment_orders. You may need one or both of these scopes in addition to the scope that you already have, depending on how the orders are currently fulfilled by the merchant and the channel (and what exactly your app does).

Thanks for the question, and happy building!