Skip to main content
This image is a striking visual metaphor for technical debt, depicting a chaotic, over-engineered system where mismatched components are precariously held together by a mess of dependencies and leaking data.

Your store is still running apps you removed

A martech stack audit lists every piece of third-party code that still runs on your Shopify storefront and checkout, what each one sends, and who pays for it. You have a Frankenstack when that list is longer than your app list.

Eisha Faisal·January 7, 2026·Updated September 21, 2026·7 min read

Open Settings, then Apps and sales channels, on a Shopify store that has traded since 2022. Count the rows. Now open your theme code and search for the word pixel. On an older store the second number is often the larger one, because Shopify’s own help pages say some apps add theme code that uninstalling never removes.

That gap is the Frankenstack. A Frankenstack is a storefront carrying third-party code nobody chose, firing events nobody reads, into accounts nobody checks. It is an operations problem, not a branding one.

A martech stack audit is a written inventory of every piece of third-party code that runs on your storefront and checkout: what loads it, what event it sends, where that event lands, and who pays for it. You have a Frankenstack the moment that inventory runs longer than your installed app list.

This is for the operator who inherited the store, not the team that just launched

You run a Shopify or Shopify Plus store that has changed theme, agency or owner at least once. Somebody before you installed a heatmap tool, two review apps and a tag manager. You cannot say which of them still runs on a product page today.

This is not for a store launched in the last six months on one theme with five apps. Your inventory is short enough to read in an afternoon, and nothing has been abandoned yet. Come back after your first replatform.

Count what runs on the page, not what sits in your app list

Your app list is a billing record. It does not tell you what executes when a shopper loads a product page. Third-party code reaches a Shopify storefront by four routes, and only two of them are visible from the Apps screen.

An app embed block is code an app ships inside your theme, switched on and off in the theme editor. A script tag is a file an app asks Shopify to inject on every page. A custom pixel is tracking code pasted into Settings, Customer events. A theme snippet is code somebody pasted straight into a Liquid file by hand.

Four routes third-party code takes onto a Shopify page. Only the first two stop when the app goes.
RouteWhere you check itWhat happens when the app is uninstalled
App embed blockOnline Store, Themes, Customize, App embedsStops running with the app.
Script tag from an appNot listed in admin, read the page sourceStops with the app. Shopify stops injecting all script tags on 1 March 2027.
Custom pixelSettings, Customer eventsKeeps running until you delete it.
Theme snippet pasted by handOnline Store, Themes, Edit code, search for pixel and gtagKeeps running until you delete it.
Four routes third-party code takes onto a Shopify page. Only the first two stop when the app goes.

Work the routes in that order. Write one row per finding: the route, the vendor, the event it sends, and the person who asked for it. Rows with nobody in that last column are your first candidates to cut.

That inventory tells you what runs. It does not tell you whether the numbers coming out are right. Checking events against real orders is analytics and attribution work, which is the measurement side of what Autonomous Technologies builds for Shopify operators. It is a separate pass with a separate owner.

Shopify has already set the dates that force half of this cleanup

You do not have to win an argument about the oldest code on your store. Shopify has published the dates it stops working. Two of those dates have already passed. Additional Scripts was the box in checkout settings where stores pasted tracking code by hand. Shopify Plus is Shopify’s enterprise plan, and it hit the first deadline a year before everyone else.

Shopify's published sunset dates for legacy storefront and checkout code, read 21 September 2026.
What stops workingDateWho it applies to
checkout.liquid and Additional Scripts on the Thank you and Order status pages28 August 2025All stores.
Script tags on the Thank you and Order status pages28 August 2025Plus stores.
Script tags on the Thank you and Order status pages26 August 2026Non-Plus stores.
scriptTagCreate and scriptTagUpdate return a user error1 October 2026Every app.
Shopify stops injecting script tags into storefronts1 March 2027All stores.
Shopify's published sunset dates for legacy storefront and checkout code, read 21 September 2026.

Those rows come from Shopify’s own checkout.liquid documentation and from its script tag deprecation changelog, posted 24 August 2026. Both were read on 21 September 2026.

Code that only ever measured something is not worth migrating twice. Shopify’s guidance is plain. Replace a script tag with an app embed block. If the script only collects analytics or conversion data, use a web pixel instead. A web pixel is Shopify’s own sandboxed container for tracking code. Decide which of the two each leftover is before you move it. Delete the ones that were only reporting to a dashboard nobody opens.

Two tags reporting the same order is worse than one reporting nothing

A stack with no tracking gives you a blank. A stack with two tags on the same order gives you a number that is wrong and confident, and you will spend money against it.

Shopify names this risk directly in its pixel migration guide: a common issue when migrating is tracking the same event more than one time. It happens when old code stays in theme files or Additional Scripts after the new pixel goes live. Both fire. Both report.

The reverse defect is quieter and harder to catch. On a measurement rebuild for a US legal software team, the form-start event was firing on page load rather than on user action. Every visitor looked like a lead. The same property had no key events configured at all, so a live paid checkout was not represented as purchases anywhere in the reporting.

So your audit needs a second column after “does it fire”. It needs “does it fire when the thing actually happened”.

Buy something from your own store before you delete anything. Place one real order, then read every destination the stack reports it to: your Shopify reports, your ad accounts, your email tool, your analytics property. Write down which saw it once, which saw it twice, and which invented it. One test order will teach you more than the app list ever will.

Uninstalling an app does not delete its code, and does not always stop the bill

Shopify’s uninstall guidance is direct on both points. Some apps add code to your online store theme that is not automatically removed when you uninstall the app. Shopify tells you to check the app’s listing, or ask the developer, before you remove it.

On money, the same page says uninstalling a paid app cancels future recurring charges, but you might still be billed for the current billing cycle. Apps that charge outside Shopify keep charging until you cancel with the vendor yourself.

That makes the order of operations matter more than the decision to cut.

  1. Read the app’s uninstall notes before you touch anything.
  2. Duplicate your live theme and delete the leftover code in the copy.
  3. Test the copy: a product page, the cart, and one real order.
  4. Publish the copy, then uninstall the app.
  5. Cancel any subscription billed outside Shopify.
An app you uninstalled without reading its uninstall notes is not gone. It is unsupported, and it is still on the page.

Weigh every leftover against the 200 milliseconds a shopper can feel

Speed is where this stops being tidiness and starts being money. Interaction to Next Paint, or INP, measures how long your page takes to respond after a shopper taps or clicks. Google publishes the bands, so you do not have to invent a threshold.

Google's INP bands. Each one says something different about whether your app list has gone too far.
Interaction to Next PaintGoogle's verdictWhat it means for the cleanup
200 ms or lessGood responsivenessCut leftovers for cost and accuracy, not for speed.
Above 200 ms, up to 500 msNeeds improvementRemove leftovers first. Measure again before buying anything new.
Above 500 msPoor responsivenessTreat the stack as a revenue defect, not a chore.
Google's INP bands. Each one says something different about whether your app list has gone too far.

Those thresholds come from web.dev’s INP reference, last updated 2 September 2025. Measure on a phone, on a product page and on the cart, before and after each removal. That is how you learn which app was the cost rather than guessing.

What breaks during the cleanup, and who owns each piece

Nothing here is risk free. Every route you touch is feeding something, and the person who notices the break is rarely the person who made it.

Each route, the break it causes when handled badly, and the role that has to sign it off.
What you touchWhat breaks if you get it wrongWho owns it
Custom pixels in Settings, Customer eventsConversion reporting in your ad accounts goes quiet mid-campaign.Whoever runs paid media.
Theme snippets in Liquid filesA product page or the cart stops rendering.Your theme developer.
App embed blocksA visible feature disappears: reviews, badges, upsells.The merchandising owner.
Subscriptions billed outside ShopifyYou keep paying after the code is gone.Finance.
The inventory document itselfSix months on, nobody can say which tags are deliberate.The operations lead.
Each route, the break it causes when handled badly, and the role that has to sign it off.

Give the inventory a named owner and a review date. The rule that keeps a stack clean is not a tool. No new app goes on without a row in that document, naming what it sends and who reads it.

Martech stack audit questions Shopify operators ask

What is a Frankenstack, in one sentence?

A Frankenstack is a storefront running third-party code that accumulated one app at a time, where nobody can name what each piece sends or who reads it. The test is simple: list what actually runs on a product page, and compare it with your installed app list.

Will uninstalling an app remove its code from my theme?

Not always. Shopify’s own help pages state that some apps add code to your online store theme that is not automatically removed when you uninstall the app. App embed blocks and script tags stop with the app. Hand-pasted theme snippets and custom pixels do not.

How do I find tracking code that is not listed anywhere in the Shopify admin?

Open a product page in a browser, view the page source, and read the script sources. Then check Settings, Customer events for custom pixels, and search your theme code for pixel, gtag and connect. Script tags injected by apps only show up in the page source.

Which leftover should I remove first?

The one that reports the same order twice, because it is actively making your numbers wrong. After that, remove anything with no named owner. Leave anything touching cart or checkout until you have tested it on a duplicate theme.

Filed under

Client EducationData SilosIntegrationMarTech Audit

From the intelligence suite

Is your attribution stack lying to you?

AttributionCheck maps every gap in your data layer — free, in minutes. Find out which conversions you're missing.

Run a free check
Continue reading
An isometric digital illustration in shades of purple and teal showing a complex, cluttered machine, the "Frankenstack

Growth & Measurement

How to Spot Frankenstack in Under 10 Minutes

You don’t need a month-long audit to smell a disaster. Most broken tech stacks reveal themselves the second you ask a specific question and watch the client squirm. Stop guessing if a prospect is going to be a technical nightmare. On your next call, run this five-question diagnostic. Listen for the

Eisha FaisalJan 8, 2026
3 min read
An isometric, neon-styled digital illustration of a glowing central processor chip connected to various floating data dashboards representing analytics, security, and machine learning.

Growth & Measurement

The six signals to check on your store every month

A martech health check is a fixed monthly pass over the systems that move your orders and report your money. Six signals, a threshold for each, and a named owner for the fix. Four of the six thresholds are published by Shopify or Google, so you do not have to invent them.

Eisha FaisalJan 5, 2026
8 min read
A conceptual digital illustration of a central glowing geometric core connected by circuit lines to various broken or fragmented data dashboards and charts.

Growth & Measurement

CRM ROI: 5 Signs Your Client’s CRM is Killing Your Lead Gen

You can build a brilliant ad campaign, but a messy CRM will make your results look like a failure. You aren’t just sending traffic. You are throwing high-quality leads into a digital black hole. This is the fastest way to kill your CRM ROI and lose the contract. Ad agencies usually blame the creativ

Eisha FaisalFeb 12, 2026
4 min read
Loading page