How Can I Share a Server-Only App Across Multiple Merchants Without the Shopify App Store?

Question: How Can I Share a Server-Only App Across Multiple Merchants Without the Shopify App Store?

Hi everyone,

I’m building a server-only app that doesn’t require a merchant-facing UI. The main goal is to provide shared backend functionality for merchants who install it, such as:

  • Accessing and syncing inventory, images, prices to my backend database
  • Setting up webhooks for events like product updates or inventory changes
  • Possibly offering other backend features (e.g., analytics, multi-merchant reporting)

I’ve read the Shopify docs Server-only apps section, which say:

“Apps that don’t provide a user interface for merchants can’t be distributed through the Shopify App Store.”

That raises some questions:


:red_question_mark: What I’m Trying to Understand

  1. How can I distribute this app to multiple merchants if I can’t use the App Store?
  • Do I need each merchant to create their own private/custom app and send me their Admin API token (which seems messy)?
  • Is OAuth with a public app the only scalable solution even for server-only apps?
  1. Is it acceptable to build a “public” app via the Partner Dashboard, use OAuth, and never show a frontend to the merchant?
  • Can I still get approved without a full UI, as long as the backend works and the app is installed via OAuth?
  1. Are there recommended patterns for apps that work like this?
  2. What are the best practices around storing and using access tokens in this kind of setup?
  • If I’m storing access tokens from multiple merchants on my server, is that fine as long as I follow Shopify’s app security guidelines?

My Use Case Summary

  • Central server app written in Node.js
  • I want all inventory data from multiple merchant stores synced into one system
  • No storefront rendering or embedded app UI

You could create custom apps from the Shopify CLI/ Partner Dashboard so you don’t need to handle any merchant API credentials. Merchants would install the app via a link that’s generated during the custom app creation process. This is how you can allow multiple merchants to install the same custom app.