Custom Shopify App or Off-the-Shelf? How to Decide
Flow, Functions, a public app or a custom app: how to choose where new store logic should live, and the 2026 Shopify changes to check before you decide.
In this post
Most of a Shopify store runs well on Shopify itself and a handful of good apps. Then there is the one job that does not fit anything you can install, and the team works around it with a spreadsheet tab or a second app that half does the job.
Before building anything, ask a simpler question: where should this logic live? Shopify offers several answers, and custom work earns its place only when none of them fits.
Start with the apps you already have
A common thread on the Shopify Community describes the problem well: too many apps slow the store down, but removing one breaks a workflow. The replies point the same way: the biggest gains come from consolidating apps that overlap and from limiting what loads on every page, not just from cutting the number of apps.
Put every installed app in one of three piles:
- Core to the business. It drives revenue, saves real time or runs an essential operation. Keep it.
- Overlapping. Two apps do the same job, or one does a small part of what another already covers. Pick one.
- One small job, done awkwardly. You use a single feature, it fits your process badly, and nobody would miss the rest of the app.
The third pile is where custom work is worth a look. An uninstalled app can leave code in the theme, so test removals on a duplicated theme first.
The four places store logic can live
Shopify Flow
Shopify Flow is a free Shopify app on the Basic, Grow, Advanced and Plus plans. Its workflows are built from triggers, conditions and actions: “when an order is tagged, if the total is over a threshold, notify the team.” If your job reads as “when X happens, do Y” inside Shopify, start here.
Flow’s Send HTTP request action, on the Grow, Advanced and Plus plans, can also call an outside system. It waits up to 30 seconds for a response and can retry for up to 24 hours. Something on the other end still has to receive that request and do the work.
Shopify Functions
Shopify Functions customize Shopify’s backend logic: discounts, payment and delivery options, cart and checkout validation, bundles and fulfillment constraints. Functions are delivered inside an app, either one you install from the App Store or one built for you. One plan rule matters: only stores on Shopify Plus can use custom apps that contain Function APIs, while public apps with functions work on any plan.
A public app
If an app on the Shopify App Store already does the job, start there. Public apps serve many merchants and go through App Store review, as Shopify’s app distribution guide describes.
A custom app
A custom app is built for one merchant: a single store, or several stores in the same Plus organization. It skips App Store review, and it cannot charge through Shopify’s app billing. It fits when the job depends on your own data, your other systems or your own screens and approval steps.
A practical rule of thumb: start with Flow, reach for Functions when checkout logic has to change, and build a custom app when the workflow needs its own screens, data or connections.
A quick decision table
Match your job to the first row that fits.
| Your job looks like… | Start with | Example |
|---|---|---|
| “When X happens in Shopify, do Y in Shopify” | Shopify Flow | Tag high-value orders and notify the team |
| “When X happens, tell another system” | Flow with Send HTTP request, plus a small receiver | Send new wholesale orders to an ERP |
| “Change how checkout prices, ships or pays” | A public app with Functions, or a custom app with Functions on Plus | Tiered discounts, hiding a payment method |
| “A common job many stores have” | A public app | Reviews, subscriptions, standard reports |
| “Our own screens, data, rules or connections” | A custom app | An approval step before refunds, a warehouse file in your format |
Two jobs that look custom often are not. Order alerts to a chat tool can be a Flow workflow or a ready app; our guide to Shopify order alerts in Discord and Telegram shows the options. Bulk tagging and fulfilling orders is also built into the admin, as covered in bulk fulfill and tag Shopify orders.
Two 2026 changes to know first
Custom apps now come from the Dev Dashboard. According to Shopify’s help center, new custom apps are created and managed in the Dev Dashboard, while legacy custom apps made in the admin before January 1, 2026 keep working and are still managed from the Shopify admin. Shopify’s developer docs state that you can no longer create new admin-created custom apps; existing ones keep working. Do not delete a legacy app until its replacement runs, because you cannot recreate it the old way.
Shopify Scripts ended on June 30, 2026. Shopify’s migration guide says Scripts still published were deactivated and no longer work. Their logic moves to Shopify Functions. If your Plus store relied on Scripts for tiered discounts or hidden payment methods, list what each Script did, check whether a public app now covers it (Shopify’s migration docs map each Script type to a Function API), and build only the gap.
Doing the math
Another Community discussion suggests a useful comparison: what a set of small apps costs you over months and years, against an estimate for building the one feature you actually use. Add the cost of depending on a tool you do not control, then shortlist only the apps that could realistically be replaced. Many stores end up with a balance: essential apps stay, a few simple features get built.
When you compare, count the whole life of the tool, not just the first version:
- Build. The first version, including testing on a development store.
- Hosting. Where the app runs, and who pays for it each month.
- Upkeep. Shopify releases a new API version every three months and supports each for at least 12 months, so someone has to check and update the app at least once a year.
- Changes. Your process will change. Each change to a custom app is new work; a public app might ship it for everyone.
- Your time. Hours spent on the workaround today, multiplied by the people who do it.
If the honest total still favours building, you have a good candidate. If not, a better-fitting public app is the cheaper answer.
When custom is the answer
Custom work makes sense when:
- the job is specific to how your team works, and every app forces a workaround;
- it depends on data or systems outside Shopify;
- you need your own approval steps before something changes;
- a Shopify change removed something you relied on.
Approval steps are a common reason. If your team needs a manager to sign off on refunds or bulk changes, read approval workflows for live store changes to see what the admin covers and where a custom step fits. Connections to other systems are the other common reason; our checklist for integrations that don’t break shows what a reliable one needs. Internal screens for your team are covered in back-office tools for Shopify teams.
Signs you should not build yet
- You cannot describe what “done” looks like in two sentences.
- The process changes every month and nobody owns it.
- A public app does 90% of it and the missing 10% is a preference, not a need.
- Nobody on your side will be around to answer questions or test.
Fix those first. A custom app built on a moving target becomes the next awkward tool on the list.
FAQ
What is the difference between a custom app and a public app on Shopify?
A custom app is made for one merchant: a single store, or stores in the same Plus organization. It skips App Store review and cannot use Shopify’s app billing. A public app is for many merchants and goes through App Store review. The distribution method cannot be changed once chosen.
Can I still create a custom app in the Shopify admin?
No. New custom apps are created in the Dev Dashboard or with Shopify CLI. Apps created in the admin before January 1, 2026 keep working and are still managed from the Shopify admin as legacy custom apps.
Do I need Shopify Plus for a custom app?
Not for most custom apps. You need Plus if the custom app contains Shopify Function APIs, such as custom discount or payment logic. Public apps with functions work on any plan.
Is Shopify Flow enough instead of a custom app?
Often, yes. If the job is “when this happens in Shopify, do that in Shopify”, Flow is the first thing to try. It falls short when you need your own screens, data stored outside Shopify, or a connection that needs something on the other end to do the work.
What replaced Shopify Scripts?
Shopify Functions. Scripts were deactivated after June 30, 2026, and their logic moves to Functions delivered inside an app.
Talk it through
If a row on your list fits the custom column, our page on custom Shopify app development explains the kinds of work we take on, and how to brief a developer shows what a short brief should include.
Have a workflow no ready-made app fits? Talk to us and we will reply with how we would approach it.