Skip to content
technical-depthwordpressmigrationnextjstechnical-depth

Why Mid-Market Companies Keep Getting Stuck on WordPress

Mid-market B2B sites that grew up on WordPress hit a ceiling around 50 pages and 14 plugins. Here is what fails and why a Next.js rebuild fixes it.

rj-murray, Contributor · April 25, 2026 · 12 min read

WordPress plugin bloat illustration

title: "Why Mid-Market Companies Keep Getting Stuck on WordPress" slug: why-mid-market-companies-keep-getting-stuck-on-wordpress description: "Mid-market B2B sites that grew up on WordPress hit a ceiling around 50 pages and 14 plugins. Here is what fails and why a Next.js rebuild fixes it." pillar: technical-depth author: rj-murray publishedAt: "2026-04-25T00:00:00Z" tags: ["wordpress", "migration", "nextjs", "technical-depth"] coverImage: /posts/why-mid-market-companies-keep-getting-stuck-on-wordpress/cover.png coverAlt: "WordPress plugin bloat illustration" featured: false faq:

  • q: "What counts as the WordPress mid-market ceiling?" a: "Around 50 marketing pages, 14 active plugins, and a Core Web Vitals score under 50 on mobile. At that point patching is more expensive than rebuilding, because every new plugin or theme update destabilizes the previous fix."
  • q: "How long does a mid-market WordPress migration take?" a: "Our rebuilds run 14 to 26 days from deposit to launch on Next.js 16. A traditional plugin-audit-and-rebuild on the same WordPress instance typically runs four to six months because every plugin removal needs regression testing across themes, page builders, and the visual editor."
  • q: "When should we keep WordPress instead of migrating?" a: "Keep WordPress when the editorial team writes more than ten posts per week and refuses to leave Gutenberg, when WooCommerce is core to revenue, or when the membership and gated-content plugin stack is genuinely load-bearing. In those cases run headless WordPress with Next.js on the front end."
  • q: "Will an SEO migration from WordPress to Next.js cost rankings?" a: "Not if the redirect map covers every indexed URL, the on-page schema is preserved or improved, and the sitemap is resubmitted in Search Console on launch day. We have run six WordPress to Next.js migrations without a measurable rank drop on the priority terms."
  • q: "Does WordPress plugin bloat actually fail Core Web Vitals?" a: "Yes, and predictably. A 14-plugin stack typically ships 1.4 MB of render-blocking JavaScript before the hero image loads, which puts Largest Contentful Paint above 4 seconds on mid-tier mobile. Web.dev rates anything above 2.5 seconds as failing."

WordPress runs a real share of the open web because it is the easiest place to start a site. The problem is not the platform. The problem is what happens to a WordPress install when a 12-person mid-market team uses it for five years. Around 50 marketing pages, 14 active plugins, and a Core Web Vitals score under 50 on mobile, the site stops being maintainable. Patching costs more than rebuilding. We see this every week. Here is the actual failure mode, not the theory.

The mid-market WordPress ceiling, defined

The ceiling is not about traffic. It is about the rate of change. A mid-market B2B site that grew up on WordPress usually started as a five-page brochure on a starter theme. Then somebody wanted a contact form, so Contact Form 7 went in. Then a popup for the lead magnet, so OptinMonster went in. Then a page builder because the marketing manager could not edit the theme template, so Elementor went in. Then Yoast for SEO, then WP Rocket for caching, then a security plugin because Wordfence flagged a brute-force attempt, then a backup plugin, then a Cloudflare plugin, then a CDN plugin, then a related-posts plugin, then a custom-post-type plugin, then a schema plugin, then a redirect manager plugin.

That is the 14-plugin stack we see at every mid-market diagnostic call. None of those plugins are individually unreasonable. The aggregate is.

The ceiling shows up in three places at once. Page-load speed degrades to the point that organic rankings stall on commercial intent terms. Editorial velocity slows because every plugin update has a non-zero chance of breaking the visual editor. New service pages take two weeks to ship because the page builder fights the theme. The site is not broken. It is rate-limited.

For context on what mid-market is supposed to ship like, see the 48-hour before-after demo we run on prospect sites and our real Lighthouse scores across six recent rebuilds. The gap between the two states is what mid market wordpress migration work is actually solving.

How a 14-plugin stack fails Core Web Vitals

Core Web Vitals are not a vibe. They are three measured numbers (Largest Contentful Paint, Interaction to Next Paint, Cumulative Layout Shift) that Google reads from real Chrome users via the Chrome User Experience Report. The thresholds are documented at web.dev/articles/vitals. LCP under 2.5 seconds on mobile is the pass mark. INP under 200 ms. CLS under 0.1.

A 14-plugin WordPress stack fails LCP first. Every plugin loads its own CSS and JavaScript on every page unless somebody has manually configured asset rules per route, which almost no mid-market site has done. The plugin-bundled assets are render-blocking by default. We have measured one client install shipping 1.4 MB of JavaScript before the hero image started downloading. On a mid-tier Android device on 4G, that puts LCP at 4.2 seconds. That is not a Core Web Vitals failure. That is a Core Web Vitals catastrophe.

INP fails next. Page builders like Elementor and Divi attach event listeners to the document for animation, scroll triggers, and lazy-loaded blocks. Every interaction (click, tap, scroll) runs through that listener stack. On a complex page, INP measures past 400 ms. The user feels it as lag.

CLS is usually the easiest to fix on WordPress and the hardest to keep fixed. The fix is reserving image dimensions and font swap behavior. The reason it does not stay fixed is that every plugin update can re-inject a stylesheet or a font loader that breaks the reservation. A site that passed CLS in March can fail in April after a routine WP Rocket update. We have watched it happen on three client sites in a row.

The 2025 Core Web Vitals threshold updates made the mobile bar harder, not easier. INP replaced First Input Delay in March 2024 and the measurement window is longer, which makes long-running JavaScript more punishing. The wordpress plugin bloat problem got worse when the metric got stricter.

The editorial-team objection (and why headless WordPress sometimes wins)

Every WordPress migration conversation runs into the same blocker. The editorial team writes in Gutenberg. They like Gutenberg. They have built a workflow around the block editor, the revision history, the user roles, and the media library. Telling them to switch to a headless CMS that ships content via API to a Next.js front end is a fight you can lose even when you are right on the technical merits.

The honest read is that headless WordPress is sometimes the correct answer. WordPress as a publishing back end is genuinely good. The block editor at Gutenberg's core repo ships meaningful improvements every release. The user-permission model is mature. The media library handles attachments and alt text in a way that most modern CMSs do not.

What you do is keep WordPress on the back end and replace only the front end. WordPress runs on a subdomain (cms.client.com) with the REST API or WPGraphQL exposed. Next.js 16 sits on the public domain, fetches content at build time via Incremental Static Regeneration, and ships static HTML to Vercel's edge. The editorial team writes in Gutenberg. The front end does not load 14 plugins because the front end is not WordPress. Page-load speed is decoupled from plugin bloat.

This is the wordpress to nextjs migration path we recommend when the editorial workflow is genuinely entrenched. We documented the full pattern in the WordPress to Next.js migration path, including the redirect map, the canonical strategy, and the schema preservation rules. The cost is a slightly more complex deploy pipeline (CMS publishes trigger a Vercel rebuild via webhook). The win is that the editorial team keeps Gutenberg and the marketing site keeps Lighthouse 95.

The trade is real. If the editorial team is two people writing four posts a month, headless WordPress is overkill. Move them to MDX in the repo or Payload v3 on MongoDB Atlas. If the editorial team is twelve people writing forty posts a month, headless WordPress is the answer.

What we found rebuilding Burris and Sons (HVAC, 1917)

Burris and Sons has run HVAC in Chicago since 1917. They came to us with a 12-page WordPress site running on a base Astra theme with eleven active plugins, including Elementor, Yoast, WP Rocket, and a visual-form plugin nobody could remember installing. Lighthouse mobile was 38. Their Google Business Profile was outranking their own site for "Chicago HVAC repair" because the site was loading too slowly to compete.

We rebuilt the site as a 30-page Next.js 16 build in 21 days. Eight neighbourhood geo pages with genuinely distinct copy per neighbourhood (no template-fill, no doorway risk). Family photography preserved because the heritage look is an asset, not a liability. Staff bios moved over with tenure and trade-school detail. JSON-LD across LocalBusiness, Service, and FAQPage. Lighthouse mobile shipped at 98.

The thing nobody talks about with mid-market WordPress migrations is that the technical work is the easy part. The hard part is the data extraction. Burris had five years of contact-form submissions sitting in a plugin database table, customer testimonials embedded in page builder JSON we had to script-parse, and three different sets of staff photos at three different aspect ratios. The actual rebuild was 11 days. The data archaeology was 6. The redirect map and pre-launch QA was 4. That is the real shape of a 21-day rebuild, and we share the full breakdown in the Burris and Sons case study.

The geo pages matter for a separate reason. WordPress geo pages, when they exist at all, usually run through a city-name template plugin that auto-generates Plumber in {city_name} content. That is the doorway-pages pattern Google penalizes. On the rebuild we wrote each neighbourhood page as a real piece of content (specific buildings, specific weather patterns, specific code references). They rank because they deserve to rank.

What we found rebuilding Jetlak Foods (7 brands, 178 product pages)

Jetlak produces packaged foods under 7 brands sold across East Africa. Their pre-rebuild site was a single-page WordPress brochure on a free theme with WooCommerce installed but disabled. The previous agency had quoted them eight months and $90K to add 178 product pages on the same WordPress instance. The quote assumed building a custom post type, configuring ACF, theming the product template, writing 178 sets of copy by hand, and shipping the result through Yoast.

We rebuilt in 26 days for a fraction of that. 41 marketing pages plus 178 pSEO product pages generated across the brand-by-product axis. Each product page has unique copy and a single canonical product shot. We ran n-gram uniqueness checks in CI (minimum 40 percent differentiation per page) so doorway-pages risk was engineered out before launch. The full breakdown sits in the Jetlak case study, and the broader argument for what pSEO requires in 2026 is in pSEO in 2026, what changed.

The reason the rebuild was viable in 26 days and the WordPress version would have taken 8 months is that the data shape and the front end are decoupled. The product data lives in a structured source (in this case Payload v3 on MongoDB Atlas). The Next.js build reads the data at build time and generates static HTML for every product. Add a new brand, push the data, the next deploy ships the pages. There is no theme to fight, no plugin to configure, no visual editor to break.

Jetlak is the case study that closed our last three retainer deals. The dollar argument is simple. WordPress could not have shipped 178 product pages in 26 days. Next.js could.

The migration window: a 2-3 week rebuild beats a 6-month plugin audit

The default mid-market response to a slow WordPress site is to hire a consultant to audit the plugins. The audit produces a 40-page deck recommending plugin removals, asset deferral rules, image optimization, and database cleanup. The implementation runs three to six months because every plugin removal needs regression testing across themes, page builders, and the visual editor.

We have done this audit. We will not do it again. The math does not work.

A full mid-market WordPress audit costs $25K to $60K depending on plugin count. The implementation costs another $40K to $80K because the work is slow and risky. The result is a faster WordPress site that is still WordPress. Next year, when somebody installs a new plugin or the theme author pushes a major version, the gains erode.

A Next.js rebuild on the same site costs $35K to $60K (our Atlas tier) and ships in 14 to 26 days. The result is a site that does not have plugins, does not have a theme, and does not erode. The Lighthouse score is locked because the build output is static HTML that does not change between deploys.

The only honest reason to choose the audit over the rebuild is if the editorial team genuinely cannot leave WordPress and headless is off the table for cost reasons. That is rare. In every other case, the rebuild is faster, cheaper, and more durable.

This is part of why we argue paid search at mid-market scale is usually a tax on under-built organic. If the site cannot rank because Lighthouse is 38, paid search becomes the only channel that converts, which means the entire marketing budget routes through Google Ads. Fix the site and the budget rebalances. The full sequencing for that rebalance is in the 90-day organic growth plan.

When you should keep WordPress

There are real cases where the answer is to stay on WordPress. Not headless, not rebuild, just stay. We will say so when it is true.

Keep WordPress when WooCommerce is the revenue engine. Replacing WooCommerce with a headless commerce stack is a genuine project, and most mid-market B2B sites do not have the e-commerce volume to justify it. The plugin-bloat problem on a WooCommerce site is real but the migration cost is realer.

Keep WordPress when the membership stack is load-bearing. MemberPress, Restrict Content Pro, and LearnDash represent years of configured access rules, course content, and student records. Migrating off them is a six-figure project regardless of platform target.

Keep WordPress when the editorial team writes more than ten posts per week and Gutenberg is non-negotiable. Run headless if you can. If the team will not accept the latency between publish and front-end build, leave WordPress on the public domain and aggressively optimize asset loading. We have a separate post on the mid-market SEO reporting framework that covers how to measure whether the optimization is actually working.

Keep WordPress when the budget genuinely is not there. Lighthouse 60 on WordPress is better than Lighthouse 95 on a Next.js site you cannot afford to maintain. We are not in the business of selling rebuilds nobody needs.

The case for migration is when the site is in the ceiling we defined at the top: 50 pages, 14 plugins, Core Web Vitals under 50 mobile, editorial velocity slowing. That site is not going to be saved by an audit. It is going to be saved by a rebuild.

Closing

Mid market wordpress migration is a category we run twenty to thirty of every quarter. The pattern repeats. A mid-market B2B site grew up on WordPress, hit the ceiling, tried to fix it with caching plugins, and is now ranking below sites that should not outrank them. The rebuild costs less than the next twelve months of paid search the slow site will need to fake organic performance. The rebuild ships in 14 to 26 days. The result holds because the architecture does not have plugin entropy.

If you want to see what your current site looks like rebuilt, we run a 48-hour before-after demo on prospect sites at no cost. The output is a real Next.js build of your homepage with measured Lighthouse, deployed to a preview URL. You see the delta before you decide. The faster path is book a call from the contact page and we run the demo this week.

For the technical reader, our full migration playbook lives at WordPress to Next.js migration path, the AEO and LLM-citation extension is in AEO across ChatGPT, Perplexity, Claude, and Gemini, and the llms.txt file post covers the answer-engine surface specifically. For pricing, see the Atlas tier.

The site is the resume. If your WordPress install is the ceiling we just described, the resume is failing in front of every prospect that lands on it. That is the entire argument.

RJ

Frequently asked

What counts as the WordPress mid-market ceiling?
Around 50 marketing pages, 14 active plugins, and a Core Web Vitals score under 50 on mobile. At that point patching is more expensive than rebuilding, because every new plugin or theme update destabilizes the previous fix.
How long does a mid-market WordPress migration take?
Our rebuilds run 14 to 26 days from deposit to launch on Next.js 16. A traditional plugin-audit-and-rebuild on the same WordPress instance typically runs four to six months because every plugin removal needs regression testing across themes, page builders, and the visual editor.
When should we keep WordPress instead of migrating?
Keep WordPress when the editorial team writes more than ten posts per week and refuses to leave Gutenberg, when WooCommerce is core to revenue, or when the membership and gated-content plugin stack is genuinely load-bearing. In those cases run headless WordPress with Next.js on the front end.
Will an SEO migration from WordPress to Next.js cost rankings?
Not if the redirect map covers every indexed URL, the on-page schema is preserved or improved, and the sitemap is resubmitted in Search Console on launch day. We have run six WordPress to Next.js migrations without a measurable rank drop on the priority terms.
Does WordPress plugin bloat actually fail Core Web Vitals?
Yes, and predictably. A 14-plugin stack typically ships 1.4 MB of render-blocking JavaScript before the hero image loads, which puts Largest Contentful Paint above 4 seconds on mid-tier mobile. Web.dev rates anything above 2.5 seconds as failing.

Want your site to read like this does?

We use analytics to understand which pages help, with PII redacted and session inputs masked. Your form submissions always reach us regardless of this choice.