ezomfy
All posts
June 21, 20265 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

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 this is 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.

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.