Dedicated to the Hydrogen framework, headless commerce, and building custom storefronts using the Storefront API.
Recently we submitted our public app for review and it was rejected. Shopify said that we need to resubmit the app as a 'sales channel' app instead of as a 'public app'. However, before we started this process, we reached out to Shopify and explained the goal of the app and they suggested we move forward with creating a ‘public app’.
Our app is designed to allow Shopify merchants to upload their products for sale on our website, which is a peer to peer marketplace for outdoor gear, similar to etsy, reverb and eBay. Our app is very similar to these apps, which we have confirmed are all 'public apps':
In further communicating with Shopify we have not received a clear answer on what we need to fix and they said we may not need to resubmit as a 'sales channel' app.
We are using the Webhooks, Products, and Orders APIs. We are not using the Checkout API, so we thought that we would not need to create a Sales Channel app. We also confirmed that there isn't any data that we're accessing via the Orders API that we shouldn't be.
Are we able to move forward re-submitting this app as a ‘public app’ or do we need to resubmit as a ’sales channel app'?
We are doing our best to make sure we get this right, but would love some direction on how to proceed correctly.
Here is a summary of how we use the Shopify APIs:
Orders
Canceling an order from Geartrade cancels the corresponding Shopify order (POST /admin/api/2020-07/orders/{order_id}/cancel.json).
While canceling, if a note is specified, we use the order update API (PUT /admin/api/2020-07/orders/{order_id}.json).
Ordering through Geartrade uses the Orders API to create an order in Shopify (POST /admin/api/2020-07/orders.json).
Product:
Product GET is used for single products, triggered in response to the products/create, products/delete, and products/update webhooks. (GET /admin/api/2020-07/products/{product_id}.json)
Product list API is used when a store is first installed or when their config is updated in order to retrieve all of their products (GET /admin/api/2020-07/products.json).
Webhook:
We use the webook create endpoint in order to automatically set up webhooks when a store is installed (POST /admin/api/2020-07/webhooks.json)
Here are the webhooks we install:
products/create
products/delete
products/update
orders/fulfilled
orders/cancelled
app/uninstalled
Here are the access scopes we request:
write_products
read_products
read_orders
write_orders
read_inventory
write_inventory
read_shipping
write_shipping
The default read_orders and write_orders scopes only grant access to the last 60 days of orders. In order to access all orders, we would need to add the read_all_orders scope, which we aren't doing.
Is there anything we should be doing differently to get this approved through the public app channel?
Thanks so much for your help!!!!
Hey @rreinfurt,
Just to clarify, public apps can also be sales channels, they're not mutually exclusive. We define sales channels as
Your sales channel might be a mobile app, a website, or an online marketplace.
So it definitely sounds like your app fits the description. I have a doc link here that explains how to convert your app into a sales channel.
JB | Solutions Engineer @ Shopify
- Was your question answered? Mark it as an Accepted Solution
- To learn more visit Shopify.dev or the Shopify Web Design and Development Blog