I added read_marketplace_orders and read_marketplace_fulfillment_orders scope to shopify.app.toml file, and it’s failing to start dev preview:
Also, when I try to deploy new app version, it fails as well:
The issue still happens when there is either one of the scopes, not both. When both scopes are removed, it works fine.
I’m using API version 2026-01.
Hi @xhdtlsid2! Those scopes are causing the failure because read_marketplace_orders is a restricted scope that isn’t available to standard third-party apps. It’s reserved for approved marketplace channel apps and you won’t find it listed on the access scopes documentation.
read_marketplace_fulfillment_orders is documented as part of the fulfillment order scope family, but it also has a very specific purpose tied to marketplace channel contexts.
For most order and fulfillment use cases, the standard scopes are what you want. read_orders and write_orders for order access, and then read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, or read_third_party_fulfillment_orders depending on your fulfillment workflow. Those are all covered in the fulfillment order migration guide.
Can you share a bit more about what you’re building? Knowing your use case will help me point you to the right scopes.
Hi @Donal-Shopify, thanks for the reply.
I’m building an app, and here is what I’m trying to do:
When an order is created and it contains a specific product, I need to edit the order to replace it with certain associated products.
However, if the order is created from an external sales channel, such as Facebook, it cannot be edited. In that case, I am trying to create a new order that includes those certain products, and assign the same location.
Would it be possible to implement this without the two scopes?
Thanks,
Yes, you should be able to do all of this without those marketplace scopes.
For the editing side, the scope you need is write_order_edits. One thing to be aware of is that the order editing API supports orders created by Shopify channels (Online Store, POS, draft orders) and orders your own app created, but external channel orders like Facebook may not be editable. You can check this per-order by querying merchantEditable on the Order object. If it returns false, merchantEditableErrors will tell you why.
For the fallback where an order can’t be edited, orderCreate is probably your best option since it accepts a fulfillment input with a locationId field, so you can assign the same location as the original order directly at creation time. That requires write_orders scope.
To decide which path to take for a given order, you can either use merchantEditable as the branch condition, or check the channelInformation field on the order to identify the originating sales channel.
So in terms of scopes, you’d need read_orders, write_order_edits, and write_orders. Hope this helps!
Just to make sure I’m understanding it correctly:
- I can query external channel orders’
merchantEditable field, without read_marketplace_orders scope
- I can query fulfillment orders of an external channel order without
read_marketplace_fulfillment_orders scope
Sorry for making this thread long, thank you for looking into this.