← All posts Business & Operations 10 min read

5 Things Your WooCommerce Agency Never Told You

Quick Summary 5 Things Your WooCommerce Agency Never Told You Most WooCommerce agencies optimise for project completion, not long-term store health — five common practices make stores progressively harder and more expensive to maintain after handover. Plugin sprawl is the number one hidden cost: two 2026 surveys of live stores put the average at 30–58…

WooCommerce agency handoff: plugin sprawl, template overrides, and hosting worker limits
Quick Summary

5 Things Your WooCommerce Agency Never Told You

  • Most WooCommerce agencies optimise for project completion, not long-term store health — five common practices make stores progressively harder and more expensive to maintain after handover.
  • Plugin sprawl is the number one hidden cost: two 2026 surveys of live stores put the average at 30–58 active plugins, and the count climbs with revenue rather than levelling off.
  • Hardcoded child-theme template overrides silently desync from WooCommerce core on any release, not just major ones — WooCommerce’s own System Status page lists them, unread, on most stores.
  • The hosting tier most agencies quote is sized for the demo, not the checkout: a store’s cheapest PHP-worker allocation caps how many customers can check out at the same second, no matter how good the code is.
30–58
Average active plugins on a live WooCommerce store, per two independent 2026 surveys (Studio Wombat and Metorik)
1 year+
How long WooCommerce keeps a deprecated hook working — a guarantee that does not extend to copied-and-edited template files
2 workers
PHP-FPM threads on Kinsta’s cheapest single-site plan — the ceiling on simultaneous checkouts, independent of code quality
EOL 2022
PHP 7.4 stopped receiving security patches in November 2022 — 12% of stores in Metorik’s 2026 sample still run it

This is not an anti-agency post. Good WooCommerce agencies do excellent work. But the agency model has structural incentives that do not always align with your interests as a store owner — and understanding them helps you ask better questions and make better decisions when you hire.

Contents

Thing 1: Your Plugin Count is a Ticking Clock

Every plugin you add is a dependency. Each one has its own update schedule, its own potential conflicts with other plugins, and its own performance overhead. A store with 50 plugins is not twice as complex as a store with 25 — it is exponentially more fragile. When an update breaks something (and it will), diagnosing which plugin interaction caused it takes hours. Agencies bill for those hours. The incentive to reduce plugins does not always exist.

Two independent 2026 surveys of live WooCommerce stores put a number on this. Metorik’s analysis of 6,000+ stores found an average of 58 active plugins, climbing from 51 on stores under $50k in 2025 revenue to 66 on stores over $1m — one store in the sample ran 237. Studio Wombat’s separate survey of 5,000 stores found a lower average of 30 (21 free, 7 paid, 2 other). The two numbers disagree on methodology, not on direction: plugin count rises with store size in both datasets, because each new capability — subscriptions, loyalty points, freight quoting — usually arrives as another plugin rather than a replacement for one already installed.

The same Metorik sample found 12% of stores still running PHP 7.4, which stopped receiving security patches in November 2022. You can check your own count right now without asking the agency: Tools → Site Health → Info → WordPress lists every active plugin on your install.

Thing 2: Child Theme Customisations Are Technical Debt by Design

When an agency adds custom functionality by copying a WooCommerce template file into a child theme and editing it, they are creating code that WooCommerce’s own compatibility promise does not cover. WooCommerce’s deprecation policy protects hooks and filters deliberately: a deprecated function keeps working, with a warning notice, for “usually over a year or several major releases” before removal. A template file you copied and edited gets no such promise — the moment WooCommerce ships a new version of that file (in a minor release, not only a major one), your copy silently stops receiving the fix, feature, or security patch that shipped with it, and nothing tells you unless you go looking.

WooCommerce does tell you, if you check: WooCommerce → Status → System Status lists every template your theme has overridden, flags the ones whose version number no longer matches core, and names the file and path. Few site owners have ever opened that page. A properly namespaced plugin using hooks and filters — the pattern WooCommerce’s own developer documentation recommends — avoids the problem entirely, but it takes longer to build and the client usually cannot tell the difference at launch. Cart and checkout customisations are the highest-stakes version of this trade-off; migrating off the classic shortcode-based cart and checkout is exactly this kind of deadline, and a copied template is exactly the mechanism that breaks silently when it lands.

Thing 3: Page Speed Scores Are Vanity Metrics in the Wrong Context

A 90+ PageSpeed score in a staging environment with no products, no logged-in users, and no cart activity tells you almost nothing about how your store performs under real load. Google’s own Core Web Vitals — LCP, CLS, and INP — are measured at the 75th percentile of real user visits, not a single lab run against an empty homepage. Many agencies deliver stunning PageSpeed scores on launch day by testing the one page type that never gets slow: the static homepage.

Test a product page with items already in the cart, or the checkout page itself, and the number usually drops — because, as the next section covers, those pages cannot be served from cache the way the homepage can. Six months later, with 5,000 products and real traffic, the store is slow and the agency is gone.

Thing 4: The Hosting Tier Was Sized for the Demo, Not the Checkout

Most agencies quote hosting by storage and bandwidth. The number that actually determines whether your store falls over under load is the PHP worker count — the number of PHP requests the server can process at the exact same instant. Kinsta’s own documentation puts its cheapest single-site plan at 2 PHP threads, rising to 4 on the next tier and up to 16 on its most expensive single-site offering; other managed hosts publish comparable entry-level numbers.

Every worker slot is occupied for the full duration of one request. A tenth visitor arriving while all workers are busy does not get a slower response — it queues, and if no worker frees up within roughly 60 seconds, it fails outright with a gateway timeout.

The part agencies rarely explain: this ceiling has nothing to do with total site traffic, because most of your traffic never touches a worker. WooCommerce’s own developer documentation is explicit that cart, checkout, and my-account pages “need to stay dynamic since they display information specific to the current customer and their cart” — they are excluded from full-page caching by design, on every caching plugin WooCommerce documents. A product listing page can serve thousands of concurrent visitors from a cache with zero PHP workers touched.

A checkout page cannot. So the number that matters is not “how many visitors can this hosting handle” — it is “how many people can be paying at the same second,” and that number is set by the cheapest line item on the hosting quote, not by how well the store is built.

What happens when checkout requests exceed available PHP workersA two-worker hosting plan has both workers busy with a checkout and an add-to-cart request. A third shopper’s checkout request queues because no worker is free. If a worker frees within about sixty seconds the queued request succeeds, delayed. If not, it fails with a 504 gateway timeout.Checkout at the PHP worker limitTwo workers, three simultaneous requests — Kinsta’s cheapest single-site planPHP-FPM worker pool — 2 workersWorker 1: processing checkoutWorker 2: processing add-to-cartRequest 3: another checkoutQueued — no worker freeWorker frees within 60sSucceeds, delayedStill queued at 60s504 Gateway TimeoutStatic pages served from cache never touch a worker — cart, checkout and account pages always do.

Thing 5: You May Not Actually Own Your Plugin Licences or Your Hosting Account

Premium WooCommerce plugins — payment gateways, subscriptions, freight calculators — sell through a licence key tied to one account, and that key is what unlocks automatic updates and direct vendor support. Some agencies purchase and register these under the agency’s own account rather than the client’s, sometimes bundled into an agency-wide membership that covers many client sites at once. It is faster to set up and easier for the agency to manage across a book of clients. The trade-off, documented plainly by WordPress licensing guides written for agencies themselves: because the software is licensed under the agency’s name, the client cannot get direct support from the plugin developer, and if the agency relationship ends, the agency is left choosing between continuing to renew a licence for a client who no longer pays them or telling that client the licensed software is being taken away.

The same pattern shows up one layer down, in who holds the hosting account and the domain registrar login. None of this is illegal or even unusual — it is a reasonable default when nobody asks for anything different. It just means the honest question to ask before signing is not “what does this cost,” but “if I walked away tomorrow, what would I be able to take with me.”

Ask these questions before hiringSix questions that separate good agencies from the rest:

1. How do you handle WooCommerce updates — do you test on staging, and can I see your System Status page’s outdated-templates list? 2. What is your policy on plugin selection — do you build custom or install plugins, and roughly how many are active on my site today? 3. Whose account are my premium plugin licences registered under — mine or yours? 4. Who owns the hosting account and the domain registrar login? 5. What PHP worker count does my hosting plan include, and what happens to checkout when it’s exceeded? 6. Can you show me a current client whose store has been running for 3+ years without a major rewrite?

None of this is an argument against hiring help — it is an argument for hiring help that shows its work and hands you the keys. The same “who owns what, and what happens if you don’t own it” question applies just as directly to whoever eventually connects this store to inventory, accounting, or fulfilment systems, and the parallel checklist for choosing an integration partner and the honest accounting in the real cost of a bad implementation cover it from that side. When that overlap is closer to home, see the integration and implementation work we do.

Sources & Further Reading

References

  1. WooCommerce Extension Development Best PracticesWooCommerce Developers — hooks and filters over template overrides for customisations.
  2. Core Web VitalsGoogle Web.dev — the real performance metrics measured at the 75th percentile of real visits.
  3. Deprecation in CoreWooCommerce Developers — the “a year or several major releases” backward-compatibility promise for deprecated hooks.
  4. Fixing Outdated WooCommerce TemplatesWooCommerce Developers — how to read the System Status outdated-templates list.
  5. Configuring Caching PluginsWooCommerce Developers — why cart, checkout, and my-account pages stay dynamic and uncached.
  6. PHP Workers, ExplainedKinsta — documented PHP thread counts by plan tier and what happens when they’re exceeded.
  7. WooCommerce Plugin Statistics 2026Metorik — average active plugin count across 6,000+ live stores, by revenue tier.
  8. Plugin Insights 2026Studio Wombat — a second, independent plugin-count survey across 5,000 stores.
  9. Can Clients Use My Plugin & Theme Licenses?The Admin Bar — the support-access and continuity risk of agency-held plugin licences.

Frequently asked questions

Why is plugin count a hidden cost?

Every plugin is an update, a compatibility risk and a potential vulnerability, and the count compounds maintenance cost over time. You can check your own site’s count without asking the agency: Tools → Site Health → Info → WordPress lists every active plugin.

Will updating WooCommerce break my child-theme customisations?

Hooks and filters are protected by WooCommerce’s own deprecation policy for a year or more; copied-and-edited template files are not covered by that promise and can go stale on any release, not just a major one. Check WooCommerce → Status → System Status for a list of your overridden templates and whether they’re current.

Are page speed scores meaningful?

Only in context. A 90+ score on an empty staging homepage says nothing about checkout performance — test a product page with items in the cart or the checkout page itself, since those pages are never served from cache.

How many PHP workers does my WooCommerce store need?

Kinsta’s own documentation puts its cheapest single-site plan at 2 threads and its next tier at 4; other managed hosts publish comparable entry-level numbers. Each worker handles one request at a time, and cart, checkout, and account pages always need one because WooCommerce excludes them from page caching.

Who should own my plugin licences — me or my agency?

For anything critical to checkout or payments, ask for the licence in your own account. An agency-held licence means you cannot get direct vendor support, and if the relationship ends, continued updates depend on the agency continuing to renew a licence for a client who may no longer be paying them.

Related guides

Discussion

Leave a Reply

Your email address will not be published. Required fields are marked *


Ship it

Need this in your stack?

We build, integrate, and ship — no calls, just delivery.

Start a project →