Ecom Store Pro

Shopify Store Code Audit: Before You Fix or Rebuild

Inherited a messy Shopify store? Audit the theme code, ghost code, ScriptTags and access yourself — then decide fix vs rebuild, and what an audit costs.

Listen to a short brief of this article
Hands-free while you multitask

The short version

You can run the core of a Shopify code audit yourself, for free, in about an hour: back up the theme, then work outward to leftover app code, your apps, access and the legacy checkout layer.

Patch a modern Online Store 2.0 or Horizon theme with shallow, documented edits, and rebuild when the theme is vintage or buried in undocumented code, knowing a rebuild keeps your products, orders and collections but not theme settings, custom code or app tweaks.

A paid audit runs roughly $500 to $20,000 depending on scope, but each of those figures is one vendor's own listed price, not a market benchmark.

If you find redirects, altered templates, or accounts and apps you never added, treat it as a compromise and contact Shopify Support before any code work.

What's New Since Publication: Updated since publication · 5 changes
  1. Shopify's admin opens the themes page from Online Store, without a Themes submenu
    Shopify's Help Center now says "From your Shopify admin, go to Online Store" to reach your themes; in August 2026 it said Online Store > Themes, and in our dev store on October 20, 2026, Online Store has no Themes item under it. We updated the admin path.
  2. Two audit price sources were rewritten
    ShopExperts rewrote its Shopify CRO cost and theme customization cost guides on October 19, 2026. It no longer prints a $500–$3,000 CRO audit range, a $500–$2,500 theme audit range, or a $75–$300 hourly rate. Our cost table now uses its package data instead: one-off CRO, UX and store audits have a median of $600, with the middle half at $325–$1,500, and theme-work hour packs work out at $30–$125 an hour. The theme audit row is gone, because the guide no longer prices one.
  3. October 1 passed: ScriptTag writes are closed
    Since October 1, 2026, the Admin API rejects new and updated ScriptTags. Existing storefront tags keep running until March 1, 2027, and the calls that list and delete them still work, so an audit can still find and clear yours. Shopify's non-Plus upgrade guide now describes August 26 as the deadline for non-Plus stores to upgrade, and its developer timeline says script tags stopped running on the Order status page that day, rather than describing an automatic upgrade. This page's timeline and wording now follow that, and two vendor hourly-rate links that had gone dead now point to a live ShopExperts rate.
  4. The non-Plus Thank-you deadline passed — that audit row became a finding
    August 26, 2026 has arrived. Per Shopify's upgrade guide, that was the deadline for non-Plus stores to upgrade their Thank-you and Order status pages, and script tags stopped running on the Order status page for non-Plus stores. For an audit this changes the verdict rather than the checklist: what used to be a dated liability to plan around is now something to look for in what already broke — tracking that stopped reporting, widgets that vanished from the Thank-you page.
  5. Shopify put an end date on the whole ScriptTags layer
    Two dates now bound this layer, and the second one ends it. Shopify has deprecated script tags: under that deprecation, starting October 1, 2026, the Admin API rejects new and updated ScriptTags — the write calls return an error on every API version — and the deprecation runs to March 1, 2027, when Shopify stops injecting script tags into storefronts, the last surface where they still ran. The layer this audit teaches you to hunt is therefore finite: existing tags keep firing until the 2027 date, the calls that list and delete them survive both, and the replacements Shopify names are an app embed block in a theme app extension or a web pixel for analytics-only scripts. The ScriptTags section and the dated timeline now carry both dates.

A popup you deleted months ago still flashes on mobile. A product page loads a review widget from an app you stopped paying for. Or you've just taken over a store — bought the business, or inherited it from an agency that's gone quiet — and you have no idea what's actually inside the theme. Nothing is on fire, but nothing feels safe to touch, either. That uncertainty is exactly what a Shopify store code audit resolves: it tells you what's in there before you decide to live with it, fix it, or start over.

Something's Off in a Store You Didn't Build

Key takeaway

The reassuring part is that finding out what's in there is completely safe. Reading your theme code, scanning your app list, and checking access in the admin changes nothing — the code editor only writes changes when you click Save, so you can look at everything without risk. A code audit is just a structured walk through each of those layers — theme code, leftover app residue, access, and the ageing checkout layers — to decide what to keep, fix, or rebuild.

One boundary worth setting up front: this is a code-and-health audit, not an SEO one. Duplicate URLs, canonicals, and crawl issues are a separate job — our guide to a Shopify technical SEO audit covers that side. And if you're buying a store rather than building one, treat the code as part of due diligence: acquisition guides stress confirming the source code is clean and transferable before you pay.

When You Actually Need One

Key takeaway

You don't audit a store for fun — you do it when one of these is true. See which of the six situations below matches yours; most readers land on at least two.

You inherited or bought the store
You took over a working store and can't see what previous owners or their agencies built into the theme.
Your developer disappeared
The freelancer or agency who built it went quiet, and nobody documented what they changed.
You're doing acquisition due diligence
Before buying a store, you need to confirm the code is clean and transferable — not a liability you inherit.
Apps left a mess behind
You removed apps and now see leftover popups, broken sections, or a store that simply feels slower.
You suspect a compromise
You see redirects, content, or admin users you never set up. If that's you, jump to the hacked-store triage now.
You're planning a redesign
Before a re-theme or migration, you want to know what's worth carrying over and what to leave behind.

What's Hiding Inside the Theme

Key takeaway

An audit works in layers, from the code inside your theme outward to the apps and accounts around it. Start inside the theme, where three things tend to hide: an ageing architecture, leftover app code, and invisible scripts.

Which Theme Generation Are You On?

Key takeaway

Every Shopify theme belongs to one of three generations, and which one you're on shapes the whole fix-versus-rebuild decision. Vintage themes use the original, pre–Online Store 2.0 architecture, aren't sold in the Theme Store anymore, and — for Shopify's free vintage themes — don't receive updates beyond security fixes. Online Store 2.0 themes brought sections on every page and dynamic sources; the latest generation adds theme blocks, including the Horizon family. If you're unsure how to tell them apart or whether to upgrade, our guide to Shopify Online Store 2.0 breaks the architectures down.

Theme Generation → Audit Implication
GenerationHow to tellWhat it means for your audit
Vintage (pre–OS 2.0)Built on the original theme architecture, from before the mid-2021 Online Store 2.0 shift; no sections on most pages; free vintage themes only get security fixesA rebuild is usually the honest call — vintage themes aren't sold in the Theme Store and won't gain modern features
Online Store 2.0 (Dawn era)Sections on every page, dynamic sources, metafieldsUsually fixable — patch the theme and migrate app code to app blocks where possible
Theme blocks (Horizon family)Theme blocks; Horizon or another recent themeModern base — point the audit at ghost code and app bloat, not the architecture

Ghost Code: The Residue Apps Leave Behind

Key takeaway

Here is the trap that catches most inherited stores. When you uninstall an app, does it clean up after itself? Often, no — and Shopify says so plainly.

Uninstalling apps often leaves the code edits, or ghost code, behind in the theme, which can cause quality and performance issues and takes merchants off their theme upgrade paths.
Shopify — Migrate app integrations to theme app extensions — Shopify.dev ·

Shopify draws a sharp line between modern and legacy integrations. Apps built as theme app extensions add app blocks that are removed automatically and entirely when you uninstall them. Older apps worked differently — they added snippets to the theme and injected JavaScript into your layout, and some apps add code to your theme that isn't automatically removed when you uninstall the app. That leftover is what practitioners call ghost code.

Even an app built this way can leave one switch behind. When we tested a bundles app on a development store in September 2026, its app embed stayed switched on in both themes after the final uninstall. The widget had already gone from the storefront, so the embed was empty, but it stayed on until we switched it off ourselves in the theme editor under App embeds. That was one app on one store, so treat it as a quick check, not a rule — the full uninstall log is in our Kaching Bundles test.

In practice it looks like orphaned snippet files with app-branded names — a leftover loox-reviews.liquid or privy-popup.liquid — and render tags that point at snippets which no longer exist. One agency names popup, email-capture, review, and chat apps as the usual culprits for leftover code. The damage is rarely one dramatic file; as one store audit put it, it's accumulation — layers of dead scripts from tools swapped out over the years.

Page builders are one case some vendors document themselves: PageFly and Replo each list theme files to delete by hand, and our landing page guide sets out what happens to your pages and theme when you remove a page builder.

ScriptTags and Injected Trackers: The Invisible Layer

Key takeaway

Here is the practical version. If a tracker still fires after you've removed the app, it's almost always theme-injected code you can find by searching the theme (step 3 of the checklist below) — when an app is uninstalled from a shop, all of the script tags that it created are automatically removed along with it, so a live ScriptTag rarely lingers.

The complication is that a ScriptTag — remote JavaScript an app loads into your storefront — has no built-in admin screen that lists it (the Customer events page only shows Web Pixels API apps), so for anything still hidden after your own search, a developer queries the Admin API.

There is now an end date on this whole layer, and it changes what “fix it” means. Shopify has deprecated the mechanism, and on March 1, 2027 it will stop injecting script tags into storefronts. That is the last surface where they still ran, which Shopify says outright: storefronts are the last place script tags still run, since they already stopped working on the Order status page. The same deprecation closed the write side earlier: starting October 1, 2026, the Admin API rejects new and updated ScriptTags, on every API version, so pinning an old one buys nothing.

The read and delete calls survive both dates, which is the part that matters for an audit: a developer can still list what you have and remove it. What you should not accept after this is a developer proposing to “just add a script tag” for new tracking — the replacements Shopify names are an app embed block in a theme app extension, or a web pixel if the script only collects analytics or conversion data. An admin-created custom app can't use either, so Shopify's guidance there is to move the script into the theme, in a custom Liquid block where possible. Both dates are in the timeline below.

Beyond the Theme: Apps, Access, and Legacy Layers

Key takeaway

Your App and Access Inventory

Key takeaway

Move outward from the code to what surrounds it. This is the fastest part of the audit to do yourself, and often the quickest money saved.

Duplicate apps
Two apps doing the same job — two review tools, two email apps — means you're paying twice for one outcome.
Unused apps
Apps you stopped using may still load scripts on every page for a feature nobody touches anymore.
Staff accounts
Every staff login is a door. Remove people who've left and right-size the rest of the permissions.
Collaborator accounts
Partners you granted access — easy to forget, because they don't count toward your user limit.
Custom apps & API scopes
Admin-created custom apps, and the store data their access tokens are allowed to reach.

Collaborator accounts are the classic blind spot: they're Shopify Partners you allowed in, and collaborator accounts don't count toward your store's user limit, so they don't show up where you'd expect to count heads. Review them, and remove anyone whose work is long finished. Deciding what the ones you keep should still be able to see is a separate call — our guide to who gets into your Shopify admin works through it by permission category.

App bloat is the other quiet drain. One audit specialist who reviewed 100 stores put the median app spend at $580 a month, with the top quarter over $1,200 — one person's sample, not a market benchmark, but a useful gut check. Unused apps also cost speed: one audit describes a retired size-guide app that still fired on every product page for a feature no one used.

To measure that on your own storefront, Shopify's built-in Web Performance report charts your Core Web Vitals against every app install and theme change. For the structural speed patterns behind those numbers — and a store-wide pattern audit — see what the best Shopify stores do differently.

The Dated Liabilities: checkout.liquid and Shopify Scripts

Key takeaway

Some of what an audit finds isn't messy — it's expiring. Shopify has been retiring the old ways apps and themes hooked into checkout, and each has a date attached. If your inherited store leans on any of them, check the dates: most have already passed, and the last one is still ahead.

Apps can no longer create ScriptTags for the Order status page
From this date, apps can't create script tags whose display scope includes the Order status page.Source: Shopify.dev — Order status script tags
Plus checkout.liquid and Order status customizations sunset
On this date Shopify sunset checkout.liquid and additional scripts on the Thank-you and Order status pages, and script tags on those pages for Plus stores.Source: Shopify.dev — checkout.liquid
Shopify Scripts stopped executing
Any Scripts still published were deactivated and no longer run. If an inherited store's discount, shipping, or payment rules quietly changed, this is often why.Source: Shopify Help Center — Transitioning from Shopify Scripts to Shopify Functions
Non-Plus Thank-you / Order status upgrade deadline
August 26, 2026 was the deadline for non-Plus stores to upgrade their Thank-you and Order status pages, and Shopify's timeline sets it as the date script tags stop running on the Order status page for every store not on Plus.Source: Shopify Help Center — Upgrade guide
The Admin API rejects new and updated ScriptTags
The deprecation reached the write calls first: since this date scriptTagCreate and scriptTagUpdate return an error, and the REST ScriptTag resource rejects POST and PUT — on every API version, so an app pinned to an older one gets no reprieve. Existing ScriptTags keep running, and the calls that list and delete them still work, so an audit can still find and clear yours.Source: Shopify.dev changelog — Script tags are deprecated
Shopify stops injecting script tags into storefronts
The end of the deprecation, and of the mechanism itself: the storefront was the last place script tags still ran. Any app still loading JavaScript this way goes dark that day. Shopify names two replacements — an app embed block shipped in a theme app extension, or a web pixel where the script only collects analytics or conversion data.Source: Shopify.dev changelog — Script tags are deprecated

If your store customized the Thank-you or Order status pages, that's the highest-priority dated item. On a non-Plus plan that customization lived in additional scripts and script-tag apps — checkout.liquid was always a Plus-only file — and the new pages replace it: August 26, 2026 was the deadline for non-Plus stores to upgrade. What replaces it, and what a migration costs, is the whole subject of our guide to checkout extensibility.

Likewise, any discount, shipping, or payment logic that ran on Shopify Scripts already stopped on June 30, 2026 — silently. If an inherited store's rules quietly changed, that is often why; our guide to the Scripts-to-Functions migration maps each piece to its replacement.

Pulling the whole map together, here is what an audit typically surfaces — how serious each finding is, and whether it's a do-it-yourself fix or a job for a developer.

Red Flags at a Glance
What the audit findsSeverityWho fixes it
Render/include tags pointing at snippet files that no longer existBreaks pagesDIY after backup, or developer
Stray script tags hard-coded into theme.liquidSlows the storeDeveloper
Hard-coded prices or currency in the themeBreaks with Shopify MarketsDeveloper
Deprecated {% include %} tagsTech debtTheme Check finds them; developer replaces them
Unknown ScriptTags, redirects, or admin users you didn't add (triage this first)Possible compromiseSecure first, then Shopify Support
Two apps doing the same jobWasted spendDIY
A collaborator or staff account you don't recognizeAccess riskDIY — remove it
Thank-you/Order status customizations — additional scripts and script-tag apps on any plan, checkout.liquid on PlusExpired Aug 26, 2026 (non-Plus)Developer
Logic that depended on Shopify ScriptsAlready deadDeveloper or app
A vintage theme with heavy custom codeUpgrade blockerDeveloper (rebuild)

Severity and ownership are editorial guidance for a non-technical merchant, not a Shopify classification.

Fix or Rebuild? A Decision Framework

Key takeaway

With the map in hand, the big decision is a fork: patch the theme you have, or rebuild on a modern one. Neither is automatically right.

Lean toward a fix when your theme is a modern Online Store 2.0 or Horizon-generation theme, the customizations are shallow and documented, and the problems are isolated — a few ghost snippets, a duplicate app, one broken section. Lean toward a rebuild when the theme is vintage, the code is deep and undocumented, ghost code has accumulated for years, or you were planning a redesign anyway. Rebuilding on a current theme resets that debt to zero.

What a rebuild keeps — and what it doesn't

A rebuild sounds drastic, but it doesn't touch your catalog. Your products, collections, menus, pages, and blog posts aren't changed when you switch themes — they live in the admin, separate from the theme. What you rebuild is theme-specific: theme settings, section and block layout, text, code customizations (including app-added code), and templates. If a rebuild is your route, our Horizon theme guide covers migrating from Dawn to the current generation.

If the audit points to a rebuild rather than a patch, budget that separately. One agency lists a custom Shopify rebuild at $5,000–$20,000 and patching an existing theme at $2,000–$10,000+; another places a configured pre-built theme at $3,000–$5,000 and a fully custom build at $10,000–$20,000. Those are single vendors' figures.

For the full build-budget picture — parts, scenarios, and rates by region — see our guide to Shopify store development cost.

Not sure which fork is yours? Answer five quick questions about your theme, your code, and how you want to handle it — and get the route that fits, from a free DIY cleanup to a full rebuild.

Fix, Rebuild, or Clean Up: What's Your Route?5 questions → your cleanup route
Fix, Rebuild, or Clean Up: What's Your Route?5 questions → your cleanup route
Question 1 of 5
What brought you to this store?

The Free DIY Audit You Can Run Today

Key takeaway

Whatever route the quiz pointed you to, start here. Even if you'll hire a professional, these free checks tell you — and them — exactly what you're dealing with, and they cost nothing but an hour in your admin. Steps one through seven apply to every store; the last one — the legacy checkout and Scripts layer — matters most on an older store you inherited. Tick each off as you go; your progress saves on this device.

Your Free DIY Store Code AuditWork top to bottom. Back up first, then move from the theme code outward to apps, access, and the legacy checkout layer.

Your Free DIY Store Code Audit

Work top to bottom. Back up first, then move from the theme code outward to apps, access, and the legacy checkout layer.

0 of 8 done
  1. Duplicate your live theme so you have a frozen, restorable copy before you look at or change anything.

  2. Open Online Store, then Edit code, and scan layout/theme.liquid for stray script tags and hard-coded snippets.

  3. Search the theme for the names of apps you've already removed, across theme.liquid, snippets, sections, and custom JavaScript files.

  4. List every installed app, flag any that duplicate each other's job or that you no longer use, and note the monthly spend.

  5. Check both staff and collaborator accounts, remove anyone you don't recognize, and confirm two-step authentication is on.

  6. Review any legacy custom apps created in the admin — new ones can no longer be created there — and the store data their access tokens are allowed to reach.

  7. Read your Core Web Vitals and the change-impact chart to see how apps and theme edits have affected speed over time.

  8. Look for customizations on the Thank-you or Order status pages — additional scripts and script-tag apps on any plan, checkout.liquid only if you're on Plus — and any logic that depended on Shopify Scripts.

How far to clean up yourself

After you've duplicated the theme, it's safe to remove the obvious dead ends yourself — for example, a render or include tag that points at a snippet file which no longer exists throws a guaranteed error, so deleting that one reference only fixes things. Stop, though, at any live Liquid you don't fully understand, or CSS and JavaScript you can't trace to a source. That is where a wrong deletion breaks a working page — hand it to a developer instead.

How to Run Shopify Theme Check on Your Theme

Key takeaway

The DIY checklist reads the theme screen by screen; Theme Check reads it line by line. It is Shopify's free linter for the Liquid and JSON inside a theme. It detects errors and enforces Liquid best practices, and Shopify gives examples of what it catches: syntax errors, missing templates, unused variables and snippets, unknown and deprecated tags, and performance issues.

It runs through the Shopify CLI, which also builds and runs themes locally, so the work is getting the CLI and a local copy of your theme. If a terminal isn't your thing, use Download theme file in the theme's actions menu (Shopify emails you a .zip), unzip it, and open the folder in Visual Studio Code with the Shopify Liquid extension, which includes Theme Check and underlines problems in the editor.

1
Install Shopify CLI
Install it with npm (npm install -g @shopify/cli@latest) or, on macOS, with Homebrew. It needs Node.js and Git on your machine — Shopify lists the minimum versions on its Shopify CLI reference.
2
Pull a copy of the theme
In a new, empty folder, run shopify theme pull, which retrieves the theme files from Shopify. Add --store with your store URL, then --live for the published theme or --theme with a theme ID or name. An empty folder matters: by default, pull can delete local files that don't exist in the remote theme. The first run prompts you to log in with the store owner account or a staff or collaborator account that has theme permissions.
3
Run Theme Check
From inside that folder, run shopify theme check, or point it at another folder with --path. Results print in the terminal, and each one links to the documentation of the check it failed.
4
Save the output with your audit notes
Keep the list next to your DIY checklist results. It is the brief you hand to whoever makes the fixes, so they start from findings instead of from a blank theme.

A few options on the theme check command are worth knowing before you run it:

  • --list shows which checks are enabled.
  • -C or --config swaps in a preset such as theme-check:recommended or theme-check:all, overriding any .theme-check.yml file in the theme.
  • --init generates a .theme-check.yml file, where a developer can enable, disable, or re-rate individual checks.
  • --fail-level sets the minimum severity that makes the command exit with an error code, which matters when Theme Check runs in CI rather than by hand.
  • -a or --auto-correct fixes offenses automatically, but only for the few checks that support it — more on that below.

Reading the Results and Handing Them Off

Key takeaway

Severity is Shopify's measure of "the relative importance of a check to the functionality and optimization of your theme," in three levels: error, warning, and info. The checks reference lists every check with its severity — ParserBlockingScript, for instance, is an error, while OrphanedSnippet, UnusedAssign, and RemoteAsset are warnings. Read the check's own page before ranking a finding: severity says how much the rule matters to Shopify, not what a given line costs your store.

Theme Check Findings → Audit Meaning
CheckWhat it flagsWhat it means for your audit
MissingTemplateA render, section, or include tag pointing at a file that doesn't existThe dead-reference red flag above — the one cleanup you can do yourself after a backup
DeprecatedTagThe old {% include %} tag; Shopify's example replaces it with renderTech debt, not an outage — a developer swaps it
OrphanedSnippetSnippets that exist but are never referenced in the themeCandidates for the ghost-code review — confirm the source before deleting
ParserBlockingScriptScript tags without defer or async, which block page rendering until the script loadsA speed finding — trace each script to its app or tracker first
RemoteAssetAssets hosted on third-party domainsCheck whether each domain belongs to an app you still use
LiquidHTMLSyntaxErrorLiquid and HTML syntax errorsA developer fix — the template itself is malformed
UnusedAssignVariables that are defined but never usedLow-priority cleanup for whoever next edits the file

Auto-correct is not a shortcut to a clean theme. The checks reference marks only a few checks as auto-correctable, and the flag changes the files in the folder you ran it on — for a missing template it creates an empty file rather than removing the dead tag. Treat it as a developer's tool, not a cleanup button.

The report is a brief, not your to-do list. The one class you can act on yourself is the dead reference covered in the callout above; anything that touches live Liquid, scripts, or app code goes to a developer, along with the saved output. If you'd rather understand the code than lint it, our explainer on Shopify Liquid covers the language itself.

If You Suspect the Store Was Hacked, Secure It First

Key takeaway

Sometimes an audit turns up something worse than mess. Unknown redirects, template changes you didn't make, admin users or apps you never added — these aren't cleanup items, they are signs the store may be compromised. If that is what you are seeing, stop the audit and switch to securing the store. Two-step authentication is among the steps below, and if you are wondering whether you were ever obliged to have it on, our FAQ on whether Shopify requires two-step authentication separates the cases where the platform forces it from the ones where it is left to you.

If you think your account has been hacked or compromised, then contact Shopify Support immediately.
Shopify Help Center — Account security best practices ·

Then, if you can, change your login email password and your Shopify password, fix two-step authentication, and review finances, staff, apps and orders — the order and the details are in our FAQ on what to do if your Shopify account is hacked.

Once you're back in control, restore the theme from a known-clean backup rather than trying to clean the live one by hand. If you can't tell what was changed, that's the point to bring in both Shopify Support and a developer.

This is triage, not forensics

The steps above lock the store back down; they are not a malware investigation. For a confirmed breach — especially one involving customer data — involve Shopify Support and a developer experienced in incident response, and don't rely on a checklist alone.

What to Demand From an Auditor

Key takeaway

If the audit is beyond what you want to do yourself, the quality of what you hire is decided by what you demand up front. Across agencies that publish their audit format, the good ones are consistent: one documents each finding with a recommended fix, an effort estimate, and an impact projection; another prioritizes critical issues first. The output should be a fix list ranked by impact, not a page of generic advice.

A written report
Every finding documented, not a verbal summary you can't act on a week later.
Priority ranking
Issues ranked by impact and effort, so you fix what matters first, not what's easiest.
A fix estimate
Rough cost or hours per fix, so you can decide what to do in-house versus hire out.
A clear scope and timeline
Whether implementation is included or quoted separately, and when you'll get the report.

Give the auditor access scoped to what the review needs, and revoke it once the report lands — the same hygiene you'd apply to any outside contractor. For the full process of finding, vetting, and briefing someone, see our guide to hiring a Shopify developer.

And if you're not sure whether you need a quick cleanup, a fix, or a full rebuild in the first place, our Shopify development guide routes you to the right specialist in about a minute.

How Much Does a Shopify Store Code Audit Cost?

Key takeaway

There is no official price list for a code audit, and the honest answer is that it depends on scope and on who you ask. The ranges below come from individual vendors' own pages — useful for orientation, not a market rate.

Audit Price Ranges by Type
Audit typeListed price (one source)Source
Independent technical audit$500–$5,000kaspianfuad
Full-store, multi-layer audit$2,000–$5,000kaspianfuad
Agency audit (including Plus)$5,000–$20,000kaspianfuad
One-time CRO, UX or store audit (43 marketplace packages)$325–$1,500 for the middle half; median $600ShopExperts
Productized audit (audit-only, 7–9 business days)$699 sale / $799 listNinjaNutz

Each figure is one vendor's own listed price, or for ShopExperts the spread of packages listed on its marketplace in October 2026, not a market benchmark or official Shopify data. The same marketplace, ShopExperts, says the 17 theme-work hour packs its experts list come to $30 to $125 an hour, with a median of $60. Verify current pricing on each vendor's page.

After the Audit: Keep the Store Auditable

Key takeaway

The point of an audit is to never need a bad one again. A little discipline keeps your store legible, so the next review takes an hour, not a week.

One change, one backup
Duplicate the theme before every edit, so you can discard a change and start again if it breaks something.
Use GitHub version control
Shopify's GitHub integration syncs theme code both ways, so every change is tracked and reversible.
Keep a change log
A short note of what you edited and when turns the next audit into a quick review, not a dig.
Prune old themes
Keep backups, but stay under your plan's theme limit and delete copies you no longer need.

The single highest-leverage habit is version control. Shopify's official GitHub integration syncs your theme code to and from a repository, so every change is tracked and reversible — even if you never write code yourself, it gives you a history of who changed what. This walkthrough shows how to set it up without being a developer:

Find Every Code Change You've Made to Your Shopify ThemeA non-developer walkthrough of connecting GitHub to a Shopify theme so every code change is tracked and reversible.

Backups matter too: duplicate the theme before every edit, and prune old copies so you stay under your plan's theme limit — 20 themes on Basic, Grow, and Advanced, and up to 100 on Shopify Plus. A duplicated theme is not a store backup, though: what Shopify restores for you and what it never will is a separate question, and we work through it in backing up a Shopify store.

The Bottom Line

Key takeaway

There is no single “store code audit” that fits everyone. What is fixed is the order of operations: look before you touch, know which generation your theme is, and separate a messy store from a compromised one. Get those right and the path is obvious — miss them and you either overspend on a rebuild you didn't need or keep living with problems you can't see.

Do the free pass first. Most of what you're worried about — ghost code, duplicate apps, forgotten access — you can see yourself, for free, in an afternoon. Spend money only where the audit shows a real fix or a rebuild is warranted, and treat any sign of tampering as a security issue before it's a code one.
Your Next Step by Stage
Just inherited itRun the free checks yourself, then see how well-built stores handle the same layers.See the store pattern audit
Found real problemsGet a scoped audit with a prioritized, effort-ranked fix list you can act on.Get a scoped audit
Time to rebuildRebuild on a modern, upgrade-safe theme with your catalog carried over — done for you.Plan a rebuild

Not Sure What You Inherited? Get It Audited.

Stop guessing what's buried in your theme. Get a developer to audit the code, ghost scripts, and access on the store you took over — including any ScriptTags, which stop running on March 1, 2027 — and a clear, prioritized plan for what to fix or rebuild.

Get a code audit

Frequently Asked Questions

A Shopify store code audit is a structured review of everything under your storefront's surface: the theme's Liquid code, leftover code from removed apps, injected ScriptTags, your app and access inventory, and the legacy checkout layers Shopify is retiring. The goal isn't to rewrite anything — it's to decide what's safe to keep, what to fix, and what to rebuild.
Yes. The core of an audit runs entirely from your Shopify admin at no cost — reviewing installed apps, staff and collaborator access, the theme code editor, and the built-in Web Performance report. Looking changes nothing; the code editor only saves when you click Save. You only need a developer for fixes you can't safely make yourself.
Install Shopify CLI, run shopify theme pull in an empty folder to retrieve a copy of your theme, then run shopify theme check inside that folder. Theme Check lints the theme's Liquid and JSON and rates each finding as an error, warning, or info, with a link to that check's documentation. Fixing what it flags is usually a developer's job.
Many apps add snippets and theme.liquid JavaScript that Shopify doesn't automatically strip out on uninstall. Theme app extensions remove their blocks cleanly, but older integrations leave 'ghost code' that keeps loading, slows the store, and can block theme upgrades. In our own test, a bundles app's empty app embed also stayed on after uninstall until we switched it off in the theme editor.
No built-in admin screen lists ScriptTags: Shopify's Customer events page shows only Web Pixels API apps, and the ScriptTag resource is API-only. You or a developer query the GraphQL Admin API, or ask the app's developer. Uninstalling an app removes its ScriptTags. The calls that list and delete them work past both deadlines; since October 1, 2026, the Admin API rejects new and updated ScriptTags.
No. Your products, collections, menus, pages, and blog posts live in the Shopify admin, separate from the theme, so switching to a new theme leaves them untouched. What doesn't carry over is theme-specific: your theme settings, section and block layout, text, code customizations (including app-added code), and available templates all have to be rebuilt.
It depends mostly on your theme's generation and how customized it is. A modern Online Store 2.0 or Horizon theme with shallow edits is usually worth patching. A vintage theme — the original architecture, from before mid-2021 — is usually cheaper to rebuild than to keep debugging, and so is any theme buried in undocumented custom code. Run the free audit first.
Costs vary by scope and vendor. Individual agencies list independent technical audits around $500–$5,000, full-store audits at $2,000–$5,000, and agency or Plus audits reaching $20,000; one productized audit lists at $799, discounted to $699; one marketplace's theme-work hour packs run $30–$125 an hour. These are single sources' listed prices, not a market benchmark, so get a scoped quote.
Watch for changes you never made: unknown ScriptTags or redirects, altered templates, staff or collaborator accounts you don't recognize, and apps you didn't install. Shopify's guidance is direct — if you think your account is compromised, contact Shopify Support immediately. Secure the store before touching any code: change your passwords, fix two-step authentication, and review and update staff and collaborator access.
Demand a written report, not a verbal 'looks fine.' A good one documents each finding with a recommended fix, an effort estimate, and an impact projection, and ranks issues by priority — critical problems first. It should state clearly whether implementation is included or quoted separately. The vendors we checked quote three to nine business days; one allows up to ten for large catalogs.
Not in the sense of losing them. Shopify's rule is that if you install apps for your theme and later change your published theme, you'll need to re-activate those apps in the new theme, because they won't be active by default. So app blocks and embeds have to be re-added and repositioned on each theme.
Not immediately — upgrading to Online Store 2.0 isn't mandatory, and a vintage theme can keep running if it meets your needs. But vintage themes aren't sold in the Theme Store, and Shopify's free vintage themes only receive security fixes, not new features. If yours blocks features you need or hides heavy custom code, a rebuild is the honest path.
Adopt one rule: one change, one backup. Duplicate the theme before every edit, and prune old copies (plans allow up to 20 themes, Plus up to 100). For real version history, connect Shopify's GitHub integration so every code change is tracked and reversible. Keep a short change log of what you edited and when, so the next audit is quick.
About This Article
Shopify Developer & Editorial Director
9+ years with Shopify since 2017

Front-end developer specializing in Shopify since 2017. Experienced in building custom Liquid themes, optimizing storefront performance, and integrating third-party apps. Directs the editorial process behind Ecom Store Pro: sets its topics and the rules every AI-written page must pass before publication.

This page was written by AI. Separate AI agents that did not write it check its figures and claims against official sources and test its links and interactive tools. A human editor sets the site's editorial direction, topics and rules and checks that pages are complete and display correctly, but does not check their facts or edit their text. Details may change — always confirm critical data at shopify.com.

Editorial Policy

Some links in this article are affiliate links. If you sign up for a Shopify store through these links, we may earn a commission at no extra cost to you. Read our full advertising policy.

Continue Learning

What to Read Next

Stay updated

Get notified about new articles

Subscribe to receive updates when we publish new Shopify guides and insights.