Guides
Practical, honestly-answered guides on running one Shopify app across many client stores: distribution options, custom vs public apps, and the January 2026 legacy custom-app deprecation.
Shopify Is Deprecating Legacy Custom Apps (Jan 2026): What Vendors Need to Do
Since Jan 1, 2026, new custom apps can't be created in the Shopify admin. What still works, what breaks for multi-store vendors, and the migration paths.
How to Install a Shopify App on Multiple Stores: The Real Options
You can't install one Shopify custom app across different merchants' stores. Here are the four real options — and when each one actually works.
Shopify Custom Apps Explained: Custom vs Custom-Distribution vs Public
The three kinds of Shopify apps — legacy custom, custom-distribution, and public — differ by who can install them, not what they can do. A plain-English guide.
Wire the DeploTeka fleet contract into any Shopify app (any stack, any version)
The DeploTeka fleet contract is two HTTP routes and a per-shop credential lookup — implementable in any language or framework, any version. The exact wire shapes plus working reference code.
Run one Express app as a fleet of dedicated Shopify apps (10–30 minutes)
A @shopify/shopify-app-express app binds one client_id at construction. The DeploTeka Express adapter dispatches every middleware to the requesting shop’s own dedicated app instead — one install, two edits, no rewrite.
Run one Laravel app as a fleet of dedicated Shopify apps (10–30 minutes)
kyon147/laravel-shopify already ships a per-shop credential hook: config_api_callback. The DeploTeka Laravel adapter implements it, adds the two fleet routes, and turns one deployment into a fleet of dedicated Shopify apps — no rewrite, no upgrade.
Run one Rails app as a fleet of dedicated Shopify apps
The shopify_app gem reads its credentials from ShopifyAPI::Context, a process-global singleton — so one Rails app can only speak for one Shopify app. Here is the per-shop credential recipe that changes that, the three places it has to be injected, and why the obvious around_action is not thread-safe.
Run one Python Shopify app as a fleet of dedicated apps (Flask or FastAPI)
shopify.Session.api_key and .secret are class attributes, so one Python process speaks for exactly one Shopify app. Two endpoints, one table and a per-shop lookup change that. Complete Flask and FastAPI implementations, with the byte-exactness details both frameworks get wrong by default.
The 40-line fleet capture: webhook-only Shopify apps
A Shopify app with no embedded UI has almost nothing to change to run as a fleet of dedicated apps: no OAuth to rewire, no App Bridge, no session tokens. Two endpoints, one table, and a per-shop secret in the HMAC check — with the exact code, and an honest list of when this is not enough.
Fleet contract for extension-only Shopify apps: the one-file shim
A theme app extension or web pixel app has no backend to change — which makes the fleet contract a hosting question, not an integration one. What the shim has to answer, what it must never become, and where to run it for nothing.