ezomfy
All posts
June 21, 20266 min read

Your Shopify store has a script budget and you are over it

Nobody decides to make their store slow. It happens one reasonable app at a time. Set the budget, run the audit, and get paid for it in returned subscriptions.

A

Ashraful

Shopify Select Partner

Close-up of financial documents, credit cards, coins, and a pen on a wooden desk. — Photo by Atlantic Ambience on Pexels

Short answer: set a limit before anyone asks to add something. A workable starting point for a Shopify store is no more than 8 third-party domains on any page, under 300KB of third-party JavaScript on the product page, and Core Web Vitals inside Google's thresholds. The stores we audit typically run 15 to 25 domains. Auditing and removing what you do not use is the only performance work that reduces a bill instead of adding to one.

Nobody decides to make their store slow. It happens one reasonable decision at a time.

Marketing wants a heatmap tool for a month. Someone adds a chat widget. A review app goes in. A popup for the seasonal campaign. Each one is defensible on its own, each one is 40 to 200KB of JavaScript, and nobody ever removes any of them.

Two years later the store loads 22 third party domains and everyone is surprised it feels sluggish.

The fix is not a speed app. It is deciding, in advance, how much you are willing to spend, and treating it like any other budget.

Set the number first

A performance budget is a limit you agree before anyone asks to add something. It converts an argument about opinions into an arithmetic question.

A workable starting point for a Shopify store:

  • No more than 8 third party domains on any page
  • Under 300KB of third party JavaScript on the product page
  • LCP under 2.5 seconds on mobile, on a throttled connection
  • CLS under 0.1
  • INP under 200 milliseconds

The exact numbers matter less than having them. The point is that when someone proposes a new tool, the question stops being "does this seem useful" and becomes "we are at 7 domains, which one comes out."

Find out where you are

Open a product page, view source, and count unique third party domains in the head. Or in DevTools, Network tab, filter to JS, sort by size, and look at what is not yours.

The stores we audit typically run 15 to 25 domains. Here is what that usually breaks down to, and what each is actually worth.

Analytics: GA4, plus a tag manager. Keep. This is how you know anything. But the tag manager is a container, and containers accumulate.

Reviews. Keep if you display reviews and they influence purchase, which they usually do. Check whether the script loads on every page or only where reviews appear. Very often it is everywhere.

Chat widget. Genuinely useful on a store with a support burden. Frequently dead weight on a store where nobody chats. Look at your actual conversation volume for the last 90 days before defending it.

Popup or email capture. Often the heaviest script on the page for the smallest return. Look at real signup numbers, not the app's dashboard percentage.

Heatmaps or session recording. These are research tools. Install, gather a few weeks of data, act on it, remove. Leaving one running permanently is paying a performance tax for data nobody opens.

Trust badges, currency converters, countdown timers. Almost always removable. Trust badges are usually an image. Currency conversion is native to Shopify Markets. A countdown timer that loads a library to count down is not a good trade.

Anything with "speed" or "optimise" in the name. Loading a script to make your store faster is a contradiction worth examining. Test with it off before assuming it helps.

The audit that pays for itself

An hour, and it usually returns money as well as speed.

  1. List every installed app and every tag in your tag manager.
  2. For each, write down what would visibly break if it were gone tomorrow.
  3. For anything you cannot answer, that is your answer.
  4. Remove them in a batch, then measure.

We routinely remove six to eight apps in this pass. The most common reaction from the owner is that they had forgotten it was installed. Typical outcome: 15 to 30 Lighthouse points on mobile and $60 to $200 a month back in subscriptions that were making the store worse.

The money part matters. This is one of very few optimisations that pays you rather than costing you.

Make the survivors cheaper

Some scripts have to stay. You can still reduce what they cost.

Load them where they are needed. A review script belongs on product and collection pages, not on your policy pages or your blog. Most tag managers can scope a tag to a page type in about a minute, and almost nobody does it.

Defer anything that does not need to run before paint. Analytics, chat, and most marketing pixels do not. Adding defer lets the page render first.

Do this per script, not with a blanket rule. Deferring a script another one depends on breaks things quietly, and you find out from a gap in your conversion data a month later. This precision is exactly what an app applying one rule to everything cannot give you.

Use Shopify's own hooks where they exist. Customer Events, formerly Web Pixels, runs marketing pixels in a sandbox off the main thread instead of injecting a script tag into your theme. If your pixel supports it, that is meaningfully cheaper.

Prefer theme app extensions. Modern Shopify apps can install through Shopify's own infrastructure rather than dropping script tags into your theme. If an app you rely on offers this, switch to it, and check for it when choosing between two apps that do the same job.

Keep it from creeping back

The audit is easy. Staying under budget is the hard part, because it is organisational rather than technical.

One person signs off on new scripts. Not to say no, to ask what comes out.

Everything trialled gets an expiry date. Heatmaps, session recording, campaign pixels. Put a date in the calendar when you install it.

Re-run the count quarterly. Fifteen minutes. Count the domains, compare to the budget, remove what has crept in.

Check the tag manager when campaigns end. This is where dead pixels live longest, because the campaign ends and nobody thinks about the tag.

Why is a script budget worth the effort?

Third party scripts are the largest controllable slice of load time on most Shopify stores, and unlike your theme they are entirely your decision.

You cannot make Shopify's checkout faster. You cannot rewrite how the CDN works. You can decide that 22 third party domains is too many, and that decision is free.

It is also the only performance work that reduces a bill instead of adding to one.


We run this audit as part of Shopify speed work, quoted fixed price with a Lighthouse 90+ guarantee and a 14 day re-test. It removes more than it adds.

The free store audit counts what your store is actually loading and reports what each item is costing you. Or book a 30 minute call and bring your app list; we will go through it with you. Related: the four fixes that actually move Shopify speed and why speed apps rarely help.

Frequently asked questions

How many third-party scripts is too many on a Shopify store?

More than about 8 domains on a page is worth questioning. Stores we audit typically run 15 to 25. Each one is a DNS lookup, a TLS handshake and usually a blocking request that happens before your product image starts downloading.

What is a performance budget?

A limit you agree before anyone asks to add something, which turns an argument about opinions into arithmetic. When someone proposes a new tool the question stops being does this seem useful and becomes we are at 7 domains, which one comes out.

Which Shopify apps should I remove first?

Anything you cannot say would visibly break if it were gone. In practice: popup apps, review apps whose widget you removed from the theme but whose script still loads everywhere, trust badges, currency converters that only rewrite text, and heatmap tools left running after the research finished.

How do I make the scripts I keep cheaper?

Scope them to the pages that need them, which most tag managers do in about a minute and almost nobody does. Defer anything that does not need to run before paint, per script rather than with a blanket rule. And prefer Customer Events or theme app extensions over injected script tags.

How often should I re-audit?

Quarterly, and it takes fifteen minutes: count the domains, compare to the budget, remove what has crept in. Also check the tag manager whenever a campaign ends, because that is where dead pixels live longest.

A

About the author

Ashraful

Shopify Select Partner, Top Rated Plus on Upwork. 700+ Shopify projects shipped over 7+ years: themes, apps, migrations, speed, Hydrogen. Solo shop, no agency middlemen.

Read the full story

Working on a Shopify project?

That's what I do every day. Pick whichever feels lower-friction.