Shopify custom distribution: how it works, its limits, and when to use it
Short answer: custom distribution is the Shopify distribution method for an app you build in your own Shopify organization and hand out by install link. Shopify's distribution table describes it as "Installed on a single Shopify store, on multiple stores that belong to the same Plus organization, or on development stores" (About app distribution). It needs no app review, it has the same API surface as a public app, and the choice is permanent. Its hard boundary is the merchant: one custom app serves one merchant, and Shopify's API Terms make that a rule rather than a convention.
That last sentence is where most of the confusion in this topic lives, so the rest of this page assembles the constraints the docs state in four separate places.
What is custom distribution, exactly?
It is one of the two ways a Shopify app can reach a store. Shopify's distribution overview describes a custom-distribution app as "Installed on a single Shopify store, on multiple stores that belong to the same Plus organization, or on development stores." You build the app in the Dev Dashboard, choose the method on the app's Select distribution method screen, and Shopify generates an install link you send to the store owner.
What it is not is a lesser app. Custom-distribution apps use the same Admin API, the same webhooks, and the same extension surfaces as apps in the App Store. The differences are all about reach, review, and billing — see Shopify custom apps explained for the type-by-type comparison.
Who can install a custom-distribution app?
Exactly one merchant, on one store — or on several stores if, and only if, those stores sit inside a single Shopify Plus organization. The multi-store case is controlled by a toggle: Shopify's page says that "to limit your app to a single store, clear Allow multi-store installs for one Plus organization." The same page states the rule in one line: "A custom app can be installed on multiple stores when those stores belong to the same Plus organization."
Two quirks that bite people:
- Apps created before July 26, 2023 don't get the toggle by themselves. Shopify's own wording: "If you created your custom app before July 26, 2023, then contact Shopify Support to enable multi-store installs." That is a support ticket, not a settings change.
- "Organization" is not "my client list". The boundary is a Shopify organization, and Shopify enforces it at install time. Trying to install outside it produces an error rather than a warning — see the collaborator guide for what that looks like in practice.
Can one custom app serve several merchants?
No, and this is a terms question rather than a technical one. Shopify's API Terms define a Custom Application as one "made available to a single Merchant", and §2.3.20 requires that a developer "not make Custom Applications available to or for use by more than one Merchant. For the avoidance of doubt, this means that Custom Applications may not be installed by more than one Merchant. For clarity, a Merchant may have more than one Merchant Store."
The clause forbids making one custom application available to multiple merchants. A separate app identity per store meets the technical installation boundary, but that alone is not a compliance determination for a repeated multi-merchant product. The full API Terms and the product's distribution model still need review. DeploTeka is not endorsed by Shopify and does not promise approval of that model.
Is the distribution method reversible?
No. Shopify states it on two pages: "You can't change the method after you select it, so review the capabilities and requirements before continuing" (Select a distribution method), and "You can't change the distribution method after you select it. Compare the capabilities and requirements of each type before choosing" (About app distribution).
Practically: if there is a real chance this codebase becomes an App Store product, the migration is a new app plus a re-install on every store — plan for it before you click, not after.
Custom distribution versus public distribution: what do you trade?
| Custom distribution | Public distribution | |
|---|---|---|
| Who can install | One merchant (one store, or one Plus organization) | Any merchant |
| Shopify app review | Not required | Required, including for a listing kept at limited visibility |
| App Store listing | None | Required; visibility is a separate setting |
| Shopify Billing API | Not available | Available, and expected for paid services |
| Revenue share | None — you bill directly | Applies through Shopify billing |
| Extensions (theme, checkout, web pixel) | Supported | Supported |
| Release cadence | Yours | Yours after approval: a Shopify staff reply says deploying updates "does not trigger a new review", while App Store apps get "periodic re-reviews" (May 2025) |
| Serving many unrelated merchants | One app per merchant | One app for all |
Two rows deserve a note because they are routinely misread.
"Limited visibility" is not a review shortcut. A public app whose listing is hidden is still a public app. Shopify's visibility documentation states that "All apps distributed through the Shopify App Store must have an app listing page on the Shopify App Store", with visibility governing only whether it is indexed and surfaced in search and category pages. A Shopify staff reply on the developer forum in April 2026 put the same point directly: an app intended for multiple merchants "does need to have a Public distribution status in order to install it on multiple stores" and review "is required" even when the listing is hidden (thread). Whatever you have heard about this route, the review gate is still there. The same reply also warns in the other direction: you are "not able to workaround these limitations by creating a new Custom distribution app for each merchant, as long as the app is not unique and created per each merchants requirements", and creating a "duplicate of the same app to get around this limitation" would be against Shopify's Partner Program Agreement.
No Billing API is often the feature, not the limitation. Shopify's comparison table lists "Can't charge merchants through Shopify's app billing system" under custom distribution, and the Help Center says: "You can't use the Billing API to charge merchants for custom apps." If you already have a commercial relationship, an invoice, and a contract with the merchant, losing Shopify's billing rails also means losing Shopify's cut and keeping the payment relationship.
Does the January 2027 expiring-token requirement apply?
Not as of today. Public apps created on or after April 1, 2026 must use expiring offline tokens (changelog, March 20, 2026). For older public apps, Shopify's access tokens page states that "Public apps that still use non-expiring offline access tokens are delisted and blocked from new installs on January 1, 2027," and then that "This doesn't apply to custom apps or apps created by merchants."
We flag the "as of today" deliberately. This is a Shopify policy decision, not a law of physics, and it is the kind of exemption that can be narrowed in a changelog entry. If your architecture depends on a non-expiring offline token, put a calendar reminder on Shopify's changelog rather than on this sentence.
When should you choose custom distribution — and when shouldn't you?
Choose it when:
- The app serves one merchant you know, under an existing commercial relationship.
- You need to ship on your own schedule, without a review queue between you and a fix.
- You want per-merchant scopes, per-merchant credentials, and a blast radius of one store.
- Your merchants are not on Plus, so an organization-wide install was never available anyway.
Don't choose it when:
- You want any merchant to be able to find and install the app. That is public distribution; nothing about custom distribution scales to that, and attempting it is what §2.3.20 prohibits.
- You need Shopify-managed billing, trials, or App Store discovery.
- One merchant, one app is genuinely all you'll ever have and everything already sits inside one Plus organization — in which case the multi-store toggle is the whole answer and you need no further tooling at all.
The honest middle case is a vendor with many unrelated client stores. Custom distribution is the right method there, but it means N apps — N creations, N configurations, N scope sets, N credential sets, N deploys per release. Shopify staff prescribe exactly that pattern on their own forum and concede its ceiling in the same breath: one 2026 staff reply describes one app per client store with its own install link and adds "it's a bit more setup up front, but for a handful of stores it's manageable" (thread, April 2026). Below a handful, do it by hand — the step-by-step creation guide is the entire job.
Where DeploTeka fits (product note). DeploTeka is our own tool for the case above a handful, and this is the only place it appears in this guide. It creates a dedicated custom-distribution Shopify app per client store inside your own organization, seals the credentials and delivers them to your backend, and pauses with a named action when a step needs a person. It does not clone, build, or run your source on our servers, and the merchant still approves each install — Shopify requires that, and no tool removes it. deploteka.com
Sources: Shopify — About app distribution, Shopify — Select a distribution method, Shopify — App listing visibility, Shopify — Access tokens, Shopify changelog — expiring offline tokens for new public apps, Shopify API Terms, Shopify Help Center — making apps. Community threads are linked as evidence of what was said in them, not as statements of Shopify policy.