Shopify Custom App vs Public App: Which Distribution Fits
Custom, unlisted or public: what each Shopify app distribution allows, from Plus organizations and App Store review to billing and Functions on non-Plus plans.
In this guide
When a Shopify app is created, someone picks how it will be distributed: as a custom app or as a public app. It sounds like a technical setting. It is actually a business decision, because it decides which stores can install the app, whether Shopify reviews it, how you can charge for it, and which Shopify features it can use on which plans.
It is also a decision you cannot undo. Shopify’s app distribution guide states it plainly: you can’t change the distribution method after you select it.
This guide explains the options and helps you decide whether a tool built for your store should stay custom or become an app for many stores.
The two distribution methods
Shopify’s distribution guide describes two current methods.
Custom distribution. The app is installed on a single store, on several stores in the same Plus organization, or on development stores. It does not need Shopify’s approval, and it cannot charge merchants through Shopify’s app billing.
Public distribution. The app can be installed on many Shopify stores. It needs Shopify’s approval, has a listing on the Shopify App Store, and must meet the App Store requirements.
A third type, apps created in the Shopify admin, is deprecated. Shopify’s custom apps page explains that new custom apps are created in the Dev Dashboard, and that apps created before January 1, 2026 are legacy apps. Existing ones keep working, but you cannot create new ones that way.
What about “unlisted” apps?
People often say “unlisted app” to mean a public app that does not show up in App Store search. In Shopify’s docs this is a visibility setting on a public app, not a separate distribution method. Shopify’s app listing visibility page explains:
- a fully visible app is indexed and appears in App Store category pages, App Store search and third-party search engines;
- an app with limited visibility does not appear in those places, but merchants can still install it from its App Store listing URL;
- you can change visibility at any time.
Because it is still a public app, a limited-visibility app is distributed through the App Store and follows the same App Store rules. It is not a way to skip review or Shopify’s billing.
Side by side
| Custom app | Public app (fully visible or limited) | |
|---|---|---|
| Who can install | One store, stores in one Plus organization, development stores | Any Shopify store |
| Shopify review | Not required | Required |
| App Store listing | No | Yes; visibility can be full or limited |
| Charging through Shopify | Not available | Required for all app charges |
| Apps with Shopify Functions | Usable only on Shopify Plus stores | Usable on any plan |
| Can switch method later | No | No |
Each row deserves a closer look.
Who can install it
A custom app is for one merchant. Shopify’s API terms say developers must not make custom applications available to or for use by more than one merchant, and that Shopify may treat a custom app that breaks this rule as a public app.
This matters most for agencies. A tool you build for one client cannot be installed for your next client as the same custom app. If you have several stores of your own, check whether they belong to the same Plus organization: if they do, one custom app can serve them all. If they do not, each needs its own setup.
Review
Custom apps skip Shopify’s review. You decide when they are ready.
Public apps go through review against the App Store requirements. These cover, among other things, authentication with session tokens for embedded apps, a consistent embedded experience, and since April 1, 2025, building new public apps exclusively with the GraphQL Admin API. Apps distributed through the App Store must also subscribe to the mandatory privacy compliance webhooks: customers/data_request, customers/redact and shop/redact.
Review adds time and work, but it also means many merchants can trust the app without vetting the developer one by one.
Billing
Custom apps cannot charge merchants through Shopify’s billing. Shopify’s billing docs say the Billing API cannot be used to charge merchants for custom apps. If you pay someone to build a custom app, you pay them directly, outside Shopify.
Public apps are the opposite. The App Store requirements say the app must use Shopify App Pricing or the Shopify Billing API for all app charges. Shopify App Pricing is the default for new public apps and handles plans, trials and upgrades; one-time charges need the Billing API.
Functions and the Plus rule
Shopify Functions customize backend logic such as discounts, payment and delivery options, cart and checkout validation, bundles and fulfillment constraints. Functions are always delivered inside an app, and the distribution method decides who can use them:
- only stores on Shopify Plus can use custom apps that contain Shopify Function APIs;
- stores on any plan can use public apps distributed through the App Store that contain functions.
Shopify also notes that some Functions capabilities are available only to Plus stores, whatever the app type.
So if you are on Basic, Grow or Advanced and need custom discount or checkout logic, a custom app with a Function is not an option. Look for a public app that covers it. Our guide to custom logic with Shopify Functions goes through the options.
Creating a custom app today
New custom apps are created in the Dev Dashboard or with Shopify CLI. Shopify’s custom apps page says store owners have access by default and staff can be given the permission to develop apps, but collaborator accounts cannot open the Dev Dashboard. Our walkthrough of creating a custom app in the Dev Dashboard covers the steps.
Decide early in whose account the app is created. It affects who holds the credentials and how easily you can change developers later. Our guide to hiring a Shopify app developer covers that in the contract.
When a tool should stay custom
Keep it custom when:
- It fits one business. It uses your data, your other systems, your own screens or your own approval steps, and other stores would not use it as is.
- Only your stores need it. One store, or stores in one Plus organization.
- You do not plan to charge others. It is a cost of running your business, not a product.
- You want to move fast. No review, and changes ship when you are ready.
- It connects to private systems. Your ERP, your warehouse, your internal reports.
Most merchant tools are like this. Our guides to back-office tools for teams and integrations that don’t break cover typical examples.
When it should become a public app
Consider building a public app when:
- Many stores have the same problem, not just yours, and the tool would work for them with settings rather than custom code.
- You want to charge for it, which must go through Shopify’s billing.
- You need Functions on stores that are not on Plus.
- You run stores in different organizations, or you are an agency serving several clients with the same tool.
- You are ready to run it as a product: support, documentation, review, privacy webhooks, and updates for every merchant.
The last point is the one most people underestimate. A public app is a product with customers, not a tool with users. If you do not want that job, keep the tool custom, or look for an existing public app that does the job.
Changing your mind later
Since the distribution method cannot be changed, moving from custom to public means creating a new app with public distribution. The code can often be reused, but the new app must meet the App Store requirements, pass review, and be installed again on each store. Data stored by the old app may need to be moved.
That is not a reason to start public “just in case”. Starting public for a tool only you use means meeting App Store requirements nobody needs. Build for the case you have, and keep the code clean enough to reuse if the other case arrives. Also budget for upkeep either way; our guide to maintaining a custom Shopify app explains what that involves, and what drives the cost of a custom app shows how to plan for it.
FAQ
Can I change a custom app to a public app?
No. Shopify does not let you change the distribution method after you select it. To go public, you create a new app with public distribution, which must pass App Store review.
Can one custom app be installed on several stores?
Only if the stores belong to the same Plus organization, or they are development stores. Otherwise a custom app is for a single store, and Shopify’s API terms do not allow a custom app to be made available to more than one merchant.
Does an unlisted app skip Shopify’s review?
No. “Unlisted” usually means a public app with limited visibility. It is still distributed through the App Store, so App Store rules, including review and Shopify’s billing, apply. Limited visibility only keeps it out of search and category pages.
Can a custom app use Shopify Functions on a non-Plus store?
No. Only Shopify Plus stores can use custom apps that contain Function APIs. Public apps with functions work on any plan.
Can I charge for a custom app through Shopify?
No. Custom apps cannot charge merchants through Shopify’s billing. Payment for building a custom app is agreed directly between the merchant and the developer.
Not sure which one you need?
Our custom solutions page covers the Shopify work the team behind Storefleet Store Ops takes on, starting from what Shopify allows for your store. A short brief is enough to begin.