The app bill is easy to find. The harder costs are scattered around the business: a product page that takes longer to respond, two tools that both edit the same field, or a staff member checking an integration each morning.
None of that means apps are bad. A subscription tool or reviews platform can save you a great deal of work. But an app installed for one campaign can stay in the store long after anyone remembers why it is there.
An audit helps you separate those cases.
Start with the job each app does
Make a list of installed apps, their monthly or annual cost, and the person responsible for each one. Add a sentence describing the job it does.
“Collects and displays verified reviews” is useful. “Marketing” is too broad. Ask what would stop working if you removed it, who uses it and when they last used it.
Also record where its data lives. Before cancelling a reviews, loyalty or subscription service, understand the export options and what happens to existing customers. Removing something safely can take more work than installing it did.
Find out what reaches the storefront
Apps work in different ways. Some operate in the admin or backend without adding customer-facing scripts. Others add widgets, theme blocks, tracking requests or code that runs in the browser.
That difference matters more than the app count alone.
Check a representative product page, collection, cart and content page. Use the browser’s Network and Performance panels to see what loads and what runs. A request in the list is not proof that it blocks rendering; investigate its timing and work before blaming it.
Look for code loading where it has no job to do. A bundle selector may belong on a few product templates. It probably doesn’t need to run on every article.
The storefront performance guide explains how to combine those checks with real-user measurements.
Check what old installations left behind
Some older integrations modified theme files directly. Uninstalling the app may not remove every snippet, asset or reference it added.
Have a developer compare the theme with the app’s uninstall guidance. Work on a theme copy, remove confirmed leftovers and test the pages that used them. Don’t delete a script simply because its filename looks unfamiliar.
Theme app extensions can behave differently from older manual integrations, so avoid treating every app as the same cleanup job.
Compare three kinds of cost
Subscription and usage fees. Include annual plans, usage tiers and separate charges for features the team relies on.
Customer experience. Measure any effect on loading, interaction or layout. A useful feature may justify some weight; an unused widget probably won’t.
Ownership. Count setup, support, staff time, integration failures and future development. A custom replacement has these costs too.
You don’t need perfect attribution to spot obvious waste. You do need more evidence before removing a feature that affects orders, subscriptions or customer accounts.
Choose an outcome for each app
Keep it when the job matters and the app does it well. Review its configuration and load it only where appropriate.
Reconfigure it when the problem is duplicated features, overly broad loading or settings nobody has revisited.
Replace it with a theme feature when the need is straightforward content or presentation that your theme can maintain cleanly.
Build a custom integration when a specific operational workflow justifies the development and ongoing support. Our custom Shopify app work often starts with that comparison.
Remove it when its job has ended, after checking data, dependencies and rollback options.
Shopify Functions may help with certain backend rules, but they are distributed through apps. They don’t make app ownership disappear. Availability also depends on the function and distribution method; custom apps containing Functions require Plus.
Make one change you can evaluate
Save your current configuration and measurements. Disable or remove one non-critical integration, check the affected journeys, then compare performance and business results over a useful period.
Keep a short record of what changed and why. When someone proposes the next app, you’ll have something better than “we tried a cleanup once” to guide the decision.